为了工作,我应该设置 2 个服务器(raspberry pi 3 debian)的主-主复制,我这样做了,并且它可以工作,但现在我来到了一个问题,为什么我们在 1srt 位置设置副本:服务器 1 是主服务器,服务器 2 应该是备份,以防服务器 1 由于 X 原因关闭,并且客户端仍然可以访问数据库并继续在其上写入。
但是当服务器 1 修复并重新启动时会发生什么?它会自动与服务器 2(现在具有更多信息、表格等)同步吗?我是否必须编写命令使其同步并获取所有缺失的数据?
知道数据库大约有 20,000,000 行代码并且很重,我无法手动完成此操作,我需要自动完成,或者至少编写某种脚本来设法一次同步所有数据而不是逐行同步。
我根本不是 Linux 专家,我去年十月才开始研究它,所以有些概念对我来说相当模糊
谢谢您的帮助 !
答案1
感谢您的回答 !
我想我明白您想说什么,但是这意味着在故障服务器上执行“ CHANGE MASTER TO master_host.....Blahblah ”并使用新的日志文件和日志位置“在服务器 2 上使用具有附加内容的“显示主状态”?
这是否应该调用服务器 2 上故障服务器 1 的同步?
因为我尝试使用“ sudo shutdown -h now ”模拟关闭服务器 1
然后将一些数据添加到已经存在的表中。
然后我重新启动了服务器 1,问题就出现了:
首先,我的 MySQLi php 扩展消失了,我不得不重新安装它,因为我无法再访问 phpmyadmin(不知道为什么,也许是关机把它删掉了)
当我在故障服务器 1 上执行“ Show slave status\G; ”时,它显示:
Last_Errno: 1 Last_Errno: BlahBlah “引用我在关机时在服务器 2 中添加的内容,并指向它。
而这两者不再同步,但在这一点上( http://msutic.blogspot.fr/2015/02/mariadbmysql-master-master-replication.html) 我遵循的教程据说它会在重新启动时自行赶上。
因此,我删除了我添加的内容,并在故障服务器 1 上执行了停止从属/更改主服务器/启动从属操作,但我仍然必须删除添加的数据,所以这根本不是我想要的......
答案2
标准复制大多是自动的,因此如果主/从服务器短时间停止,应该有足够的日志来同步停止的服务器和正在运行的服务器。这取决于服务器停止的时间、数据变化率、二进制日志的大小以及保留它们的时间。在绝对最坏的情况下,最好的解决方案始终是转储并重新同步,但您可以通过查看来快速判断SHOW SLAVE STATUS
。