我需要经常将我的MySQL服务器上的一个数据库复制到同一个MySQL服务器上的镜像数据库。
我正在编写一个bash脚本,它在一个单独的子域中生成我的Web应用程序(PHP / MySQL)的镜像。用户可以使用此镜像尝试各种疯狂的事情,而不会影响生产环境。该脚本应该每晚自动运行。
复制源代码很容易。我只是使用rsync -a
将所有内容从包含生产环境的目录复制到镜像目录,并应用补丁来更新一些配置文件。问题在于复制数据库,该数据库的大小已增加到近3 GB。
当我使用mysqldump live_db | mysql mirror_db
时,复制数据库需要永远。此外,在此期间CPU使用率达到100%并且我的Web应用程序变得非常慢。
数据库复制似乎不是一个选项,因为我只有一个MySQL服务器。复制需要两台服务器。
复制生产数据库的最佳方法是什么?它不一定非常快,但它不应该过多地影响系统的性能。当镜像脚本在后台运行时,人们仍然可以使用我的Web应用程序。
答案 0 :(得分:1)
我能想到的可能的解决方案:
1)购买更快的服务器
2)复制原始表。这不是理想的,但如果它只是为了测试可行。
我假设您正在使用MyISAM表,但以下是步骤:
/var/lib/mysql/production_schema
(或类似)复制到/var/lib/mysql/development_schema
。 rsync -a
(以root身份运行)可以用这个来实现。CHECK/REPAIR
development_schema
值得补充的是,我不会使用此方法将数据从一个生产环境复制到另一个生产环境,而无需在制作副本之前停止服务器。
3)考虑您是否需要开发环境中的所有生产数据。你能聪明一点,只复制一部分数据吗?
答案 1 :(得分:0)
如果您有MyISAM表,则可以使用mysqlhotcopy。