我在这里发布这个是因为它是更多关于 mysql 的问题而不是 c#,我编写了一些软件,在第一次启动时运行 mysql 的本地实例,现在一旦 mysql 启动,我想同步远程数据库表和软件运行的本地数据库表之间的数据(它不应该同步任何其他数据库/表,因为有很多)。
我已经设置了复制以将整个数据库同步到另一台服务器,除非服务器宕机,否则它永远不会重新启动,所以基于这一点,我认为复制不会起作用,因为当软件关闭时它也会关闭 MySQL。
那么同步远程和本地数据库的最佳方法是什么?
答案1
您可以通过调整超时并重新发出“STOP SLAVE”和“START SLAVE”命令来使 MySQL 主/从复制正常工作。在从属配置文件中,您可以将从属网络超时设置为认为连接断开后的秒数,并将主连接重试设置为尝试重新连接之间应暂停的秒数。两者都设置为 86400 秒,即 1 天。例如,您可以像这样尝试 30 秒:
slave-net-timeout = 30
master-connect-retry = 30
另一种方法是尝试类似的解决方案SymmetricDS 数据库同步或 Tungsten。我曾在网络缓慢甚至有时不可用的情况下使用 SymmetricDS,它会自动恢复。它可以作为独立的复制服务器运行,也可以嵌入并从应用程序中进行控制。