1、在master服务器上启用二进制日志
[root@master ~]# vim /etc/my.cnf [mysqld] server_id=101 log_bin=master-bin [root@master ~]# systemctl restart mysql
2、在slave服务器配置server_id, 启动服务
[root@slave ~]# vim /etc/my.cnf [mysqld] server_id=102 read_only=1 [root@slave ~]# systemctl restart mysql
3、 在master上备份数据,在slave上恢复数据
1)在主从库上分别安装Xtrabackup工具
[root@master ~]# tar zxf percona-xtrabackup.tar.gz [root@master ~]# createrepo percona-xtrabackup
配置yum源
[root@master ~]# cat /etc/yum.repos.d/percona.repo [percona] name=percona baseurl=file:///root/percona-xtrabackup gpgcheck=0 enabled=1 [root@master ~]# yum makecache [root@master ~]# yum install -y percona-xtrabackup-24
2)完成数据全量备份,并拷贝到slave服务器上
[root@host-192-168-27-10 ~]# innobackupex --user=root --password=123 -S /tmp/mysql.sock ./backup/
[root@host-192-168-27-10 ~]# scp -r backup/ 192.168.27.67:/opt/mysql/mysql/
3)在slave恢复数据
注:恢复数据之前一定要先停止从库mysql,备份之前的数据目录
[root@slave mysql]# systemctl stop mysql [root@slave ~]# cd /opt/mysql/mysql/ [root@slave mysql]# mv data/ data_back [root@slave mysql]# mkdir data [root@slave ~]# innobackupex --apply-log ./backup/2021-05-25_14-19-07/
[root@slave ~]# innobackupex --defaults-file=/etc/my.cnf --copy-back ./backup/2021-05-25_14-19-07/
4)修改slave数据目录所属权限,重启mysql
[root@slave mysql]# chown -R mysql.mysql data
[root@slave mysql]# systemctl start mysql
4、在master服务器上创建一个具有复制权限的远程用户
mysql> grant replication slave on *.* to 'sync'@'192.168.27.67' identified by '123'; mysql> flush privileges;
5、在slave上连接主服务器
1)停止slave
mysql> stop slave;
2)连接master
mysql> change master to master_host='192.168.27.10', > master_user='sync', > master_password='123', > master_log_file='mysql-bin.000989', > master_log_pos=526293268;
3)启动复制线程
mysql> start slave;
4) 查看从服务器上线程的状态
mysql> show slave status\G;
验证主从复制成功
停止从服务器,在主服务上进行修改操作,再次启动从服务器,从服务器会自动继续复制数据
因为从服务器启动后,默认会在其数据目录下,生成一个master.info,该文件中会自动记录主服务器的连接信息