我已经从现在作为主人的现场机器创build了一个从服务器。 我使用以下过程来创build它:
mysqldump --opt -Q -B --master-data=2 --all-databases > dump.sql
请注意,我有大约8000个数据库,并且在转储运行时我没有停止主数据库。
复制工作正常,但这是创build一个从服务器的正确方法? 我打算把这个奴隶推广到一个主人(不同的位置),所以我想确保服务器之间有100%的数据一致性。
我发现这篇文章说:
天真的方法就是使用mysqldump导出主服务器的副本并将其加载到从服务器上。 如果你只有一个数据库,这是有效的。 有了多个数据库,最终会得到不一致的数据。 mysqldump将从另一个事务中的服务器上的每个数据库转储数据。 这意味着您的导出将为每个数据库提供不同时间点的数据。
谢谢
您使用的方法(特别是--master-data=2选项)应该足以让您获得一致的转储,因为--master-data意味着--lock-all-tables (以及由此产生的针对数据库性能的攻击这是隐含的)。 应该遵守--lock-all-tables选项的mysqldump (1)联机帮助页中指定的注意事项。
我build议你所引用的文章要么在--lock-all-tables (或者是用--master-data隐式激活)之前编写,要么是由不能或不愿意阅读文档的人编写的。 您不妨查询作者以确定是哪种情况。