一、背景:

线上一个主库压力比较大,所以增加一个从库,但是不能重启或者停止主库的正常运行,不能锁库锁表影响业务的正常运行。所以这里想到了XtraBackup

二、XtraBackup介绍:

Xtrabackup的优点:
1、备份完成快速、可靠
2、备份期间不间断的事务处理
3、节省磁盘空间和网络带宽
4、自动备份验证
5、提高正常运行时间由于更快的恢复时间
备份INNODB引擎的数据库不会锁库锁表,但是备份MyISAM的表还是会锁的,还支持增量备份。
官方地址:

三、环境说明

系统版本:CentOS Linux release 7.0.1406 (Core) 
内核版本:3.10.0-123.9.3.el7.x86_64
​mysql版本:5.6.26

四、安装XtraBackup

安装在主库上
建议大家使用rpm方式安装,网上很多文档都是编译安装,编译安装费时费力,我这次做主从刚开始使用编译安装,发现编译时服务器资源被耗尽都无法ssh,导致服务器无法处理请求。所以最后选择了rpm方式安装,这种方式安装非常快。
# yum install perl-Time-HiRes
# yum install perl-DBD-MySQL -y
# yum install perl-Digest-MD5 -y
# wget https://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.9/binary/redhat/7/x86_64/percona-xtrabackup-2.2.9-5067.el7.x86_64.rpm # rpm -ivh percona-xtrabackup-2.2.9-5067.el7.x86_64.rpm

五、主库主从配置

1.主库配置/etc/my.cnf

增加server-id 和 bin-log
# vim /etc/my.cnf
server-id = 128
log-bin = mysql-bin

2.主库配置授权账号

mysql> grant replication slave on *.* to rep@'192.168.199.183' identified by '';
mysql> flush privileges;

3.手动设置主库server-id和log-bin 参数

set global server_id=128
因为这两个参数是动态参数,不用重启主库也可以生效
如果你的主库已经设置这两个参数,请忽略这一步操作

六、从库主从配置

从库安装步骤略

1.从库配置/etc/my.cnf

增加server-id 和 bin-log
# vim /etc/my.cnf
server-id = 129
#如果需要在从库上做bin-log备份可以添加如下参数
log-bin = mysql-bin
log-slave-updates = 1
expire-logs-days=10

七、备份主库数据

1.主库机器上创建备份目录

# mkdir -p /backup/full_data

2.执行全库备份

2.1.备份

# innobackupex --defaults-file=/etc/my.cnf --user=root --password=123    --socket=/tmp/mysql.sock    /data/backup/full_data
PS:备份完成后,会在/backup/full_data/目录下生成一个时间点的目录,这里是2016-07-14_05-19-52。你也可以加一个--no-timestamp参数不产生这个目录,直接备份到/backup/full_data/目录下

2.2.重放redo log

#下面preparing,undo撤销未提交的事务,重放redo log
# innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --apply-log --socket=/tmp/mysql.sock /data/backup/full_data/2016-07-14_05-19-52

ps:1、ls -l  /data/backup/full_data/2016-07-14_05-19-52/查看,你发现xtrabackup会把你数据库datadir下的所有数据 文件都复制过来还新增了5个xtrabackup_开头的文件,我们关心的是xtrabackup_binlog_info这个文件,因为这个文件里面记 录了你做从库需要change到主库的binlog的位置和pos点

2、如果只想备份一个库,加“--include=navy”指定库名即可, “--databases=navy”不好使。

八、恢复数据到从库

1.停止从库

# /etc/init.d/mysqld stop

2.把主库备份文件拷贝到从库机器

# scp -ap /data/backup/full_data/2016-07-14_05-19-52   root@192.168.11.129:/data/mysql/

3.修改恢复文件权限

# chown -R mysql:mysql /data/mysql/  

4.启动数据库

# /etc/init.d/mysqld start

5.确认数据是否恢复成功

登录从库,执行show databases;

6.确认同步的位置点

在从库上或者主库上都可以查看该信息,我们是在从库上查看

# cat /data/mysql/xtrabackup_binlog_info
mysql-bin.000016 4542174

九、开始主从同步

1.配置从库 主从配置

#登录从库并执行

mysql > CHANGE MASTER TO   MASTER_HOST='192.168.199.182',MASTER_USER='rep',  MASTER_PASSWORD='',MASTER_LOG_FILE='mysql-bin.000016', MASTER_LOG_POS=4542174;

2.开始同步

mysql> start slave;

3.查看同步状态

mysql> show slave status\G

