我对MySQL / SQL的经验很少 - 总共n00b!
我有一个实时网站和开发网站,它们都由同一个ISP托管,但在不同的服务器上,即mysql1.foo.net和mysql2.foo.net。
我想弄清楚同步两个数据库的简单方法 - 无需导出整个东西擦除开发数据库并恢复。
答案 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,你可以使用这些列来完成任务。最终,您比我们更了解数据,因此是最佳解决方案。
这样做很难,但是你将节省大量的服务器时间。 加上它是版本控制服务器的好方法,因为每次数据类型即将被截断时它们都会抱怨。