搞了个小项目,随着数据的增大,单机环境性能瓶颈越来越突出,于是着手在原有的基础上搭建Mysql+Mycat组合成的主从复制+读写分离集群,搭建过程再次记录一下。
主从复制为MySQL自带功能,读写分离则借助Mycat实现
准备两台win机器(一主一从,可互相ping同,且都开放了3306服务端口,不会的自行百度),分别安装相同版本的MySQL以及Mycat,其安装以及配置自行搜索教程,因mycat为Java编写,因此还需要安装jdk,过程自行搜索,不是此文重点。
前戏已过,进入重点:
MySQL主服务器ini配置文件内加入:
server-id = 104 #[必须]服务器唯一ID,默认是1,通常采用本机IP后位数。
log-bin=D:\ProgramData\mysql-5.7.22-winx64\log-bin\mysql-bin #[作为MASTER主服务器必须打开此项]启用二进制日志(提前创建存放二进制的文件夹)
binlog-do-db = em_test #指定对名称为em_test 的数据库记录二进制操作日志,如果需要复制多个数据库,重复设置这个选项即可(em_test 换成其他对应的数据库名称)
binlog-ignore-db = mysql #指定不对名称为mysql的数据库记录二进制日志,如果不想复制多个数据库,重复设置这个选项即可,如下
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
binlog-ignore-db = sys
binlog_format = mixed #binlog日志格式,mysql默认采用,如果从服务器slave有别的slave要复制那么该slave也需要这一项#
expire_logs_days = 7 #删除超过7天的binlog
其中在MySQL安装目录内的data自动生成的***.pid文件内自动生成的id号必须与从服务器生成的不同(若一样则主从复制配置失败,出现失败可查查该pid内id是否唯一)
同理配置MySQL从服务器ini配置文件内加入:
server-id = 13 #[必须]服务器唯一ID,默认是1,通常采用本机IP后位数。
replicate-do-db = em_test #指定对名称为em_test 的数据库读取主服务器的二进制操作日志,如果需要复制多个数据库,重复设置这个选项即可(em_test 换成其他对应的数据库名称)
replicate-ignore-db = mysql #指定不对名称为mysql的数据库记录二进制日志,如果不想复制多个数据库,重复设置这个选项即可,如下
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = sys
主从MySQL服务器分别安装mysql服务并启动MySQL,登录主服务器执行:
show master status;
获取当主服务器的MySQL的log-bin信息:
mysql-bin.000014为当前MySQL产生的二进制记录,position内的值为在当前的中继日志中,SQL线程已读取和执行的位置。以上两项会再每次重启MySQL服务时改变,该命令为最新的记录文件以及执行位置。
登录从服务器依次执行:
stop slave;
reset slave;
change master to master_user='em_test',master_password='test',master_port=3306,master_host='192.168.0.104',master_log_file='mysql-bin.000014',master_log_pos=10416792;
start slave;
完成以上配置后,登录从服务器后执行“show slave status\G” 命令查看从服务器配置详细信息
下一篇讲记录Mycat搭建读写分离!
领取专属 10元无门槛券
私享最新 技术干货