XtraBackup不停机不锁表做MySQL主从复制的试验

2,159 阅读2分钟

环境:Centos6.5、MySQL5.7、XtraBackup2.4.13(经过测试、此版本适合MySQL5.7)

一、这里是先安装宝塔Linux5.9集成环境、之后再安装MySQL

# yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

二、安装XtraBackup ,rpm方式安装

# yum install perl-Time-HiRes
# yum install -y perl-DBD-MySQL
# yum install -y perl-Digest-MD5
# yum install -y rsync
# yum install -y numactl-devel
# wget ftp://rpmfind.net/linux/atrpms/el6-x86_64/atrpms/stable/libev-4.04-2.el6.x86_64.rpm
# rpm -ivh libev-4.04-2.el6.x86_64.rpm

# wget https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.13/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.13-1.el6.x86_64.rpm
# rpm -ivh percona-xtrabackup-24-2.4.13-1.el6.x86_64.rpm

三、配置主从数据库

1、主库配置my.cnf

[mysqld]
#增加server-id 和 bin-log
server-id = 198
log-bin = mysql-bin

2、主库配置授权账号

mysql> grant replication slave on *.* to root@‘192.168.199.198’ identified by '51562e6f6d044223';
mysql> flush privileges; 

3、从库配置my.cnf

[mysqld]
增加server-id 和 bin-log
server-id = 199
slave_skip_errors=1062 #1062是指跳过一些主键重复的错误

#如果需要在从库上做bin-log备份可以添加如下参数
log-bin = mysql-bin   
log-slave-updates = 1   
expire-logs-days=10

主从数据库都要重载配置

四、全量备份

[root@Centos]# xtrabackup --defaults-file=/etc/my.cnf --host=127.0.0.1 --user=root --password=51562e6f6d044223 --port=3306 --backup --target-dir=/www/backup/xtrabackup/

[root@Centos]# ls /www/backup/xtrabackup/

xtrabackup会把数据库datadir下的所有数据 文件都复制过来还新增了4个xtrabackup_开头的文件,xtrabackup_binlog_info这个录了做从库需要change到主库的binlog的位置和pos点

五、恢复数据到从库

1、停止从库 把主库备份文件拷贝到从库机器

[root@Centos]# scp -r xtrabackup/*   root@192.168.2.199:/www/server/data

2、修改恢复文件权限

[root@Centos]# chown -R mysql:mysql /www/server/data 

3、启动从数据库 确认数据是否恢复成功 登录从库,执行

mysql> show databases;

六、开启主从同步

1、确认同步的位置点 在从库上或者主库上都可以查看该信息,我们是在从库上查看

[root@Centos]# cat /www/server/data/xtrabackup_binlog_info 
mysql-bin.000010        301846

2、配置从库 主从配置 (注意3306端口的开放) #登录从库并执行

mysql> change master to master_host='192.168.2.198', master_user='root', master_password='51562e6f6d044223', master_port=3306, master_log_file='mysql-bin.000010' , master_log_pos=301846, master_connect_retry=30;

3、开始同步

mysql> start slave;

4、查看同步状态

mysql> show slave status;

当Slave_IO_Running 与 Slave_SQL_Running 两项都为Yes时,代表主从配置成功。