明人不说暗话,直接进入正题
一、准备工作
假设两个服务器IP如下:
主服务器:44.92.163.112 -Linux
从服务器:114.74.22.11 -Linux
注意:
1、主从数据库版本最好一致;
2、主从数据库内数据保持一致;
3、主从服务器要保证同步服务期间的网络联通,即ip可以相互ping通。
二、安装percona-xtrabackup
推荐rpm安装:https://www.percona.com/downloads/XtraBackup/LATEST/
我这里选择2.2.12版本的,Linux下64位。
下载好后,通过xftp将安装包分别放入主服务器和从服务器目录下进行安装。
输入命令:
[root@iz java]# yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL perl-Digest-MD5
[root@iz java]# rpm -Uvh percona-xtrabackup-2.2.12-1.el7.x86_64.rpm
三、备份和恢复
主服务器配置:
1、备份
[root@iz java]# innobackupex --socket=/tmp/mysql.sock --user=root --password=kapphk --defaults-file=/etc/my.cnf --parallel=4 --database=passport /tmp/backup
2、保持事务一致性
#2018-09-10_11-53-17:上一条命令执行后生成的文件夹名称
[root@iz java]# innobackupex --socket=/tmp/mysql.sock --user=root --password=kapphk --defaults-file=/etc/my.cnf --database=passport --apply-log /tmp/backup/2018-09-10_11-53-17
3、传输
#在主服务器使用scp命令远程复制数据到从服务器
[root@iz ~]# scp -r /tmp/backup/2018-09-10_11-53-17 [email protected]:/tmp/backup
从服务器配置:
1、恢复
#注:恢复的时候data目录不能有任何数据,所以恢复前先备份原数据库数据:
[root@iZ94byqpectZ ~]# mv /usr/local/mysql/data /tmp/data_bak
2、把主的数据导入到从
[root@iZ94byqpectZ ~]# innobackupex --socket=/tmp/mysql.sock --user=root --password=kapphk --defaults-file=/etc/my.cnf --copy-back /tmp/backup/2018-09-10_11-53-17/
3、还原从数据库原有数据
(在/usr/local/mysql目录下新创建一个data文件夹,将data_bak下的数据库目录复制到data下即可,如:)
[root@iZ94byqpectZ ~]# cp –rpf /tmp/data_bak/mysql /usr/local/mysql/data
4、还原从数据库权限
[root@iZ94byqpectZ mysql]# chown -R mysql .
[root@iZ94byqpectZ mysql]# service mysqld start
[root@iZ94byqpectZ mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
5、重启数据库服务
[root@iZ94byqpectZ mysql]# service mysqld restart
四、同步配置
主服务器配置:
主库授权于同步帐号
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_passport'@'114.74.22.11' IDENTIFIED BY 'slave_passport';
mysql> FLUSH PRIVILEGES;
从服务器配置:
1、从库开启同步
[root@iz ~]# cat /tmp/backup/2018-09-10_11-53-17/xtrabackup_binlog_info
mysql-bin.000007 302322
mysql> CHANGE MASTER TO
-> MASTER_HOST='44.92.163.112',
-> MASTER_USER='slave_passport',
-> MASTER_PASSWORD='slave_passport',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='mysql-bin.000007',
-> MASTER_LOG_POS=302322;
2、开启主从同步
mysql> start slave;
#查看从库状态
mysql> show slave status\G;
显示如下,则开启成功!
#查看当前对应的 MySQL 帐户的运行线程
mysql> show processlist;
到此,配置完成!