我设置了几个maraidb v10.2.10
容器官方 docker 镜像. 使用此 my.cnf,主机可以读/写,而从机是只读的。
[mysqld]
server_id=2
read_only=1
innodb_read_only=1
复制运行良好一段时间后因以下错误而停止:
Slave_IO_Running: Yes
Slave_SQL_Running: No
Last_Errno: 1942
Last_Error: Error during COMMIT: failed to update GTID state in mysql.gtid_slave_pos: 1036: Table 'gtid_slave_pos' is read only
我将此行添加到从属的 my.cnf 中并从头开始重新设置,但仍然出现相同的错误。
replicate-ignore-table=mysql.gtid_slave_pos
这是否意味着 Innodb 无法复制到innodb-read-only
服务器?
答案1
正如解释的那样这里从服务器应为只读。您确定没有人试图写入从服务器吗?检查 binlog 是否可用。
答案2
遇到了同样的问题。看起来innodb_read_only=1
阻止了复制。如果您只设置read_only=1
复制,则工作正常。
答案3
您要查找的设置是 read_only,而不是 innodb_read_only。后者不适用于您描述的用例,它旨在用于数据恢复操作。