最近一直在研究MySQL的集群搭建,从网上找了好多帖子进行搭建,遇到了很多问题,今天与大家分享一下我的学习成果,如有不对的地方,希望大家能多多指正,另外有关MySQL和Mycat的安装此处不做赘述,此文章只对集群搭建的配置进行详细说明。
操作系统
CentOS7、MySQL:5.7.23 、Mycat:1.5.1
此处我们准备五台服务器,分别如下:
192.168.68.125:8806 Mycat
192.168.68.126:3306 Master
192.168.68.127:3306 Master
192.168.68.128:3306 Slave
192.168.68.129:3306 Slave
MySQL双主双从集群搭建
Master(每台master都需要执行)
1、登录MySQL,创建复制账户
在Master的数据库中建立一个复制账户,每个Slave使用该账户连接Master进行复制,需要replication slave 和 replication client 权限,Master的连接信息会存储在文本文件中。
2、拷贝数据
如果是新安装的MySQL主从服务器,这一步不需要。如果master之前有数据,需要把Master上的数据导出并还原到slave上,要保证Master和Slave服务器中的数据是一样的。建议导出Master库的时候进行锁表,导完后再解锁。
mysql> flush tables with read lock;
mysqldump -uroot -p123456 by dy_qqopen > dy_qqopen.sql
mysql>unlock tables;
3、修改Master服务器 /etc/my.cnf配置
4、创建二进制日志记录,授权,重启MySQL
mkdir -p /var/log/mysql
chown mysql:mysql /var/log/mysql -R
systemctl restart mysqld.service
5、查看Master状态
Slave服务器配置
1、修改Slave服务器 /etc/my.cnf配置
2、创建二进制日志目录,授权,重启MySQL
mkdir -p /var/log/mysql
chown mysql:mysql /var/log/mysql -R
systemctl restart mysqld.service
3、连接Master服务器
4、手动启动复制线程
5、查看主从状态
主备互换搭建时,将两台主服务器按照主从搭建流程相互执行一遍即可。
相关配置说明
1、log-bin:控制master是否开启二进制日志(binlog)记录功能
2、server-id:每个server服务的标识,在master/slave环境中,此变量一定要不一样
3、binlog-do-db:只记录指定数据库的更新到二进制日志中
4、binlog-ignore-db:忽略指定数据库的更新到二进制日志中
5、log_slave_updates:此参数控制slave数据库是否把从master接受到的log并在本slave执行的内容记录到slave的二进制日志中,在级联复制环境中(包括双master环境),这个参数是必须的。
6、auto_increment_increment=2:增长的步长
auto_increment_offset=1:起始位置
在双master环境下可以防止键值冲突