下載下傳一個binary的xtrabackup,然後解壓縮:
建立軟連接配接:
ln -s /data/software/xtrabackup-1.6.5/bin/innobackupex /usr/local/mysql/bin/innobackupex
ln -s /data/software/xtrabackup-1.6.5/bin/xtrabackup_55 /usr/local/mysql/bin/xtrabackup_55
ln -s /data/software/xtrabackup-1.6.5/bin/xtrabackup /usr/local/mysql/bin/xtrabackup
備份master:
/usr/local/mysql/bin/innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=root--password='zsd0507' --socket=/data/mysqldata/3306/mysql.sock --slave-info --safe-slave-backup --force-tar --stream=tar /tmp/ | gzip - > /data/mysqldata/backup/mysql_full/mysql_31_3306_full_backup_`date +%F`.sql.gz其中:
--slave-info:
它會記錄master伺服器的binary log的pos和name。會把記錄的資訊記錄在
xtrabackup_slave_info
--safe-salve-backup:
它會停止slave SQL 程序,等備份完後,重新打開slave的SQL程序
--force-tar --stream=tar /tmp
這些指令是用來壓縮備份為tar檔案。具體看官方文檔
有了備份後,我可以開始重做slave了。
第一步:使用master的備份,并且讓備份可用。
解壓縮備份:
mkdir mysql_31_3306_full_backup_2012-11-02
cd mysql_31_3306_full_backup_2012-11-02
tar zxvfi /data/mysqldata/backup/mysql_full/mysql_31_3306_full_backup_2012-11-02.tar.gz
由于之前我們使用了 --stream=tar,是以解壓縮的時候,必須使用-i參數。
第二步,把資料遷移到salve中。
前提:這裡必須有一個新的mysql執行個體。
推送:
rsync -avprP -e ssh /path/to/backupdir/$TIMESTAMP TheSlave:/path/to/mysql/把你剛剛備份的資料,推送到新的伺服器中
執行apply-log:
/usr/local/mysql/bin/innobackupex --defaults-file=/data/mysqldata/3307/my.cnf --apply-log /data/mysqldata/backup/mysql_full/mysql_31_3306_full_backup_2012-11-02這個地方,希望讀者多做測試,這裡原來我有疑問。apply-log的原理是怎麼樣的。其實他就是幫你生成ibdata1的log的。是以,任何一個新執行個體都可以推動apply-log這個指令。官方說法:xtrabackup_logfile儲存着ibdata1的log。為了資料的一緻性。
再執行copy-back
innobackupex --defaults-file=/data/mysqldata/3307/my.cnf --copy-back /data/mysqldata/backup/mysql_full/mysql_31_3306_full_backup_2012-11-02其實,這個指令說白了,就是自動的根據你的my.cnf中指定的相關位置,幫你把資料copy回去、哈哈,就這麼簡單。如果你很清楚的話,可以手動cp回去。
當然,别忘了重新開機機器。
第三步: 配置master
添加一個repl使用者
TheMaster|mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.0.1%.%' IDENTIFIED BY 'repl';
第四步:配置slave
vi /data/mysqldata/3307/my.cnf
注意:修改server-id :
server-id = 12033307
第五步:配置replication
CHANGE MASTER TO
MASTER_HOST='10.0.17.220',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='repl',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1081;
binlog的位置,可以在xtrabackup_binlog_info或者 xtrabackup_slave_info上面獲得。
其中,xtrabackup_slave_info是拿一台slave的備份,重做一台新的slave的有CHANGE MASTER TO的相關語句
然後開啟slave:
TheSlave|mysql> START SLAVE;