注意!!!!用主庫恢復從庫的時候有定時任務event的,從庫的event要置爲disable狀態,否則會因爲主從都執行定時任務而數據出現主從數據不一致的情況。
主庫:
[root@mysqlplus soft]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
[root@mysqlplus soft]# rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
[root@mysqlplus soft]# yum -y install rsync
[root@mysqlplus soft]# rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
[root@mysqlplus soft]# innobackupex --defaults-file=/etc/my.cnf --user=root --password='******' --slave-info --parallel=16 /home/full_mysql --no-timestamp
[root@mysqlplus soft]# scp -r /home/full_mysql root@197.***.100.***:/home/
備庫:
[root@mysqlplus2 ~]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
[root@mysqlplus2 ~]# yum install -y rsync
[root@mysqlplus2 ~]# rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
[root@mysqlplus2 ~]# innobackupex --defaults-file=/etc/my.cnf --apply-log /home/full_mysql
[root@mysqlplus2 ~]# innobackupex --defaults-file=/etc/my.cnf --copy-back /home/full_mysql
[root@mysqlplus2 ~]# chown -R mysql:mysql /home/mysql/
[root@mysqlplus2 ~]# /etc/init.d/mysqld start
[root@mysqlplus2 ~]# cat /home/full_mysql/xtrabackup_info |grep binlog_pos
binlog_pos = filename 'mysql-bin.000139', position '75931475'
主從同步:
mysql> CHANGE MASTER TO
MASTER_HOST='197.***.100.***',
MASTER_USER='repl',
MASTER_PASSWORD='******',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000137',
MASTER_LOG_POS=66943384;
Query OK, 0 rows affected, 2 warnings (0.15 sec)
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000137',MASTER_LOG_POS=23802190;
然後第二天因爲event事件報錯了:
Last_Error: Could not execute Delete_rows event on table dbjyx.tb_***member***; Can’t find record in ‘tb_jyx_member_footprint’, Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event’s master log mysql-bin.000137, end_log_pos 106237269
這個問題就回歸到本筆記頭部執行恢復同步務必disable備庫的定時任務。
複製過程中的錯誤可以通過查看日誌文件進行錯誤溯源,然後有的放矢:
[root@mysqlplus ~]# /usr/local/mysql/bin/mysqlbinlog --no-defaults -v -v --base64-output=DECODE-ROWS /home/mysql/logs/mysql-bin.000137 --stop-position=106237269 | tail -20
[root@mysqlplus ~]# /usr/local/mysql/bin/mysqlbinlog --no-defaults -v -v --base64-output=DECODE-ROWS /home/mysql/logs/mysql-bin.000137 | grep -A 100 '273976273'>/home/er.txt
同步過程中經考量可忽略的一些錯誤可以選擇跳過:
mysql> stop slave;
Query OK, 0 rows affected (0.04 sec)
mysql> set global sql_slave_skip_counter=1;
Query OK, 0 rows affected (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.02 sec)