XtraBackup2.4.4 with mysql5.7.17 主从同步

一、问题:

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

二、XtraBackup介绍:

       Xtrabackup的优点:

1、备份完成快速、可靠

2、备份期间不间断的事务处理

3、节省磁盘空间和网络带宽

4、自动备份验证

5、提高正常运行时间由于更快的恢复时间

备份INNODB引擎的数据库不会锁库锁表,但是备份MyISAM的表还是会锁的,还支持增量备份。



三、环境说明

系统版本:CentOS Linux release 7.3.1611 (Core)

内核版本:3.10.0-514.16.1.el7.x86_64

​mysql版本:mysql  Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using  EditLine wrapper

xtrabackup版本:percona-xtrabackup-24-2.4.4-1.el7.x86_64 :注:较低版本的xtrabackup不支持                               centos7.3

四、xtrabackup软件安装:

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

wget -O /etc/yum.repos.d/epel.repo  http://mirrors.aliyun.com/repo/epel-6.repo

yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL

yum install -y percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm


注意:

my.cnf修改:

innodb_file_per_table = 1

binlog_format='row'

在线改:

set global innodb_file_per_table=1;

set global binlog_format='row';

错误故障:

rm -f /etc/my.cnf

否则全备时报如下错误:

InnoDB: Number of pools: 1

InnoDB: Error: log file ./ib_logfile0 is ofdifferent size 50331648 bytes

InnoDB: than specified in the .cnf file268435456 bytes!

f pools: 1


五、主库主从配置

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

增加server-id 和 bin-log

#vim /etc/my.cnfserver-id = 128

  log-bin = mysql-bin

2.主库配置授权账号

mysql>ALTERUSER'root'@'localhost'IDENTIFIEDBY'new_password';

mysql>alter user root@localhost identified by'Admin123!';

mysql>grant replication slave on *.* to'slave'@'10.130.21.53' identified by 'password';

mysql> flush privileges;

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

setglobalserver_id=128

因为这两个参数是动态参数,不用重启主库也可以生效

如果你的主库已经设置这两个参数,请忽略这一步操作

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

增加server-id 和 bin-log#vim /etc/my.cnfserver-id = 129

#如果需要在从库上做bin-log备份可以添加如下参数

log-bin = mysql-bin

log-slave-updates = 1

expire-logs-days=10


mysql -uroot -poldboy123 -S /data/3306/mysql.sock


六、备份主库数据

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

#mkdir -p /home/data/backup33061

2.执行全库备份

2.1.备份

innobackupex --defaults-file=/home/data/mysql33061/my.cnf --user=root  --password=admin123 --socket=/home/data/mysql33061/mysql.sock  /home/data/backup33061

>>> xtrabackup: Transaction log oflsn (549646200) to (549646758) was copied.

170724 15:19:39 completed OK!

PS:备份完成后,会在/home/data/backup33061目录下生成一个时间点的目录,这里是2017-07-24_15-19-04。你也可以加一个--no-timestamp参数不产生这个目录,直备份到/home/data/backup33061目录下

2.2.重放redo log

#下面preparing,undo撤销未提交的事务,重放redo log

innobackupex--defaults-file=/home/data/mysql33061/my.cnf--user=root--password=oldboy123--apply-log--socket=/home/data/mysql33061/mysql.sock/home/data/backup33061/2017-07-24_15-19-04

>>> InnoDB: Shutdown completed;log sequence number 549647400

170724 15:24:19 completed OK!

经过预处理或是redo log后的文件才能替换掉从库的数据目录

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 -rp /data/backup/full_data//2017-07-24_15-19-04  root@10.130.21.53:/mysql/data/

3.修改恢复文件权限

#chown -R mysql:mysql  /mysql/data

4.启动数据库

#/etc/init.d/mysqld start

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

登录从库,执行show databases;

6.确认同步的位置点

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

#cat /mysql/data/xtrabackup_binlog_info      mysql33061-bin.000001    476764

九、开始主从同步

1.配置从库 主从配置

#登录从库并执行

mysql > CHANGEMASTER TOMASTER_HOST='10.130.21.52',MASTER_USER='rep',MASTER_PASSWORD='oldboy123',MASTER_LOG_FILE='mysql33061-bin.000001', MASTER_LOG_POS=476764;

2.开始同步

mysql> start slave;

3.查看同步状态

mysql> show slave status\G

Slave_IO_Running: Yes    Slave_SQL_Running: Yes  Seconds_Behind_Master: 0



centos6.5 + mysql5.6


备份与主从同步:

注意:

若是mysql编译安装等,提示找不到socket路径,可以用--socket=/var/lib/mysql/mysql.sock参数执行socket路径

1 备份

在主库上运行备份命令,后面跟备份文件放在哪个目录下;

innobackupex --defaults-file="/etc/my.cnf" --user=root --passwor=123456 /opt/

2.scp到从库

经备份后的文件夹整体scp到从库的某个目录,如opt目录下

scp -rp 备份目录 远程用户@远程主机:/远程目录

3.预处理

内存较大的主机,可以适当加大use-memory,提高处理速度。

innobackupex --defaults-file="/etc/my.cnf" \

--user=root \

--apply-log \

--use-memory=4G /opt/2016-05-07_16-50-33/

4.关闭从库

/etc/init.d/mysqld stop

5.copy数据

注意:(拷贝前需要将之前的mysql数据目录清空)

innobackupex --defaults-file="/etc/my.cnf" \

--user=root \

--move-back /opt/2016-05-07_16-50-33/

6.查看master位置

[root@linux-node2 data]# cat xtrabackup_binlog_pos_innodb

mysql-bin.000008    3037723

7.修改权限

将mysql的数据目录授予mysql用户权限

chown -R mysql:mysql /data01/mysql/

8.启动从库

/etc/init.d/mysqld start

9.设置主从

mysql> change master to \

master_host='192.168.56.11', \

master_user='slave', \

master_password='123456', \

master_log_file='mysql-bin.000008', \

master_log_pos=3037723;

相关经验:

生产环境212G的数据:

备份时间约25分

内网scp时间:5分钟(千兆网卡)

预处理时间:5分种

拷贝(恢复)数据:21分钟

延迟复制:

1.误删除恢复。

2.延迟测试。

3.历史查询。

mysql> stop slave;

mysql> change master to master_delay = 600;

mysql> start slave;

半同步复制:

master:

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

mysql> SET GLOBAL rpl_semi_sync_master_timeout = 1000;

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

mysql> stop slave io_thread;start slave io_thread;

高可用解决方案:   MHA

架构扩展方案:

1.基于复制的扩展

2.客户端分库分表

3.mysql cluster

4.Percona XtraDB Cluster

5.MySQL的Proxy中间件(mysql proxy,mycat)

MySQL  -> Percona Server  -> MariaDB

基于复制的扩展  -> 客户端分库分表 -> MySQL PXC -> mysql 中间件  -> mysql cluster

从库:一定要设置只读

MySQL Proxy部署   PXC部署(技术储备)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容