我已经完成了主从复制,用于执行 Web 服务器镜像。Web 内容正在正确复制。但我在数据库复制中遇到了问题。数据库已复制,从服务器也可以读取主日志位置。我看过各种博客,认为跳过错误是一种解决方案,但它对我们的环境不利,因为它会失去数据库一致性。我尝试通过在从属数据库 my.cnf 中使用 read-only=1 使从属数据库变为只读,但没有成功。我只是想知道即使在进行全新复制后,数据库表数据是如何被复制的。
错误:
Last_Error:查询时出现错误“键‘PRIMARY’的重复条目‘155251’”。默认数据库:...............
答案1
此消息意味着您尝试插入的条目已经存在于从属设备上。
首先,查看主日志文件是否存在错误。如果是这种情况,则问题不在复制级别。
因此,如果主服务器上没有出现错误,则应重复转储/恢复循环。
为了确保一致性,您需要停止写入(设置全局只读 = 1;),同时转储整个数据库。转储完成后,您可以禁用 read_only。请确保包括--单事务--添加删除数据库--主数据作为 mysqldump 的选项。
--add-drop-database :在恢复之前删除从属服务器上的数据库。这样就没有任何可以破坏一致性的东西了
--master-data :包含主文件和主位置。无需手动插入
不要忘记启动从站;从属设备上的恢复部分完成后!
希望这会有所帮助 ;)