mysql主從實現(percona-xtrabackup)

基礎環境:
OS:Red Hat Enterprise Linux Server release 7.6 (Maipo)
mysql:Percona版(5.7.29最新,可選mysql8)
主從都裝相同的版本,安裝可參考前篇
https://blog.51cto.com/6464430/2479808
原版文檔
https://www.percona.com/doc/percona-xtrabackup/2.1/howtos/setting_up_replication.html
主IP:192.168.100.1
備IP:192.168.100.2
操作步驟:
1、安裝percona-xtrabackup工具最新版
# yum install percona-xtrabackup-24
2、創建備份目錄
# mkdir /opt/mysql/mysql_backup
修改目錄屬組
# chown -R mysql:mysql /opt/mysql/mysql_backup
3、在主機上將數據庫進行備份
# innobackupex --user = root --password = ‘******’ /opt/mysql/mysql_backup/
出現報錯
Failed to connect to MySQL server: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2).
因爲我們修改了默認的目錄,因此需要修改下配置文件
加個參數--defaults-file=/etc/my.cnf
# innobackupex --defaults-file=/etc/my.cnf --user = root --password = ‘******’ /opt/mysql/mysql_backup/
又報一個錯:
Failed to connect to MySQL server: DBI connect(';mysql_read_default_group=xtrabackup','root',...) failed: Access denied for user 'root'@'localhost' (using password: YES) at - line 1314.
需要制定本地地址,加參數 --host=127.0.0.1
# innobackupex --defaults-file=/etc/my.cnf --user = root --password = ‘******’ --host=127.0.0.1 /opt/mysql/mysql_backup/
執行完應該看到 completed OK!
4、爲了使快照一致,再執行一個命令(同步數據 回滾未提交的事務及同步已經提交的事務至數據文件,使得數據文件處於一致性狀態)
# innobackupex --defaults-file=/etc/my.cnf --user = root --password = ‘******’ --host=127.0.0.1 --apply-log /opt/mysql/mysql_backup / $ TIMESTAMP /
/ $ TIMESTAMP / 代表步驟3中的文件目錄
5、將備份的數據複製到備機
# rsync -avpP -e ssh /opt/mysql/mysql_backup / $ TIMESTAMP 192.168.100.2:/opt/mysql/mysql_backup
6、停止備機的mysql
# systemctl stop mysqld.service
7、備份備機原有的datadir
# mv mysql_data/ mysql_data_bak
8、將步驟5同步過來的主機數據同步到datadir下並確保mysql有相關權限

    # cp -rp /opt/mysql/mysql_backup /opt/mysql/mysql_data
    # chown mysql:mysql -R /opt/mysql/mysql_data

9、配置主機(機器應該開啓二進制同步及有唯一的服務id配置)
mysql>GRANT REPLICATION SLAVE ON *.* to 'repl'@'192.168.100.2' identified by '********';
有個小告警,可以先建用戶repl就不會告警了
備機上執行
# mysql -urepl -p'*********' -host192.168.100.1
mysql>SHOW GRANTS;
可以看到授權
10、配置從機
拷貝主機的配置文件
# scp 192.168.100.1:/etc/my.cnf /etc/my.cnf
修改從機的server-id 爲2
啓動數據庫
# systemctl start mysqld.service
11、開始複製
查看從機當前的日誌

# cat /opt/mysql/mysql_dataxtrabackup_binlog_info 
mybinlog.000008 194 

從機執行
mysql>CHANGE MASTER TO MASTER_HOST = '192.168.100.1', MASTER_USER = 'REPL' , MASTER_PASSWORD = '********', MASTER_LOG_FILE = 'mybinlog.000008', MASTER_LOG_POS = 194;

啓動備機:
mysql>START SLAVE;
12、檢查
sql> SHOW SLAVE STATUS \G
...
Slave_IO_Running: Yes 應該爲yes
Slave_SQL_Running: Yes 應該爲yes
...
Seconds_Behind_Master: 13 表示當前同步的時間差
...
13、主從切換(正常情況下)
A、主庫鎖表,變爲只讀,避免日誌同步不全
mysql> flush tables with read lock;
B、確保master所有的binlog已同步到slave,並且slave都已apply了所有的binlog
主:
mysql> show processlist;
mysql主從實現(percona-xtrabackup)
備:
mysql> show processlist;
mysql主從實現(percona-xtrabackup)
C、停止slave進程
從:
mysql> STOP SLAVE IO_THREAD;
mysql> show processlist;
mysql主從實現(percona-xtrabackup)
D、確保從機開啓bin_log且關閉read_only
mysql> show variables like 'read_only';
mysql主從實現(percona-xtrabackup)
E、提示從機爲主機:
mysql> stop slave;
mysql> reset master;
mysql> reset slave all;
mysql> show master status \G
mysql主從實現(percona-xtrabackup)
F、新的主機需要建立同步帳戶並賦予同步權限
mysql>GRANT REPLICATION SLAVE ON . to 'repl'@'192.168.100.1' identified by '****';
G、將原來的主切換從
mysql> reset master;
mysql>CHANGE MASTER TO MASTER_HOST='192.168.100.1',MASTER_USER='REPL',MASTER_PASSWORD='1qaz@WSX',MASTER_LOG_FILE='mybinlog.000001', MASTER_LOG_POS=154;
MASTER_LOG_FILE='mybinlog.000001', MASTER_LOG_POS=154 從步驟E獲取
mysql> start slave;
mysql> show slave status\G
mysql主從實現(percona-xtrabackup)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章