slave_net_timeout, MASTER_HEARTBEAT_PERIOD, MASTER_CONNECT_RETRY,以及 MASTER_RETRY_COUNT设置和查看
Posted on 2020-02-27 23:38 翔云123456 阅读(1371) 评论(1) 编辑 收藏 举报在主从复制中,有几个参数是非常重要的,包括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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现