我正在处理的站点有很多后端/cron 活动,因此每天每秒执行 5 到 15 个查询。这可以将页面加载速度减慢一秒或更长时间。
我在想最好的办法是创建两个数据库并每天同步它们。然而:
- 我不知道该怎么做
- 我担心同步会很慢并阻止数据库访问。我真的不喜欢让网站离线的想法,即使是凌晨 3 点 10 分钟。
所以我想知道:
- 单独的数据库是解决此问题的最佳解决方案,还是其他更好的解决方案?
- 如何在不过多干扰“用户体验”的情况下同步数据库?
非常感谢!
顺便说一句,在“可能”服务器上运行 PHP/MySQL。
根据您的评论,一种解决方案可能是进行主从复制设置(此处链接到 mysql 复制)
我会让后端成为主人,而前端成为奴隶。如果您的前端需要编写(联系表格、跟踪等),您将更新前端中的代码以从从站读取,并写入主站。
不利的一面是,根据负载,您的后端写入可能会延迟几秒钟或更长时间。但作为轶事,我有一个服务器每秒处理 120 个命令(平均值,由 munin 报告),并且从属服务器的落后时间不超过 3 秒。
使用只读从站。
将所有 SELECT 查询映射到那些只读从属。
将每个只读从站中的所有表转换为 MyISAM 存储引擎,并
ROW_FORMAT=FIXED
提供更快读取的选项使用分配主机。这会将执行 MySQL 复制的工作从发生主数据库写入的 DB Master 中移除。
如果您使用的是 MySQL 5.5,您可以使用半同步复制来尽可能地获取具有最小“Seconds_Behind_Master”的第一个从站。
您正在考虑“创建两个数据库并每天同步它们”,如果一个可以是只读从属设备,其他人建议这是可行的 - 但是如果两者都需要读写,那么您将进入多主复制,这是一个雷区至少。在那种情况下,将更昂贵的硬件用于解决问题很可能最终会更便宜。