1. 程式人生 > 其它 >MySQL5.6主從同步(熱備份)

MySQL5.6主從同步(熱備份)

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,該檔案中會自動記錄主伺服器的連線資訊