MySql主从配置(基本说明) + MySql主主配置

主从服务器要求版本一致,至少大版本一致; 演示主库ip:192.168.3.104    演示从库ip:192.168.3.103

一.主从配置

   1.修改主服务器(104)master

[root@bogon ~]# vim /etc/my.cnf
#在mysqld下面加入以下内容
[mysqld]
log-bin=mysql-bin   #启用二进制日志
server-id=104  #服务器唯一ID,默认是1,一般取IP最后一段
replicate-do-db=jeesite  #要同步的数据库
binlog-ignore-db=mysql #要忽略的数据库
binlog-ignore-db=test  #要忽略的数据库
expire_logs_days=7 #自动清理 7 天前的log文件,可根据需要修改

    2.修改从服务器(103)slave

[root@bogon ~]# vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin   #启用二进制日志
server-id=103       #服务器唯一ID,默认是1,一般取IP最后一段
replicate-do-db=jeesite #需要同步的数据库

    3.重启2台服务器

    4.在主库(104)上创建一个从库用来读取数据的账号,并查看主库的二进制日志名和偏移量

mysql> GRANT REPLICATION SLAVE ON *.* to 'mySql_103'@'192.168.3.103' identified by 'mySql_103';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      606 |              | mysql,test       |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

     5.在从库(103)上执行以下命令

#填入主库的ip/二进制文件名/偏移量,填入主库上开给从库的账户及密码
mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.3.104',
    -> MASTER_USER='mySql_103',
    -> MASTER_PASSWORD='mySql_103',
    -> MASTER_LOG_FILE='mysql-bin.000002',
    -> MASTER_LOG_POS=606;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

#启动从库
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

#查看是否配置成功(Slave_IO_Running与Slave_SQL_Running为YES说明配置成功)
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.3.104
                  Master_User: mySql_103
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 606
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: jeesite
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 

   


1.mysql复制介绍

标题
2.删除某个时间点之前的日志,示例(从服务执行)
  mysql>purge binary logs before '2018-07-19 12:00:00';

3.停止主从(从服务执行)
  mysql>stop slave;

4.删除从服务配置(从服务执行)
  mysql>reset slave;

5.重置主服务配置(主服务执行) 
  mysql>reset master;

 RESET MASTER将删除所有的二进制日志,创建一个.000001的空日志。RESET MASTER并不会影响SLAVE服务器上的工作状态,所以盲目的执行这个命令会导致slave找不到master的binlog,造成同步失败。

  建议在主服务配置中加入以下配置

  跳过指定类型的常见错误

  slave-skip-errors=1062,1053,1146

 不允许数据截断,如果从库类型大于主库类型,是可以复制的,反过了,就不行了,从库报复制错误,复制终止。

 slave_type_conversions=ALL_NON_LOSSY

至此,主从配置完成, 转载自:https://www.cnblogs.com/zhoujie/p/mysql1.html


二.主主配置(将上述主从反过来再配置一遍即可)

   1.修改104服务器(上述主库,现是从库)的配置

[root@bogon ~]# vim /etc/my.cnf
auto_increment_increment=2   #步进值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=1   #起始值。一般填第n台主MySQL。此时为第一台主MySQL

     2.修改103服务器(上述从库,现是主库)的配置

[root@bogon ~]# vim /etc/my.cnf
auto_increment_increment=2   #步进值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=2   #起始值。一般填第n台主MySQL。此时为第二台主MySQL

     3. 重启2台服务器

     4.在103服务器(上述从库,现是主库)上创建一个从库用来读取数据的账号,并查看主库的二进制日志名和偏移量

mysql>GRANT REPLICATION SLAVE ON *.* to mySql_104@'192.168.3.104' identified by 'mySql_104';
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 |     5031 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)

      5. 在从库104服务器(上述主库,现是从库)上执行以下命令

mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.3.103',
    -> MASTER_USER='mySql_104',
    -> MASTER_PASSWORD='mySql_104',
    -> MASTER_LOG_FILE='mysql-bin.000004',
    -> MASTER_LOG_POS=5031;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> start slave;
Query OK, 0 rows affected (0.02 sec)

在104上执行 

mysql>show slave status\G

在103上执行 

mysql>show slave status\G

 主主配置完成 转载地址:https://www.cnblogs.com/phpstudy2015-6/p/6485819.html


注意事项

     1、主主复制配置文件中auto_increment_increment和auto_increment_offset只能保证主键不重复,却不能保证主键有序。

     2、当配置完成Slave_IO_Running、Slave_SQL_Running不全为YES时,show slave status\G信息中有错误提示,可根据错误提示进行更正。

     3、Slave_IO_Running、Slave_SQL_Running不全为YES时,大多数问题都是数据不统一导致。

     常见出错点:

     1、两台数据库都存在db数据库,而第一台MySQL db中有tab1,第二台MySQL db中没有tab1,那肯定不能成功。

     2、已经获取了数据的二进制日志名和位置,又进行了数据操作,导致POS发生变更。在配置CHANGE MASTER时还是用到之前的POS。

     3、stop slave后,数据变更,再start slave。出错。

     终极更正法:重新执行一遍CHANGE MASTER就好了。

猜你喜欢

转载自blog.csdn.net/qq_34769161/article/details/88541505