- 首先在主庫進行備份:
備份命令:
Innobackupex --defaults-file=/app/dbcluster/sgrdb/mysql/my19103.cnf --no-timestamp --user=dbscale --password=S6000@dbscale? --host=10.157.43.224 ?--port=19103? /data/backup
?
如果使用setsid:
setsid innobackupex --defaults-file=/data/mysql/my3390.cnf --no-timestamp --user=test?? --password=test --host=172.16.90.233? --port=3390 ?/data/backup 2>backup.log &
?
2.接著執行apply-log,這一步可以在主庫的服務器上執行也可以把備份集傳輸到從庫服務器上之后,在從庫服務器上再執行,我這里是在主庫執行完成之后再傳輸到從庫的:
innobackupex --apply-log ?/data/backup
如果使用setsid:
setsid innobackupex --apply-log ?/data/backup 2>apply.log &
?
?
(在slave服務器上確認mysql是否關閉
先在slave上確保實例已經處于關閉狀態(通過ps -ef | grep sgrdbd | grep 19103 來查看,輸出為空表示已經關閉)
如果沒有關閉數據庫,需要先關閉數據庫:
shell> cd /app/dbcluster/sgrdb/mysql/
shell> ./bin/sgrdbadmin -udbscale -p’密碼’ -P19103 -h slave的ip shutdown
關閉之后查看是否還有進程:
shell> ps -ef | grep sgrdbd
)
?
3.傳輸備份到從庫,傳輸備份文件到從庫有多種方法,這里介紹2種方法,二者選其一即可:
rsync:
rsync -avSH? /data/backup? 172.16.90.234:/data/backup
其他使用方法參考:
http://newcity.blog.163.com/blog/static/21642904620151242639886/
Scp:
scp -r? /data/backup? 10.157.43.223:/data/backup
?
4.備份文件傳輸到從庫之后,直接在從庫copy-back,或者把文件直接拷貝到從庫的datadir下面,二者選其一即可:
copy-back方法:
innobackupex --defaults-file= /app/dbcluster/sgrdb/mysql/my19103.cnf--copy-back /data/backup
或者使用--move-back
innobackupex --defaults-file=/data/mysql/my3390.cnf --move-back /data/backup
?
手動copy方法:
cp -r /data/backup/*? /sdb1/mysqldata/sgb/data19103/
?
5.在從庫修改數據目錄權限:
chown -R sgrdb:sgrdb /sdb1/mysqldata/sgb/data19103
?
6.啟動從庫
cd $basedir
./bin/sgrdbadmin --defaults-file= /app/dbcluster/sgrdb/mysql/my19103.cnf--user=sgrdb &
?
7.根據備份信息修改change master to語句:
a.查看備份信息,xtrabackup_binlog_info文件中會有gtid的信息:
[root@mysql2 backup]# cat xtrabackup_binlog_info
my1binlog.000003??????? 66563704??????? 09c53004-6599-11e6-b3b8-525400aec7c7:1-920???
b.在從庫修改、執行change master to語句,這里在執行change master to語句之前需要先在從庫purge gtid的位置:
reset master;
set global gtid_purged='09c53004-6599-11e6-b3b8-525400aec7c7:1-920';
CHANGE MASTER TO master_host='10.157.43.224',master_port=19103,master_user='dbscale',master_password='S6000@dbscale',master_auto_position=1;
注意:
當備份的庫之前是雙主結構的從庫,并且做過主從切換,gtid會有多組gtid的值,例如:
[mysql@db_slave1 data]$ cat xtrabackup_binlog_info
db_master2-bin.000427?? 388360834?????? ce70701f-dc1a-11e4-a375-5cf3fce7fd98:1-270900248,fb2934a4-dce8-11e4-a8b5-5cf3fce7f8c8:1-775393002
如果有多組的gtid值,在備份之后會在文件中顯示,在purge gtid的時候需要把所有的組都purge,即:
SET GLOBAL gtid_purged="8bc8e42d-30f6-11ea-afa8-005056879c27:1-3595967,
ea7e8d1e-3139-11ea-b87f-00505687e26a:1-31750755";
?
8.最后在從庫啟動slave并且查看同步狀態:
Start slave;
show slave status\G
?