mysql 5.7 环境,两台数据库服务器设定主从同步,从数据库设定全局只读(如果不设定只读偶尔同步失败或人为修改数据导致两库内容不一会很麻烦),一般情况没有什么问题,有天从数据库查询量增加,导致未及时接收主数据库过来的数据,反而导致主数据库不能写入,前台效果就是户不能修改数据,但处理这个很简单:
show slave status
显示下面错误
Last_Error: Slave SQL thread retried transaction 10 time(s) in vain, giving up. Consider raising the value of the slave_transaction_retries variable.
解决办法:
stop slave; -- 执行后等一下再执行 start 好些,只是个人感觉,实际好像没有用
start slave;
show slave status\G;
上述master等待行为都发生在rpl_semi_sync_master_wait_no_slave=ON(默认值)情况下。如果rpl_semi_sync_master_wait_no_slave设置为OFF时,连接master的slave的数量少于rpl_semi_sync_master_wait_for_slave_count设置的值,master不会等待超时,立刻自动降为异步复制模式。
set global rpl_semi_sync_master_wait_no_slave=OFF;