我已经创建了一个 mysql 主从配置,一切看起来都很好。“显示主人状态;” 从站上没有显示任何错误。这是输出
Slave_IO_State: Waiting for master to send event
Master_Host: 109.123.100.58
Master_User: replica
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 106
Relay_Log_File: relay-bin.000001
Relay_Log_Pos: 4
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: 106
Relay_Log_Space: 106
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:
Run Code Online (Sandbox Code Playgroud)
然而,当主服务器发生变化时,从服务器上的复制似乎没有发生
在主人上。显示主状态
+------------------+----------+--------------+-------------------------+
| File | Position | Binlog_Do_DB | …
Run Code Online (Sandbox Code Playgroud) 我想运行一个半同步复制设置,为了简单起见,当从站提升为主站时,我不想安装和卸载插件。所以我想知道如果我将体验任何问题都安装并启用主机和从机插件(见这里)
看起来在安装第二个插件后,两个变量rpl_semi_sync_master_enabled
和rpl_semi_sync_slave_enabled
都被重置为关闭(非默认值)。当我将这些行包含在my.cnf
:
loose-rpl_semi_sync_master_enabled = 1
loose-rpl_semi_sync_slave_enabled = 1
Run Code Online (Sandbox Code Playgroud)
...并重新启动 MySQL,两个插件都已加载并启用。
这会给我带来任何问题吗?
我正在研究MySQL Semisynchronous Replication,我对工作流程的理解如下:
rpl_semi_sync_master_timeout
几毫秒以接收来自至少一个从站的确认我的问题是,在任何时候,这种类型的复制都确保事务在从属上执行(SQL_TREAD
应用它)。考虑到它会在每个事务上增加延迟,并且在 master 失败的情况下,不能 100% 保证 slave 与 master 一致,使用这种类型的复制有什么好处?