天天看點

MySql主從配置(基本說明) + MySql主主配置

主從伺服器要求版本一緻,至少大版本一緻; 示範主庫ip:192.168.3.104    示範從庫ip:192.168.3.103

一.主從配置

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

[[email protected] ~]# 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

[[email protected] ~]# 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複制介紹

MySql主從配置(基本說明) + 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伺服器(上述主庫,現是從庫)的配置

[[email protected] ~]# vim /etc/my.cnf
auto_increment_increment=2   #步進值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=1   #起始值。一般填第n台主MySQL。此時為第一台主MySQL
           

     2.修改103伺服器(上述從庫,現是主庫)的配置

[[email protected] ~]# 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 [email protected]'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

MySql主從配置(基本說明) + MySql主主配置

在103上執行 

mysql>show slave status\G

MySql主從配置(基本說明) + MySql主主配置

 主主配置完成 轉載位址: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就好了。

繼續閱讀