在不同服务器上同步两个mysql数据库(同一个ISP)

时间:2011-06-04 08:21:17

标签: mysql sql

我对MySQL / SQL的经验很少 - 总共n00b!

我有一个实时网站和开发网站,它们都由同一个ISP托管,但在不同的服务器上,即mysql1.foo.net和mysql2.foo.net。

我想弄清楚同步两个数据库的简单方法 - 无需导出整个东西擦除开发数据库并恢复。

4 个答案:

答案 0 :(得分:1)

恐怕没有“简单”的解决方案。除了在夜间转储生产和恢复的相当小的数据库。 Small被定义为对备份恢复操作采用<12小时,这仍然非常大。

复制可能不会削减它,因为只读副本的值有限,我假设您不希望dev db上的更改传播到prod。

转储 - 恢复(如果可行)有优势 - 您定期测试备份实际工作 - 您需要定期编写和测试架构迁移脚本 - 你需要让他们“不干涉”,这样他们就可以作为一个cron工作

这些实践使IT运营的生活变得更加轻松,并且可以很好地降低风险,使客户能够更好地入睡。

在大型数据库上,我认为没有简单(或便宜!)的方法。

答案 1 :(得分:0)

MySQL支持master + slave和master + master复制,但是你的托管服务提供商需要为你设置它。

如果您有兴趣,请点击此处了解更多信息: http://www.howtoforge.com/mysql_master_master_replication

如果你想偶尔将两者同步一次,只需使用:

mysqldump -h server1.example.com -u user -p password database | mysql -u user -p database

答案 2 :(得分:0)

除了复制之外,您还应该从MySQl Utilities中查看MySQLdbcopy。您的数据库可能足够小,可以使用MySQLdbcopy进行复制,您可以将其放在自动化的cron作业中

答案 3 :(得分:0)

我已经看到这个问题通过创建每晚只从表到表移动新信息的作业或15分钟来解决,具体取决于它是备份服务器还是报告服务器。

存在的问题主要是由于如何填充标识列,但除了设计问题之外,这样的过程可以为您提供良好的速度。听起来这两个盒子彼此接近,所以数据传输率应该没问题。

我会通过创建一个ssis作业来解决它,你可以使用各种工具,但你必须确保表中有一些东西可以用来识别什么是新数据。时间戳不能用,因为进程花费的时间超过一秒,这使得它不可靠,我会设置导出列,或者如果表足够小,你的索引每个表少于3 GB,你可以使用这些列来完成任务。最终,您比我们更了解数据,因此是最佳解决方案。

这样做很难,但是你将节省大量的服务器时间。 加上它是版本控制服务器的好方法,因为每次数据类型即将被截断时它们都会抱怨。

相关问题