设为首页 收藏本站
查看: 516|回复: 0

[经验分享] MySQL管理多个实例的方法

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-9-27 06:49:43 | 显示全部楼层 |阅读模式
  MySQL运行多实例有2种方法,第一种是使用多个配置文件启动不同的进程来实现多实例;第二种是通过mysqld_multi使用单独的配置文件来实现多实例
  环境准备:

  操作系统:Red Hat Enterprise Linux Server>  MySQL版本:mysql-5.6.22-linux-glibc2.5-x86_64
  要运行多实例,首先安装MySQL软件,安装方法参考之前的博文:MySQL安装,安装好MySQL软件之后,下面分别创建端口分别为3306,3307,3308,3309的多实例,无论使用哪种方式来管理多实例,都是需要初始化多个数据库的
  一、使用多个配置文件来管理多实例
  1、创建各实例的配置文件
  # mkdir /data/mysql/conf/ -p
  # cd /data/mysql/conf/
  # vim my_3306.cnf
[client]  
port            = 3306
  
socket          = /tmp/mysql_3306.sock
  

  
[mysql]
  
prompt="\\u@\\h:\p  \\R:\\m:\\s [\\d]>"
  
#tee=/data/mysql/mysql_3306/query.log
  
no-auto-rehash
  

  

  
[mysqld]
  
#misc
  
user = mysql
  
basedir = /usr/local/mysql
  
datadir = /data/mysql/mysql_3306
  
port = 3306
  
socket = /tmp/mysql_3306.sock
  
event_scheduler = 0
  

  
#timeout
  
interactive_timeout = 300
  
wait_timeout = 300
  

  
#character set
  
character-set-server = utf8
  

  
open_files_limit = 65535
  
max_connections = 100
  
max_connect_errors = 100000
  

  
skip-name-resolve = 1
  
#logs
  
log-output=file
  
slow_query_log = 1
  
slow_query_log_file = slow.log
  
log-error = error.log
  
log_warnings = 2
  
pid-file = mysql.pid
  
long_query_time = 1
  
#log-slow-admin-statements = 1
  
#log-queries-not-using-indexes = 1
  
log-slow-slave-statements = 1
  

  

  
#binlog
  
binlog_format = row
  
server-id = 883306
  
log-bin =mysql-bin
  
binlog_cache_size = 4M
  
max_binlog_size = 1G
  
max_binlog_cache_size = 2G
  
sync_binlog = 0
  
expire_logs_days = 10
  

  
#relay log
  
skip_slave_start = 1
  
max_relay_log_size = 1G
  
relay_log_purge = 1
  
relay_log_recovery = 1
  
log_slave_updates
  
#slave-skip-errors=1032,1053,1062
  

  
explicit_defaults_for_timestamp=true
  
#buffers & cache
  
table_open_cache = 2048
  
table_definition_cache = 2048
  
table_open_cache = 2048
  
max_heap_table_size = 96M
  
sort_buffer_size = 2M
  
join_buffer_size = 2M
  
thread_cache_size = 256
  
query_cache_size = 0
  
query_cache_type = 0
  
query_cache_limit = 256K
  
query_cache_min_res_unit = 512
  
thread_stack = 192K
  
tmp_table_size = 96M
  
key_buffer_size = 8M
  
read_buffer_size = 2M
  
read_rnd_buffer_size = 16M
  
bulk_insert_buffer_size = 32M
  

  
#myisam
  
myisam_sort_buffer_size = 128M
  
#myisam_max_sort_file_size = 10G
  
myisam_max_sort_file_size = 100M
  

  
myisam_repair_threads = 1
  

  
#innodb
  
innodb_buffer_pool_size = 100M
  
innodb_buffer_pool_instances = 1
  
innodb_data_file_path = ibdata1:1G:autoextend
  
innodb_flush_log_at_trx_commit = 2
  
innodb_log_buffer_size = 64M
  
innodb_log_file_size = 500M
  
innodb_log_files_in_group = 3
  
innodb_max_dirty_pages_pct = 50
  
innodb_file_per_table = 1
  
innodb_rollback_on_timeout
  
innodb_status_file = 1
  
