将已有的MySQL8.0单机架构变成主从复制架构
过程: 把数据库做一个完全备份, 恢复到从节点上, 恢复后从备份的那个点开始往后复制,从而保证后续数据的一致性。
步骤:
- 修改 master 主节点 的配置( server-id log-bin )
- master 主节点 完全备份( mysqldump )
- master 主节点 创建复制用户并授权
- master 主节点 将完全备份文件拷贝至从节点
- 修改 slave 从节点 的配置( server-id read-only )
- 修改 完全备份数据文件( 添加主节点的相关信息 )
- slave 从节点 还原备份( souce /data/all.sql )
- slave 从节点 开启复制( start slave; )
- 验证 主从复制架构
主节点
#修改master主节点的配置
#修改master主节点的配置
[root@centos8 ~]#vim /etc/my.cnf[mysqld]
server-id=8#MySQL老版本开启二进制日志
log-bin=/data/mysql/logbin/mysql-bin #MySQL8.0二进制日志默认开启
新建目录并改所有者
mkdir -p /mysql/logbin/ #新建文件夹
chown -R mysql.mysql /mysql/logbin/ #赋权
重新启动数据库
systemctl restart mysqld
当前目录的二进制日志就生成了
#完全备份
生成备份文件
mysqldump -uroot -A -F --single-transaction --master-data=1 > /data/full_bak.sql
#-A :全部
#-F :刷新
#创建复制用户并授权
#创建用户
mysql>create user repluser@"10.0.0.%" identified by "123456";
#授权
mysql>grant replication slave on *.* to repluser@"10.0.0.%";
#将备份文件复制到从节点
[root@centos8 ~]#scp /data/full_bak.sql 从节点:/data
从节点
#配置从节点
[root@centos8 ~]#vim /etc/my.cnf[mysqld]
server-id=18
read-only
重启数据库
systemctl restart mysqld
#从节点修改备份文件
vim /data/full_bak.sql
CHANGE MASTER TO
MASTER_HOST='主节点',
MASTER_USER='repluser',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
#从节点还原备份
数据库的还原过程没必要记录二进制, 所以把二进制记录临时关闭
mysql> set sql_log_bin=0;
恢复数据库文件
mysql> source /data/full_bak.sql;
重新打开二进制日志
mysql>set sql_log_bin=1;
#从节点开始复制
线程开启
mysql> start slave;
验证是否开启
mysql> show slave status\G
增加新从
当性能耗尽之后再添加一个从节点,需重新在主节点做备份
生成新的备份文件
mysqldump -uroot -A -F --single-transaction --master-data=1 > /data/full_bak2.sql
#-A :全部
#-F :刷新
#将备份复制到第二个从节点
[root@centos8 ~]#scp /data/full_bak2.sql 从节点:/data
打开备份文件
less full_bak2.sql
#从节点还原备份
关闭二进制
mysql> set sql_log_bin=0;
备份文件还原执行
mysql> source /data/full_bak2.sql;
重新打开二进制
mysql>set sql_log_bin=1;
手动执行还原命令(根据之前记录的命令)
CHANGE MASTER TO MASTER_HOST='10.0.0.8',MASTER_USER='repluser',MASTER_PASSWORD='123456',MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=156;
#从节点开始复制
mysql> start slave;
这样就可以完成同步啦!!!!
随着从节点数量的增加,就会消耗主节点的dump线程, 就会增加主节点的性能压力