centos6.5 mysql5.7.24主从复制 +主主复制

本文详细介绍了如何在CentOS6.5环境下,使用MySQL5.7.24进行主从复制及主主复制的配置步骤。包括设置binary log、数据库同步、用户授权、配置文件修改和状态检查等关键步骤,确保数据在两台服务器间双向安全备份。
摘要由CSDN通过智能技术生成

准备条件:

两台虚拟机(192.168.2.251,192.168.2.252),mysql都是5.7.24版本,以A B 区分

1,我们先以A服务器为起点,  配置它的数据库同步到B。  这就是主-从复制了。 之后再反过来做一次,就可以互相备份了。

#不要再客户端执行,我的就说没权限。

grant replication slave on *.* to 'mysql2'@'192.168.2.252' identified by 'mysql2';

账号密码这个等会在B上面要用。

2. 开启主服务器的 binarylog。

vi /etc/my.cnf

添加以下内容

server-id = 1
auto-increment-increment = 2
auto-increment-offset = 1

explicit_defaults_for_timestamp = 1
character_set_server=utf8
interactive_timeout = 57600
log-bin = mysql-bin

expire-logs-days = 100
#replicate-do-db  = wang               #需要同步的数据库
binlog-ignore-db  = mysql
binlog-ignore-db  = sys
binlog-ignore-db  = information_schema
binlog-ignore-db  = performance_schema
slave-skip-errors=all
log-slave-updates
symbolic-links=0 
skip-name-resolve

保存,重启!

3.  获取主服务器状态, 和同步初态。

假设我现在有这些数据库在A上面。

如果你是全新安装的, 那么不需要同步初态,直接跳过这一步,到后面直接查看主服务器状态。

这里我们假设有一个test 数据库作为初态。

先锁定 test数据库:

mysql>FLUSH TABLES WITH READ LOCK;

然后导出数据

[root@mysql1 home]# mysqldump --master-data -uroot -p test>/home/test.sql
Enter password: 

然后查看A服务器的binary日志位置:

记住这个文件名和 位置, 等会在从服务器上会用到。

mysql> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.000004
         Position: 462
     Binlog_Do_DB: 
 Binlog_Ignore_DB: mysql,sys,information_schema,performance_schema
Executed_Gtid_Set: 
1 row in set (0.00 sec)

File  position会用到

主服务器已经做完了, 可以解除锁定了:

mysql> unlock tables
    -> ;
Query OK, 0 rows affected (0.00 sec)

4.  设置从服务器 B 需要复制的数据库

打开从服务器 B 的 /etc/my.cnf 文件:

添加以下内容:

server-id = 2
character_set_server=utf8
interactive_timeout = 57600
log-bin = mysql-bin
expire-logs-days = 100

#replicate-do-db = wang
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=performance_schema
replicate-ignore-db=information_schema 
slave-skip-errors=all
log-slave-updates
symbolic-links=0
skip-name-resolve         

保存,重启!

5. 导入初态, 开始同步。

把刚才从A服务器上导出的test.sql 导入到 B的test数据库中, 如果B现在没有test数据库,请先创建一个, 然后再导入:

创建数据库:

mysql> create database test default charset utf8;

把hello.sql 上传到B上, 然后导入:

[root@mysql2 ~]# mysql -uroot -p test < /home/test.sql

开启同步, 在B服务器上执行:

mysql> CHANGE MASTER TO 
       MASTER_HOST='192.168.2.251', 
       MASTER_USER='mysql1', 
       MASTER_PASSWORD='mysql1', 
       MASTER_LOG_FILE='mysql-bin.000004', #和上面保持一致
       MASTER_LOG_POS=462;#和上面保持一致

重启mysql,  然后查看slave线程开启了没:

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.2.251
                  Master_User: mysql2
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 154
               Relay_Log_File: mysql2-relay-bin.000003
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

   Slave_IO_Running: Yes
  Slave_SQL_Running: Yes

这两个参数都是Yes 证明成功!

主从复制大功告成!

下面反配置,就是主主复制。

1. 在B中创建用户;

grant replication slave on *.* to 'mysql1'@'192.168.2.251' identified by 'mysql1';

账号密码这个等会在A上面要用。

2. 开启主服务器B的 binarylog。

vi /etc/my.cnf

添加以下内容(回头看看上面)

server-id = 2
character_set_server=utf8
interactive_timeout = 57600
log-bin = mysql-bin
expire-logs-days = 100

#replicate-do-db = wang
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=performance_schema
replicate-ignore-db=information_schema 
auto-increment-increment = 2
auto-increment-offset = 2
binlog-ignore-db  = mysql
binlog-ignore-db  = sys
binlog-ignore-db  = information_schema
binlog-ignore-db  = performance_schema
slave-skip-errors=all
log-slave-updates
symbolic-links=0
skip-name-resolve         

3. 我们不需要导出B的初态了,因为它刚刚才从A导过来。  直接记住它的master日志状态:

mysql> show master status \G
*************************** 1. row ***************************
             File: mysql-bin.000004
         Position: 798
     Binlog_Do_DB: 
 Binlog_Ignore_DB: mysql,sys,information_schema,performance_schema
Executed_Gtid_Set: 
1 row in set (0.00 sec)

记住这两个数值,等会在A上面要用。

B服务器就设置完了。

4. 登录到A 服务器。 开启中继:

vi /etc/my.cnf

添加以下内容(回头看看上面)

server-id = 1
auto-increment-increment = 2
auto-increment-offset = 1

explicit_defaults_for_timestamp = 1
character_set_server=utf8
interactive_timeout = 57600
log-bin = mysql-bin

expire-logs-days = 100
#replicate-do-db  = wang               #需要同步的数据库
binlog-ignore-db  = mysql
binlog-ignore-db  = sys
binlog-ignore-db  = information_schema
binlog-ignore-db  = performance_schema
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=performance_schema
replicate-ignore-db=information_schema 
slave-skip-errors=all
log-slave-updates
symbolic-links=0 
skip-name-resolve

5. 启动同步:

mysql> CHANGE MASTER TO 
    ->        MASTER_HOST='192.168.2.252', 
    ->        MASTER_USER='mysql1', 
    ->        MASTER_PASSWORD='mysql1', 
    ->        MASTER_LOG_FILE='mysql-bin.000004', 
    ->        MASTER_LOG_POS=798;

上面的ip地址是B的ip地址, 因为A把B当做master了

然后重启mysql服务。

然后查看,slave状态是否正常:

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.2.252
                  Master_User: mysql1
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 483
               Relay_Log_File: mysql1-relay-bin.000003
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes

两个参数都是Yes,证明成功!

主主复制大功告成

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值