innodb_io_capacity = 2000
  
transaction_isolation = READ-COMMITTED
  
innodb_flush_method = O_DIRECT
  端口3307,3308,3309的MySQL实例的配置文件和端口3306的配置文件相似,只需要替换端口即可
  # cp  my_3306.cnf  my_3307.cnf
  # cp  my_3306.cnf  my_3308.cnf
  # cp  my_3306.cnf  my_3309.cnf
  # sed  -i  's/3306/3307/g'  my_3307.cnf
  # sed  -i  's/3306/3308/g'  my_3308.cnf
  # sed  -i  's/3306/3309/g'  my_3309.cnf
  # chown mysq.mysql /data/mysql/conf -R
  2、初始化数据库
  # cd /usr/local/mysql
  # ./scripts/mysql_install_db --user=mysql --defaults-file=/data/mysql/conf/my_3306.cn  --datadir=/data/mysql/mysql_3306/
  # ./scripts/mysql_install_db --user=mysql --defaults-file=/data/mysql/conf/my_3307.cn  --datadir=/data/mysql/mysql_3307/
  # ./scripts/mysql_install_db --user=mysql --defaults-file=/data/mysql/conf/my_3308.cn  --datadir=/data/mysql/mysql_3308/
  # ./scripts/mysql_install_db --user=mysql --defaults-file=/data/mysql/conf/my_3309.cn  --datadir=/data/mysql/mysql_3309/
  3、启动数据库
  # mysqld_safe --defaults-file=/data/mysql/conf/my_3306.cnf &
  # mysqld_safe --defaults-file=/data/mysql/conf/my_3307.cnf &
  # mysqld_safe --defaults-file=/data/mysql/conf/my_3308.cnf &
  # mysqld_safe --defaults-file=/data/mysql/conf/my_3309.cnf &
  观察MySQL进程
  # ps -ef | grep mysqld
root      15873  12043  0 09:55 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/conf/my_3306.cnf  
mysql     16773  15873  0 09:55 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/conf/my_3306.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3306 --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/mysql_3306/error.log --open-files-limit=65535 --pid-file=/data/mysql/mysql_3306/mysql.pid --socket=/tmp/mysql_3306.sock --port=3306
  
root      16875  12043  0 09:56 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/conf/my_3307.cnf
  
mysql     17775  16875  2 09:56 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/conf/my_3307.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3307 --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/mysql_3307/error.log --open-files-limit=65535 --pid-file=/data/mysql/mysql_3307/mysql.pid --socket=/tmp/mysql_3307.sock --port=3307
  
root      17800  12043  0 09:56 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/conf/my_3308.cnf
  
mysql     18700  17800  7 09:56 pts/0    00:00:01 /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/conf/my_3308.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3308 --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/mysql_3308/error.log --open-files-limit=65535 --pid-file=/data/mysql/mysql_3308/mysql.pid --socket=/tmp/mysql_3308.sock --port=3308
  
root      18723  12043  0 09:56 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/conf/my_3309.cnf
  
mysql     19623  18723  7 09:56 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/conf/my_3309.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3309 --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/mysql_3309/error.log --open-files-limit=65535 --pid-file=/data/mysql/mysql_3309/mysql.pid --socket=/tmp/mysql_3309.sock --port=3309
  登录MySQL数据
  # mysql -S /tmp/mysql_3306.sock
  # mysql -S /tmp/mysql_3307.sock
  # mysql -S /tmp/mysql_3308.sock
  # mysql -S /tmp/mysql_3309.sock
  4、关闭MySQL进程
  mysqladmin shutdown -S /tmp/mysql_3306.sock
  mysqladmin shutdown -S /tmp/mysql_3307.sock
  mysqladmin shutdown -S /tmp/mysql_3308.sock
  mysqladmin shutdown -S /tmp/mysql_3309.sock
  二、使用mysqld_multi来管理MySQL数据
  创建统一的配置文件
  # cat /etc/my.cnf
[client]  
port            = 3306
  
socket          = /tmp/mysql_3306.sock
  

  
[mysql]
  
prompt="\\u@\\h:\p  \\R:\\m:\\s [\\d]>"
  
