slave_net_timeout, MASTER_HEARTBEAT_PERIOD, MASTER_CONNECT_RETRY,以及 MASTER_RETRY_COUNT設置和查看


在主從復制中,有幾個參數是非常重要的,包括slave_net_timeout, MASTER_HEARTBEAT_PERIOD, MASTER_CONNECT_RETRY,以及 MASTER_RETRY_COUNT。

  • slave_net_timeout表示slave在slave_net_timeout時間之內沒有收到master的任何數據(包括binlog,heartbeat),slave認為連接斷開,需要重連。默認值60s。

  • MASTER_HEARTBEAT_PERIOD表示心跳的周期。當MASTER_HEARTBEAT_PERIOD時間之內,master沒有binlog event發送給slave的時候,就會發送心跳數據給slave。

  • MASTER_CONNECT_RETRY表示重連的時間間隔。
    slave_net_timeout超時后,立刻重連,后續重連的時間間隔由 CHANGE MASTER TO 命令的MASTER_CONNECT_RETRY 參數指定。默認值60s。

  • MASTER_CONNECT_RETRY表示重連的最大次數。默認值86400次。

下面就介紹下這些參數的如何查看和設置。

1.slave_net_timeout的查看和設置

查看slave_net_timeout可以使用如下方式:

mysql> select @@global.slave_net_timeout;
+----------------------------+
| @@global.slave_net_timeout |
+----------------------------+
|                         60 |
+----------------------------+
1 row in set (0.00 sec)

或者

mysql> show variables like 'slave_net_timeout';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| slave_net_timeout | 50    |
+-------------------+-------+
1 row in set (0.00 sec)

設置slave_net_timeout:

mysql> set global slave_net_timeout=50;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'slave_net_timeout';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| slave_net_timeout | 50    |
+-------------------+-------+
1 row in set (0.00 sec)

2.MASTER_HEARTBEAT_PERIOD, MASTER_CONNECT_RETRY,以及 MASTER_RETRY_COUNT

2.1設置

MASTER_HEARTBEAT_PERIOD
MASTER_HEARTBEAT_PERIOD通過change master to 命令設置。
change master to 不帶heartbeat參數,默認被設置成slave_net_timeoute的一半。當slave_net_timeoute改變時,不會修改heartbeat。
需要注意兩點:

  • 如果將MASTER_HEARTBEAT_PERIOD 設置的比slave_net_timeout大,當主庫沒有數據發送到從庫時,從庫就會頻繁重連主庫。
  • 如果MASTER_HEARTBEAT_PERIOD設置為0,表示禁用heartbeat,當主庫沒有數據發送到從庫時,從庫也會頻繁重連主庫。

MASTER_RETRY_COUNT
MASTER_RETRY_COUNT可以通過命令行參數--master-retry-count 設置,也可以通過change master to的方式設置。
不推薦使用前者,鼓勵使用change master to。

MASTER_CONNECT_RETRY
MASTER_CONNECT_RETRY 通過change master to 命令設置。

2.2 查看

從庫上 執行show slave status,可以查看Master_Retry_Count,Connect_Retry等,以及更多主從復制信息Master_Info_File的存放位置。

>show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: xr-dba-mysql-hazyytest-test01
                  Master_User: XXXX
                  Master_Port: 5002
                Connect_Retry: 10
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 488
               Relay_Log_File: relay.000002
                Relay_Log_Pos: 698
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 488
              Relay_Log_Space: 892
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 48201050
                  Master_UUID: 10035945-ddeb-11e9-89f3-0022ac533a2f
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set: 10035945-ddeb-11e9-89f3-0022ac533a2f:1-2
            Executed_Gtid_Set: 10035945-ddeb-11e9-89f3-0022ac533a2f:1-2
                Auto_Position: 1
1 row in set (0.00 sec)

從上面結果可以看到,Master_Info_File存放在數據表中:
Master_Info_File: mysql.slave_master_info

接着通過查詢數據表,查看這幾個參數:

>select * from mysql.slave_master_info\G
*************************** 1. row ***************************
       Number_of_lines: 23
       Master_log_name: mysql-bin.000001
        Master_log_pos: 488
                  Host: xr-dba-mysql-hazyytest-test01
             User_name: XXX
         User_password: XXXX
                  Port: 5002
         Connect_retry: 10
           Enabled_ssl: 0
                Ssl_ca:
            Ssl_capath:
              Ssl_cert:
            Ssl_cipher:
               Ssl_key:
Ssl_verify_server_cert: 0
             Heartbeat: 8
                  Bind:
    Ignored_server_ids: 0
                  Uuid: 10035945-ddeb-11e9-89f3-0022ac533a2f
           Retry_count: 86400
               Ssl_crl:
           Ssl_crlpath:
 Enabled_auto_position: 1
1 row in set (0.00 sec)

這里,Connect_retry為10,Heartbeat為8,Retry_count 為86400。

>select Connect_retry,Heartbeat, Retry_count from mysql.slave_master_info;
+---------------+-----------+-------------+
| Connect_retry | Heartbeat | Retry_count |
+---------------+-----------+-------------+
|            10 |         8 |       86400 |
+---------------+-----------+-------------+
1 row in set (0.00 sec)

另外,這幾個參數是配置在從庫上的,主庫上執行查詢命令,結果是空的。

>select Connect_retry,Heartbeat, Retry_count from mysql.slave_master_info;
Empty set (0.00 sec)

在MySQL5.7版本中,還可以在replication-connection-configuration-table中查看這幾個參數。

> select * from performance_schema.replication_connection_configuration\G
*************************** 1. row ***************************
                 CHANNEL_NAME:
                         HOST: 10.23.66.88
                         PORT: 5002
                         USER: repl
            NETWORK_INTERFACE:
                AUTO_POSITION: 1
                  SSL_ALLOWED: NO
                  SSL_CA_FILE:
                  SSL_CA_PATH:
              SSL_CERTIFICATE:
                   SSL_CIPHER:
                      SSL_KEY:
SSL_VERIFY_SERVER_CERTIFICATE: NO
                 SSL_CRL_FILE:
                 SSL_CRL_PATH:
    CONNECTION_RETRY_INTERVAL: 60
       CONNECTION_RETRY_COUNT: 86400
           HEARTBEAT_INTERVAL: 60.000
                  TLS_VERSION:
1 row in set (0.01 sec)

3.參考

slave_net_timeout

change master to

replication-connection-configuration-table


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM