一、简介
本项目为了提升MySQL的并发能力构建一个简单的MySQL主从复制集群,实现读写分离功能,提升MySQL集群的业务处理能力,同时深入学习MySQL的整体的部署和对集群架构的理解。
二、环境准备
准备两台Linux系统虚拟机,安装好MySQL,配置网络,我的master数据库的ip为192.168.220.3,slave数据库的ip为192.168.220.4。
版本:CentOS Linux release 7.9.2009 (Core)、MySQL5.7.38
三、搭建MySQL主从复制集群
- master机上开启二进制日志和设置server_id
vim /etc/my.cnf
- master机上创建一个用户repl,能让slave机访问
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@'192.168.220.%' IDENTIFIED BY '123456';
- replication slave权限,使slave数据库能从master数据库获得二进制日志数据。
- replication client权限,用来监控和管理复制的账号需要REPLICATION CLIENT权限,并且针对这两种目的使用同一个账号更加容易(而不是为某个目的单独创建一个账号)。
如果在主库上建立了账号,然后从主库将数据克隆到备库上时,备库也就设置好了——变成主库所需要的配置。这样后续有需要可以方便地交换主备库的角色。
- 在master上做一个全备,导出数据,导入到slave上,保持master和slave上的数据一致。
master数据库:
mysqldump -uroot -p'123456' --all-databases >/backup/all_db.sql
scp /backup/all_db.sql root@192.168.220.4:/root
slave数据库:
mysql -uroot -p'123456' < /root/all_db.sql
- 记录二进制File和Position
- 启动复制
slave数据库:
change master to master_host='192.168.220.3',
master_user='repl',
master_password='123456',
master_port=3306,
master_log_file='kafka01-bin.000007',
master_log_pos=755;
start slave;
执行show slave status\G;
查看slave状态,如果有以下内容说明启动成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
6) 测试结果
master数据库中:
slave数据库中: