mysql-多实例
一、MySQL 多实例
1、简介
什么使多实例呢?
多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307);
运行多个MySQL服务进程,这些进程通过不同的socket监听不同的服务端口来提供各自的服务。
MySQL多实例共用一个 MySQL 的安装程序,使用不同(也可相同)的 my.cnf 配置文件,启动程序和数据文件。
在提供服务时,多实例 MySQL 在逻辑上是各自独立的,多个实例的本身是根据配置文件对应的设定值,来获得服务器的相关硬件资源多少。
2、安装配置前操作
安装配置前的一些配置少不了
文件的目录最好也规矩,这样才专业
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | /data/ops/app/mysql-5 .6.23/ ###mysql的安装路径 mkdir /data/ops/app/mysql-5 .6.23/{3306,3307} vim /data/ops/app/mysql-5 .6.23 /etc/3306 .cnf [client] character- set -server = utf8 [mysql] character- set -server = utf8 [mysqld] #bind-address=127.0.0.1 character- set -server = utf8 datadir= /data/ops/app/mysql-5 .6.23 /3306 socket= /data/ops/app/mysql-5 .6.23 /3306/3306 .sock user=mysql skip-grant-tables symbolic-links=0 skip-name-resolve #init-connect='insert into accesslog.accesslog(id, time, localname, matchname) values(connection_id(), now(), user(),current_user());' slow_query_log = 1 long_query_time = 4 #slow-query-log-file = /data/ops/app/mysql-5.6.23/logs/3306/3306_slow.log log-queries-not-using-indexes = false lower- case -table-names = 1 server- id = 1 max_connections =5000 max_allowed_packet = 16M connect_timeout = 60 log-slave-updates log-bin = 3306-bin expire_logs_days = 7 slave-skip-errors = 1062 #binlog_do_db = back_log = 200 max_connect_errors = 10 table_open_cache = 10240 binlog_cache_size = 1M max_heap_table_size = 64M sort_buffer_size = 4M join_buffer_size = 4M thread_cache_size = 8 thread_concurrency = 8 query_cache_size = 512M query_cache_limit = 2M ft_min_word_len = 4 thread_stack = 192K transaction_isolation = REPEATABLE-READ tmp_table_size = 64M binlog_format = mixed log-short- format key_buffer_size = 512M read_buffer_size = 16M read_rnd_buffer_size = 16M bulk_insert_buffer_size = 64M innodb_file_per_table innodb_additional_mem_pool_size = 100M innodb_buffer_pool_size = 1G innodb_data_file_path = ibdata1:12M;ibdata2:12M:autoextend innodb_file_io_threads = 4 innodb_thread_concurrency = 8 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 8M innodb_log_file_size = 256M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 90 innodb_lock_wait_timeout = 120 slave-skip-errors = 1062 [mysqld_safe] log-error= /data/ops/app/mysql-5 .6.23 /logs/3306/3306 .log pid- file = /data/ops/app/mysql-5 .6.23 /3306/3306 .pid |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | vim /data/ops/app/mysql-5 .6.23 /etc/3307 .cnf ### 配置文件 [client] character- set -server = utf8 [mysql] character- set -server = utf8 [mysqld] #bind-address=127.0.0.1 character- set -server = utf8 datadir= /data/ops/app/mysql-5 .6.23 /3307 socket= /data/ops/app/mysql-5 .6.23 /3307/3307 .sock user=mysql skip-grant-tables symbolic-links=0 skip-name-resolve #init-connect='insert into accesslog.accesslog(id, time, localname, matchname) values(connection_id(), now(), user(),current_user());' slow_query_log = 1 long_query_time = 4 slow-query-log- file = /data/ops/app/mysql-5 .6.23 /logs/3307/3307_slow .log log-queries-not-using-indexes = false lower- case -table-names = 1 server- id = 1 max_connections =5000 max_allowed_packet = 16M connect_timeout = 60 log-slave-updates log-bin = 3307-bin expire_logs_days = 7 slave-skip-errors = 1062 #binlog_do_db = back_log = 200 max_connect_errors = 10 table_open_cache = 10240 binlog_cache_size = 1M max_heap_table_size = 64M sort_buffer_size = 4M join_buffer_size = 4M thread_cache_size = 8 thread_concurrency = 8 query_cache_size = 512M query_cache_limit = 2M ft_min_word_len = 4 thread_stack = 192K transaction_isolation = REPEATABLE-READ tmp_table_size = 64M binlog_format = mixed log-short- format key_buffer_size = 512M read_buffer_size = 16M read_rnd_buffer_size = 16M bulk_insert_buffer_size = 64M innodb_file_per_table innodb_additional_mem_pool_size = 100M innodb_buffer_pool_size = 1G innodb_data_file_path = ibdata1:12M;ibdata2:12M:autoextend innodb_file_io_threads = 4 innodb_thread_concurrency = 8 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 8M innodb_log_file_size = 256M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 90 innodb_lock_wait_timeout = 120 slave-skip-errors = 1062 [mysqld_safe] log-error= /data/ops/app/mysql-5 .6.23 /logs/3307/3307 .log pid- file = /data/ops/app/mysql-5 .6.23 /3307/3307 .pid |
###创建初始化脚本以及启动文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | vim /data/ops/app/mysql-5 .6.23 /scripts/init/3306 .sh #/bin/bash # 3306.sh can create a 3306 instance # create directories if [ ! -d '/data/ops/app/mysql-5.6.23/3306' ]; then mkdir -p '/data/ops/app/mysql-5.6.23/3306' ; fi if [ ! -d '/data/ops/app/mysql-5.6.23/logs/3306' ]; then mkdir -p '/data/ops/app/mysql-5.6.23/logs/3306' ; fi # set env conf= "/data/ops/app/mysql-5.6.23/etc/3306.cnf" basedir= "/data/ops/app/mysql-5.6.23" datadir= "/data/ops/app/mysql-5.6.23/3306" pid= "/data/ops/app/mysql-5.6.23/3306/3306.pid" sock= "/data/ops/app/mysql-5.6.23/3306/3306.sock" port= '3000' user= 'mysql' # create instance #/data/ops/app/mysql-5.6.23/scripts/mysql_install_db --user=$user --basedir=$basedir --datadir=$datadir # boot instance /data/ops/app/mysql-5 .6.23 /bin/mysqld_safe --defaults- file =$conf --user=$user --basedir=$basedir --datadir=$datadir --port=$port --pid- file =$pid --socket=$sock & |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | vim /data/ops/app/mysql-5 .6.23 /scripts/init/3307 .sh #/bin/bash # 3307.sh can create a 3307 instance # create directories if [ ! -d '/data/ops/app/mysql-5.6.23/3307' ]; then mkdir -p '/data/ops/app/mysql-5.6.23/3307' ; fi if [ ! -d '/data/ops/app/mysql-5.6.23/logs/3307' ]; then mkdir -p '/data/ops/app/mysql-5.6.23/logs/3307' ; fi # set env conf= "/data/ops/app/mysql-5.6.23/etc/3307.cnf" basedir= "/data/ops/app/mysql-5.6.23" datadir= "/data/ops/app/mysql-5.6.23/3307" pid= "/data/ops/app/mysql-5.6.23/3307/3307.pid" sock= "/data/ops/app/mysql-5.6.23/3307/3307.sock" port= '3002' user= 'mysql' # create instance #/data/ops/app/mysql-5.6.23/scripts/mysql_install_db --user=$user --basedir=$basedir --datadir=$datadir # boot instance /data/ops/app/mysql-5 .6.23 /bin/mysqld_safe --defaults- file =$conf --user=$user --basedir=$basedir --datadir=$datadir --port=$port --pid- file =$pid --socket=$sock & |
#####注意初始化脚本完毕以后mysql才能启动
su --shell=/bin/bash mysql -c "/data/ops/app/mysql-5.6.23/scripts/init/3306.sh" ###启动脚本 可以放在/etc/rc.local下 开机自启
su --shell=/bin/bash mysql -c "/data/ops/app/mysql-5.6.23/scripts/init/3307.sh"
####mysql关闭
killall mysqld 不建议这样操作
mysqladmin -u mysql -P 3002 -S /data/ops/app/mysql-5.6.23/3307/3307.sock shutdown ###建议这样关闭数据库
增加一个mysql实例
问题又来了,要增加一个实例怎么弄呢?
其实不难,只需按上面步骤,创建目录,在修改相应配置文件,初始化就ok
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构