以前mysql搭建新备库都是在现在业务较小的备库上停止同步或停止数据库,然后拷贝数据库到新备库,配置好新备库后,再开启同步或数据库。然而,这次没有空闲备库用来搭新备库。需要从一个业务繁忙的数据库中搭建一个新备库,对系统延时要求比较高,所以同步和数据库都不能停。所以我们用了percona的 xtrabackup备份工具。
 
因为这个备份要作为备库,所以用了–slave-info参数,备份完成后会生成一个对应主库的binlog日志的文件,用于配置同步。为了保证数据一致性,使用了–slave-info参数后会在某一段时间内加一个全局只读锁,导致库不可写,但是这个要比停止库的同步的影响要小。数据库总共1.4T,前面备份的1.3T都很顺利,没有锁和延时。在备份最后100G数据文件的时候产生了一个全局只读锁,造成了大约3个小时的延迟,备份完成后大概半小时后延时追上了 。下面介绍用xtrabackup 搭建备库的主要步骤:
 
1.xtrabackup 安装

[root@db-2-43 ~]# cd /usr/src/
[root@db-2-43 src]# wget http://www.percona.com/redir/downloads/XtraBackup/LATEST/binary/Linux/x86_64/percona-xtrabackup-2.1.5-680-Linux-x86_64.tar.gz
[root@db-2-43 src]# tar zxvf percona-xtrabackup-2.1.5-680-Linux-x86_64.tar.gz
[root@db-2-43 src]# cp percona-xtrabackup-2.1.5-Linux-x86_64/bin/* /data/mysql/bin/

 
xtrabackup是通过DBD::mysql连接和mysql通信,使用前需要安装perl的DBD::mysql模块
通过yum安装

[root@db-2-43 DBD-mysql-4.023]# yum -y install perl-DBD-MySQL.x86_64

或者通过源码安装DBI-DBD

# wget http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.628.tar.gz
# tar zxvf DBI-1.628.tar.gz
# cd DBI-1.628
# perl Makefile.PL
# make && make install
# wget http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.023.tar.gz
# tar zxvf DBD-mysql-4.023.tar.gz
# cd DBD-mysql-4.023
# perl Makefile.PL --libs="-L/data/mysql/lib -lmysqlclient -lz -lrt -lcrypt -lnsl -lm" --cflags=" -I/data/mysql/include/"
# make && make install

 
2.开启一个作为slave的完全备份
开启一个完全备份,加入–slave-info参数表明这是一个用来做slave的备份,备份完之后会生成一个xtrabackup_slave_info文件,记录了备份完成后主库的二进制日志文件和位置,用来开启一个同步。

[root@db-2-43 data]# innobackupex --user=root --password= root --port=3306 --defaults-file=/etc/my.cnf --slave-info --socket=/data/mysql/data/mysql.sock --no-timestamp /data/backup/pis_slave

备份成功后会看到如下信息:
innobackupex: Backup created in directory ‘/data/backup/pis_slave’
innobackupex: MySQL slave binlog position: master host ‘10.0.2.44’, filename ‘mysql-bin.012434′, position 525181886
131028 20:20:37  innobackupex: Connection to database server closed
131028 20:20:37  innobackupex: completed OK!
 
备份完成后,还不能用于恢复,一些未提交的事物需要恢复,需要恢复redo logo的数据,确保数据一致

# innobackupex --apply-log /data/backup/pis_slave/

执行成功会看到如下信息
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown…
InnoDB: Shutdown completed; log sequence number 6370833331492
131029 14:12:41  innobackupex: completed OK!
 
3.备份完成将备份拷贝到新的备库服务器
 
4.在新备库安装新的mysql数据库。注意的是恢复前要关闭数据库,清空数据库文件目录,因为如果数据目录有存在文件的话是不会覆盖的。然后用下列命令进行数据拷贝恢复,下列命令会将备份出的数据根据my.cnf配置的信息将备份拷贝到mysql数据目录。或者手动将备份文件拷贝到mysql的数据目录也可以。
innobackupex –copy-back /data/backup/pis_slave
 
5.启动数据库

mysqld_safe --user=mysql --ledir=/data/mysql/bin/ &

6.配置同步
查看主库的binlog位置

[root@db-3-5 pis_slave]# cat xtrabackup_slave_info
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.012434', MASTER_LOG_POS=525181886

开启同步

14:30:53 (none)>CHANGE MASTER TO
-> MASTER_HOST='10.0.2.44',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='repl',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='mysql-bin.012434',
-> MASTER_LOG_POS=525181886,
-> MASTER_CONNECT_RETRY=10;
14:33:00 (none)> start slave;

 

