作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 2 个数据库 X“生产”和 Y“测试”
数据库 X 的结构应与 Y 相同。但是,他们并不是因为我的疯狂而对制作进行了很多改动。现在,我需要以某种方式导出 X 并将其导入 Y 而不会破坏任何复制。
我正在考虑执行 mysql 转储,但我不想对复制提出任何问题,这就是我问这个问题以确认的原因。
这是我要遵循的步骤
这会导致复制出现任何问题吗?
我相信转储将执行所有内容并将其保存到它的 bin 日志中,从属设备将能够看到它并毫无问题地复制它。
我正在尝试做的是正确的吗?它会导致任何复制问题吗?
谢谢
最佳答案
是的,从 X 备份并恢复到 Y 是正常操作。我们通常称之为“重新初始化副本”。
这会中断复制。没有可靠的方法可以在让副本继续应用更改的同时恢复数据,因为副本正在处理的更改与备份所代表的数据快照不同步。您可能会覆盖已更改的数据,或错过更改,这会使副本完全不同步。
因此您必须在恢复时停止副本上的复制。
以下是典型副本重新初始化的步骤:
--master-data
选项,因此转储包括转储时当前的二进制日志位置。CHANGE MASTER
更改副本起始的二进制日志坐标。使用保存在转储中的坐标。回复你的评论:
好的,我现在更清楚你需要什么了。
是的,mysqldump --no-data
有一个选项,所以输出只包括 CREATE TABLE 和其他 DDL,但没有包含数据的 INSERT 语句。然后您可以将其导入到同一台服务器上的单独数据库中。你是对的,默认情况下 DDL 语句被添加到二进制日志中,因此任何复制副本都会自动运行相同的语句。
您甚至可以像这样只需两步即可完成导出和导入:
$ mysqladmin create newdatabase
$ mysqldump --no-data olddatabase | mysql newdatabase
关于replication - mysql转储会破坏复制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21124320/
我是一名优秀的程序员,十分优秀!