天天看点

xtrabackup学习之重做slave

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

继续阅读