XtraBackup做mysql主从同步的更多相关文章

  1. windows 系统本地做mysql 主从同步,最后面解决主从同步库名不一致,表结构一致

    原文:windows 系统本地做mysql 主从同步,最后面解决主从同步库名不一致,表结构一致 mysql主从同步的好处以及原理       之前看到很多新闻说某某的服务器奔溃,磁盘碎了,导致数据丢失 ...

  2. Linux下MySQL主从同步配置

    Centos6.5 MySQL主从同步 MySQL版本5.6.25 主服务器:centos6.5 IP:192.168.1.101 从服务器:centos6.5 IP:192.168.1.102 一. ...

  3. MySQL主从同步原理 部署【转】

    一.主从的作用:1.可以当做一种备份方式2.用来实现读写分离,缓解一个数据库的压力二.MySQL主从备份原理master 上提供binlog ,slave 通过 I/O线程从 master拿取 bin ...

  4. mysql主从同步+mycat读写分离+.NET程序连接mycat代理

    背景 最近新项目需要用到mysql数据库,并且由于数据量大的原因,故打算采用1主1从(主数据库负责增.删.改操作:从数据库负责查操作)的数据库架构,在实现主从之后还要实现读写分离的代理,在网上搜寻了很 ...

  5. mysql主从同步(4)-Slave延迟状态监控

    mysql主从同步(4)-Slave延迟状态监控  转自:http://www.cnblogs.com/kevingrace/p/5685511.html 之前部署了mysql主从同步环境(Mysql ...

  6. mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理

    转自:http://www.cnblogs.com/kevingrace/p/6261091.html 在mysql工作中接触最多的就是mysql replication mysql在复制方面还是会有 ...

  7. mysql 主从同步 mysql代理服务器

    搭建mysql主从同步(实现数据自动备份)实例:把主机192.168.4.100的数据库配置为主机192.168.4.99的从数据库 主数据库服务器配置修改配置文件: [root@mysql ~]# ...

  8. MYSQL主从同步/主主同步

    一.MYSQL主从同步 注意:进行主从同步操作时需要确保DB无写操作 flush tables with read lock:   //全局读锁定,执行了命令之后所有库所有表都被锁定只读. 1.在主机 ...

  9. mysql主从同步(2)-问题梳理

    之前详细介绍了Mysql主从复制的原理和部署过程,在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题:1)slave运行过慢不能与master同步,也就是M ...

随机推荐

  1. iOS-封装静态库

    最近在做Apple的IOS开发,有开发静态库的需求,本身IOS的开发,只允许静态库或者Framework.在Xcode上没有找到允许编译,如同Android上的*.so和Win32上的dll这样的说法 ...

  2. [转]C++ list 类学习笔记

    双向循环链表list list是双向循环链表,,每一个元素都知道前面一个元素和后面一个元素.在STL中,list和vector一样,是两个常被使用的容器.和vector不一样的是,list不支持对元素 ...

  3. Hibernate 缓存机制(转)

    一.why(为什么要用Hibernate缓存?) Hibernate是一个持久层框架,经常访问物理数据库. 为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能. 缓存内的数据是对物理数 ...

  4. css设置时父元素随子元素margin值移动

    父元素的盒子包含一个子元素盒子,给子元素盒子一个垂直外边距margin-top,父元素盒子也会往下走margin-top的值,而子元素和父元素的边距则没有发生变化. HTML,CSS: <div ...

  5. CSS定位与浮动

    定位的基本思想很简单,它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素.另一个元素甚至浏览器窗口本身的位置.显然,这个功能非常强大,也很让人吃惊.要知道,用户代理对 CSS2 中定位 ...

  6. d010: 分离自然数

    内容: 一个三位自然数,分离出它的百位.十位与个位上的数字 输入说明: 一行一个三位整数 输出说明: 一行三个数字 , 空格隔开.分别是百 十 个位数字 输入样例:   256 输出样例 : 2 5 ...

  7. Android中支持的常用距离单位

    px(像素):每个px对应屏幕上的一个点.dip或dp(device independent pixels,设备独立像素):一种基于屏幕密度的抽象单位.在每英寸160点的显示器上,1dip=1px.但 ...

  8. 利用dbms_backup_restore恢复数据库

    测试环境:OEL+11.2.0.1 实例名:orcl2 DBID:1336959433 场景:Oracle数据库的存储坏了,数据文件和控制文件全部丢失,只有数据文件的备份集,且备份集中无控制文件.(当 ...

  9. CMake快速入门教程-实战

    http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/ http://blog.csdn.net/dbzhang800/article/detai ...

  10. 杜教的AAA树

    膜膜膜,常数挺小的... #include<iostream> #include<cstdio> #include<cmath> #include<algor ...