mysql - 如何合并使用转储文件创建的同一表的不同版本

标签 mysql

我在两台不同的计算机上使用相同的数据库,并且需要使它们保持同步。

当我在一台计算机上完成工作时,我会创建一个数据库转储文件,以便我可以使用指令将其导入另一台计算机:

mysqldump -u username -p DataBaseName TableName > Table.dump

我的问题是,当我在某些表中插入元素时,它们的主键可能已经分配给我的另一台计算机上数据库的同一表的元素。

我想知道如何插入我在问题 How can I merge two MySQL tables? 中找到的说明在我创建的转储文件中,以便为重复条目分配新的主键值,而不会丢失表的数据。

我想避免创建转储文件的行为,这将完全删除感兴趣表的先前版本,如下引用:

DROP TABLE IF EXISTS `TableName`;
CREATE TABLE `TableName` (
    ...
) ENGINE=MyISAM AUTO_INCREMENT=6512 DEFAULT CHARSET=utf8;

最佳答案

作为替代方案,您可以使用 MySQL 的增量和偏移设置,这些设置通常用于自动主到主复制,其中数据无需执行 mysqldump 即可同步。或者,如果适合您的情况,您实际上可以设置主到主复制。

在服务器 A 上,使用以下设置:

auto-increment-offset=1
auto-increment-increment=2

在服务器 B 上,使用以下设置:

auto-increment-offset=2
auto-increment-increment=2

以下是一份描述主到主复制设置的指南:Dual-Master MySQL 5 Replication Done Right .

关于mysql - 如何合并使用转储文件创建的同一表的不同版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8286536/

相关文章:

php - 错误处理时数据库查询错误

php - mysqli_query SELECT FROM WHERE [部分匹配]?

mysql 创建用户

Python 和 MySQLDB 连接到网络上的另一台服务器

mysql - 我如何从 2 表中减去乘数行?数据库

java - 在 spring MVC 中将图像上传到服务器并将引用存储在 mysql 数据库中

mysql - 使用 UNION ALL 进行慢速查询

php - codeigniter 和 DataMapper。不同服务器上的关系表如何?

php - 在 PHP 中选择一行并将该数据放入表单/文本字段中

mysql - 重启服务器后保留内存数据库的自增值