#tee=/data/mysql/mysql_3306/query.log
  
no-auto-rehash
  

  
[mysqld_multi]
  
mysqld = /usr/local/mysql/bin/mysqld_safe
  
mysqladmin = /usr/local/mysql/bin/mysqladmin
  
log = /data/mysql/mysql_multi/mysqld_multi.log
  

  
[mysqld]
  
#misc
  
user = mysql
  
basedir = /usr/local/mysql
  
datadir = /data/mysql/mysql_3306
  
port = 3306
  
socket = /tmp/mysql_3306.sock
  
event_scheduler = 0
  

  
#timeout
  
interactive_timeout = 300
  
wait_timeout = 300
  

  
#character set
  
character-set-server = utf8
  

  
open_files_limit = 65535
  
max_connections = 100
  
max_connect_errors = 100000
  

  
skip-name-resolve = 1
  
#logs
  
log-output=file
  
slow_query_log = 1
  
slow_query_log_file = slow.log
  
log-error = error.log
  
log_warnings = 2
  
pid-file = mysql.pid
  
long_query_time = 1
  
#log-slow-admin-statements = 1
  
#log-queries-not-using-indexes = 1
  
log-slow-slave-statements = 1
  

  

  
#binlog
  
binlog_format = row
  
server-id = 883306
  
log-bin =mysql-bin
  
binlog_cache_size = 4M
  
max_binlog_size = 1G
  
max_binlog_cache_size = 2G
  
sync_binlog = 0
  
expire_logs_days = 10
  

  
#relay log
  
skip_slave_start = 1
  
max_relay_log_size = 1G
  
relay_log_purge = 1
  
relay_log_recovery = 1
  
log_slave_updates
  
#slave-skip-errors=1032,1053,1062
  

  
explicit_defaults_for_timestamp=true
  
#buffers & cache
  
table_open_cache = 2048
  
table_definition_cache = 2048
  
table_open_cache = 2048
  
max_heap_table_size = 96M
  
sort_buffer_size = 2M
  
join_buffer_size = 2M
  
thread_cache_size = 256
  
query_cache_size = 0
  
query_cache_type = 0
  
query_cache_limit = 256K
  
query_cache_min_res_unit = 512
  
thread_stack = 192K
  
tmp_table_size = 96M
  
key_buffer_size = 8M
  
read_buffer_size = 2M
  
read_rnd_buffer_size = 16M
  
bulk_insert_buffer_size = 32M
  

  
#myisam
  
myisam_sort_buffer_size = 128M
  
#myisam_max_sort_file_size = 10G
  
myisam_max_sort_file_size = 100M
  

  
myisam_repair_threads = 1
  

  
#innodb
  
innodb_buffer_pool_size = 100M
  
innodb_buffer_pool_instances = 1
  
innodb_data_file_path = ibdata1:1G:autoextend
  
innodb_flush_log_at_trx_commit = 2
  
innodb_log_buffer_size = 64M
  
innodb_log_file_size = 500M
  
innodb_log_files_in_group = 3
  
innodb_max_dirty_pages_pct = 50
  
innodb_file_per_table = 1
  
innodb_rollback_on_timeout
  
innodb_status_file = 1
  
innodb_io_capacity = 2000
  
transaction_isolation = READ-COMMITTED
  
innodb_flush_method = O_DIRECT
  

  

  
#端口号为3306的实例特殊配置
  
[mysqld3306]
  
port =3306
  
server-id=883306
  
#指定本实例相应版本的basedir和datadir
  
basedir= /usr/local/mysql
  
datadir = /data/mysql/mysql_3306
  
socket          = /tmp/mysql_3306.sock
  
#重新配置这几个选项,不与全局配置一样,会直接覆盖上面的全局设置
  
innodb_buffer_pool_size = 100m
  
#transaction_isolation = REPEATABLE-READ
  

  

  
#端口号为3306的实例特殊配置
  
[mysqld3307]
  
port =3307
  
server-id=883307
  
#指定本实例相应版本的basedir和datadir
  
basedir= /usr/local/mysql
  
datadir = /data/mysql/mysql_3307
  
