xtrabackup学习之重做slave

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 下载一个binary的xtrabackup,然后解压缩:建立软连接:ln -s /data/software/xtrabackup-1.6.5/bin/innobackupex /usr/local/mysql/bin/innobackupexln -s /data/software/xtrabackup-1.
下载一个binary的xtrabackup,然后解压缩:

建立软连接:


  1. ln -s /data/software/xtrabackup-1.6.5/bin/innobackupex /usr/local/mysql/bin/innobackupex
  2. ln -s /data/software/xtrabackup-1.6.5/bin/xtrabackup_55 /usr/local/mysql/bin/xtrabackup_55
  3. ln -s /data/software/xtrabackup-1.6.5/bin/xtrabackup /usr/local/mysql/bin/xtrabackup

备份master:

  1. /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的备份,并且让备份可用。

解压缩备份:

  1. mkdir mysql_31_3306_full_backup_2012-11-02

  2. cd mysql_31_3306_full_backup_2012-11-02

  3. tar zxvfi /data/mysqldata/backup/mysql_full/mysql_31_3306_full_backup_2012-11-02.tar.gz
由于之前我们使用了 --stream=tar,所以解压缩的时候,必须使用-i参数。

第二步,把数据迁移到salve中。

前提:这里必须有一个新的mysql实例。

推送:

  1. rsync -avprP -e ssh /path/to/backupdir/$TIMESTAMP TheSlave:/path/to/mysql/
把你刚刚备份的数据,推送到新的服务器中

执行apply-log:

  1. /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

  1. 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用户

  1. 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;










相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
关系型数据库 MySQL 数据库
Mysql数据库redo log及binlog的写入
Mysql数据库redo log及binlog的写入
|
7月前
|
关系型数据库 MySQL Linux
用XtraBackup 增量备份并且恢复-----图文详解
用XtraBackup 增量备份并且恢复-----图文详解
167 0
|
SQL 关系型数据库 MySQL
Mysql使用binlog增量备份与恢复
Mysql使用binlog增量备份与恢复
354 0
|
7月前
|
SQL 存储 关系型数据库
认真学习MySQL中的二进制日志(binlog)与中继日志(Relay log)
认真学习MySQL中的二进制日志(binlog)与中继日志(Relay log)
314 0
relay_log_recovery和slave从库crash recovery的关系
在从库中将relay_log_recovery不设置或者设置为off,如果当从库意外宕机后,同时从库的relay log也一起损坏了,从库会丢失那些没有应用的日志,主从会不一致。
183 0
|
存储 关系型数据库 MySQL
|
存储 监控 关系型数据库