我已经从实时机器创建了一台从服务器,现在它充当主服务器。我使用以下步骤来创建它:
mysqldump --opt -Q -B --master-data=2 --all-databases > dump.sql
- 然后我在新机器上导入了这个转储,并使用转储中的日志文件/位置应用了“CHANGE MASTER TO...”指令。
请注意,我有大约 8000 个数据库,并且在转储运行时我没有停止主数据库。
复制工作正常,但这是创建从服务器的正确方法吗?我计划将此从服务器提升为主服务器(不同位置),因此我想确保服务器之间有 100% 的数据一致性。
我发现这文章中写道:
最简单的方法是使用 mysqldump 导出主服务器的副本并将其加载到从属服务器上。如果您只有一个数据库,这种方法是可行的。如果有多个数据库,您最终会得到不一致的数据。Mysqldump 将在不同的事务中转储服务器上每个数据库的数据。这意味着您的导出将包含每个数据库不同时间点的数据。
谢谢
答案1
您使用的方法(特别是--master-data=2
选项)应该足以让您获得一致的转储,因为--master-data
暗示--lock-all-tables
(以及由此产生的对数据库性能的暗示)。应遵守选项mysqldump
的 (1) 手册页中指定的警告。--lock-all-tables
我认为您引用的文章要么是在 可用之前编写的--lock-all-tables
(或隐式激活--master-data
),要么是由没有能力或不愿意阅读文档的人编写的。您可能希望询问作者以确定是哪种情况。