xtrabackup备份方式搭建一个mysql slave的更多相关文章

  1. Spring框架——事务管理方式搭建一个小的项目

    学习Spring框架,通过事务管理的方式搭建一个小的项目,该项目可以查询对数据库中的图书库存数量进行修改. 首先,使用MVC分层的设计模式思想搭建项目目录结构. 此部分代码源码之中都有相关注释,所以尽 ...

  2. 如何搭建一个 MySQL 分布式集群

    1.准备集群搭建环境 使用6台虚拟机来搭建 MySQL分布式集群 ,相应的实验环境与对应的MySQL节点之间的对应关系如下图所示: 管理节点(MGM):这类节点的作用是管理MySQLCluster内的 ...

  3. 为MySQL选择合适的备份方式

    数据库的备份是极其重要的事情.如果没有备份,遇到下列情况就会抓狂: UPDATE or DELETE whitout where… table was DROPPed accidentally… IN ...

  4. 选择适用才最好 盘点MySQL备份方式

    我们要备份什么? 一般情况下, 我们需要备份的数据分为以下几种 数据 二进制日志, InnoDB事务日志 代码(存储过程.存储函数.触发器.事件调度器) 服务器配置文件 备份工具 这里我们列举出常用的 ...

  5. Docker 搭建 Tomcat + Mysql

    Docker 搭建 Tomcat + Mysql 准备 虚拟机 虚拟机安装Docker 在纯净的Centos镜像上搭建 Centos镜像准备 虚拟机上拉取 Centos 镜像: docker pull ...

  6. PXC备份方式总结

    记录一下. 1.mysqldump数据导出 关于GTID: GTID是MySQL5.6以后,加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力. A global t ...

  7. 搭建一个webpack微服务器

    [前言]:因为最近在vue2.0的时候用到了webpack的externals,才发现我之前都只是用webpack做一些搭建完项目后的“收尾工作”——即打包,而没有把它纳入到项目开发的“主体过程”中来 ...

  8. Spring框架——JDBC方式搭建项目

    学习Spring框架,使用JDBC的方式配置方式搭建一个项目,进行项目总结. 首先,采用MVC设计模式思想,搭建项目目录. 然后各个目录文件下面的相关源码附上: controller目录: impor ...

  9. innobackupex 备份数据搭建 MySQL Slave

    简介: 数据量比较大时,使用 innobackupex 备份数据新增 MySQL Slave 节点. 安装 innobackupex 工具,我这里写过一次:http://www.cnblogs.com ...

随机推荐

  1. jquery加载解析XML文件

    xml文件 <?xml version="1.0" encoding="utf-8" ?> <taxrates> <taxrate ...

  2. VK Cup 2016 - Round 1 (Div. 2 Edition) A. Bear and Reverse Radewoosh 水题

    A. Bear and Reverse Radewoosh 题目连接: http://www.codeforces.com/contest/658/problem/A Description Lima ...

  3. CDOJ 1288 旅游的Final柱 构造题

    旅游的Final柱 题目连接: http://acm.uestc.edu.cn/#/problem/show/1288 Description 柱神要去打Final啦~(≧▽≦)/~啦啦啦 柱神来到了 ...

  4. Shell基础学习(三) 传递参数

    我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 以下实例我们向脚本传递三个参数 ...

  5. 字符串型MySQL查询条件需要注意的一点

    最近在工作中遇到了数据库服务器产生很多读写队列的问题,于是要求大家开始优化我们的SQL语句. 下面是查询quotedata_history表中的code字段的SQL语句,其中code字段的类型是var ...

  6. GridView 内容自动换行 简单记录

    $("#GridView1 tr td:last-child").each(function () { var width = $(document).width() - 700. ...

  7. Curvilinear structure detections

    此部分参考处 As a structure-based detector, PCBR does not use edges, instead, it uses curvilinear structur ...

  8. java socket 长连接 短连接

    长连接 是一旦一个客户端登陆上服务器,其与服务器之间的连接就不关闭,不管他们之间进行了多少次交易,直到客户端退出登陆或网络出现故障.这种技术在联机交易系统实现有利于提高效率. 短连接是客户端每发一个请 ...

  9. mysql concat函数进行模糊查询

    concat() 函数,是用来连接字符串. 精确查询: select * from user where name=”zhangsan” 模糊查询: select * from user where ...

  10. 探索 Python、机器学习和 NLTK 库 开发一个应用程序,使用 Python、NLTK 和机器学习对 RSS 提要进行分类

    挑战:使用机器学习对 RSS 提要进行分类 最近,我接到一项任务,要求为客户创建一个 RSS 提要分类子系统.目标是读取几十个甚至几百个 RSS 提要,将它们的许多文章自动分类到几十个预定义的主题领域 ...