socket          = /tmp/mysql_3307.sock
  
#重新配置这几个选项,不与全局配置一样,会直接覆盖上面的全局设置
  
innodb_buffer_pool_size = 100m
  
#transaction_isolation = REPEATABLE-READ
  

  
[mysqld3308]
  
port=3308
  
server-id=883308
  
#binlog-do-db=database01
  
basedir= /usr/local/mysql
  
datadir = /data/mysql/mysql_3308
  
socket          = /tmp/mysql_3308.sock
  
#重新配置这几个选项,不与全局配置一样,会直接覆盖上面的全局设置
  
innodb_buffer_pool_size = 100m
  
innodb_flush_log_at_trx_commit = 2
  
sync_binlog = 0
  

  

  
[mysqld3309]
  
port=3309
  
server-id=883309
  
#binlog-do-db=database02
  
basedir= /usr/local/mysql
  
datadir = /data/mysql/mysql_3309
  
socket = /tmp/mysql_3309.sock
  
#重新配置这几个选项,不与全局配置一样,会直接覆盖上面的全局设置
  
innodb_buffer_pool_size = 100m
  
innodb_flush_log_at_trx_commit = 2
  
sync_binlog = 0
  # mkdir /data/mysql/mysql_multi/  #用来存放mysql_multi产生的日志
  # chown mysql.mysql /data/mysql/mysql_multi/  -R
  2、初始化数据库
  如已经初始化,则不必在再次初始化
  # cd /usr/local/mysql
  # ./scripts/mysql_install_db --user=mysql  --datadir=/data/mysql/mysql_3306/
  # ./scripts/mysql_install_db --user=mysql  --datadir=/data/mysql/mysql_3307/
  # ./scripts/mysql_install_db --user=mysql  --datadir=/data/mysql/mysql_3308/
  # ./scripts/mysql_install_db --user=mysql  --datadir=/data/mysql/mysql_3309/
  3、启动MySQL数据
  # mysqld_multi start 3306,3307,3308,3309  #也可单独启动
  # mysqld_multi report 3306,3307,3308,3309
  Reporting MySQL servers
  MySQL server from group: mysqld3306 is running
  MySQL server from group: mysqld3307 is running
  MySQL server from group: mysqld3308 is running
  MySQL server from group: mysqld3309 is running
  # tailf /data/mysql/mysql_multi/mysqld_multi.log
  151213 23:01:06 mysqld_safe Starting mysqld daemon with databases from /data/mysql/mysql_3306
  151213 23:01:06 mysqld_safe Starting mysqld daemon with databases from /data/mysql/mysql_3307
  151213 23:01:06 mysqld_safe Starting mysqld daemon with databases from /data/mysql/mysql_3308
  151213 23:01:06 mysqld_safe Starting mysqld daemon with databases from /data/mysql/mysql_3309
  mysqld_multi log file version 2.16; run: Sun Dec 13 23:01:27 2015
  Reporting MySQL servers
  MySQL server from group: mysqld3306 is running
  MySQL server from group: mysqld3307 is running
  MySQL server from group: mysqld3308 is running
  MySQL server from group: mysqld3309 is running
  登录MySQL数据库:
  # mysql -S /tmp/mysql_3306.sock
  # mysql -S /tmp/mysql_3307.sock
  # mysql -S /tmp/mysql_3308.sock
  # mysql -S /tmp/mysql_3307.sock
  4、关闭MySQL数据库
  # mysqld_multi stop 3306
  # mysqld_multi stop 3307,3308,3309
  # ps -ef | grep mysqld
  root      30822  12043  0 23:04 pts/0    00:00:00 grep mysqld
  此外,该配置文件还可以用来单独启动3306的MySQL实例
  # cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
  # chmod +x /etc/init.d/mysqld
  # /etc/init.d/mysqld start
  Starting MySQL..                                         [  OK  ]
  # mysql -S /tmp/mysql_3306.sock
  # /etc/init.d/mysqld stop
  Shutting down MySQL..                                      [  OK  ]



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-602489-1-1.html 上篇帖子: MySQL数据库高级(三)——视图 下篇帖子: mysql版本选择最终建议
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表