下载一个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;