Xtrabackup 是 percona 的一个开源软件,可以热备份Innodb ,但是XtraDB,和MyISAM(会锁表)。所以在备份主库的时候需要注意库里面是否有MYISASM表,有的话,注意锁表问题。
主机系统:
CentOS 7.3
数据库:
MySQL 5.7
备份软件:
Xtrabackup 2.4.8
安装xtrabackup软件:
1.下载
https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.8/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm
2.安装
rpm -ivh percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm
可能需要的依赖包:
yum install perl-Digest-MD5 -y
yum install libev libev-devel -y
yum install perl-DBD-MySQL.x86_64 -y
3.完全备份数据库
innobackupex --defaults-file=/etc/my.cnf --user=backup --password='Aa@12345678' --socket=/var/lib/mysql/mysql.sock --no-timestamp /backup/mysql
--no-timestamp :不带--no-timestamp会在/backup/mysql目录下创建一个子目录。--no-timestamp跳过这个功能
4.完全备份传到新到从库(方法很多)
scp -r /backup/mysql db2:/data/
5.恢复数据库前准备操作
systemctl stop mysqld 一定要关闭数据库
my.cnf 配置文件 datadir 从新指定一个或者清空原本的数据目录
innobackupex --apply-log --parallel=4 /data/backup/mysql --no-timestamp
--parallel=4 指定数据传输线程总数。默认为1
(一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交单尚未同步至数据文件中的事务,因此,此时数据文件仍处理不一致状态,准备的主要作用正是通过回滚未提交的事务及同步以及提交的事务至数据文件也使得数据文件处于一致性状态。)
6.恢复数据库
innobackupex --copy-back /data/backup/mysql
160704 16:43:16 innobackupex: completed OK!
确保如上信息的最后一行出现“innobackupex: completed OK!”。
7.授权数据目录
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld
8.主库创建同步账户
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%' IDENTIFIED BY 'Aa@1234!';
9.查看备份二进制位置
cat /data/mysql/xtrabackup_binlog_info
mysql-bin.000125 12782
10.从库开启主从同步
change master to master_host='192.168.1.8,master_user='repl',master_password='Aa@1234!',
master_port=3306,master_log_file='mysql-bin.000125',master_log_pos=12782;
11.开启数据同步
start slave
12.查看数据同步
show slave status \G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
同步成功