当前位置: 代码迷 >> 综合 >> Linux下配置MySQL主从同步(不复杂,简单明了)
  详细解决方案

Linux下配置MySQL主从同步(不复杂,简单明了)

热度:67   发布时间:2023-11-19 17:20:32.0

明人不说暗话,直接进入正题

一、准备工作

假设两个服务器IP如下:

主服务器:44.92.163.112    -Linux

从服务器:114.74.22.11     -Linux


注意:

1、主从数据库版本最好一致;

2、主从数据库内数据保持一致;

3、主从服务器要保证同步服务期间的网络联通,即ip可以相互ping通。

二、安装percona-xtrabackup 

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]# yum -y install rsync perl 
[root@iz java]# rpm -Uvh percona-xtrabackup-2.2.12-1.el7.x86_64.rpm

三、备份和恢复

主服务器配置:

1、备份

    先在/tmp目录下创建一个文件夹,这里命名为backup

[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命令远程复制数据到从服务器,预先在从服务器/tmp目录下也创建一个backup文件夹
[root@iz ~]# scp -r /tmp/backup/2018-09-10_11-53-17 root@114.74.22.11:/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 -r /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、保持从库和主库的server_id不一致

#编辑my.cnf文件,添加以下两行配置
[root@iZ94byqpectZ mysql]# vim /etc/my.cnf#主从库的server_id值不能冲突,打开/etc/my.cnf文件,将server_id的值修改成2(如果主库的server_id=1的话)
server_id = 2
#在主从的/etc/my.cnf文件中都要加上这个属性值:sync_binlog = 1
sync_binlog = 1

6、重启数据库服务

[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	302322mysql> 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;

到此,配置完成!

 

 

  相关解决方案