虽然执行MySQL转储非常简单,但我有一个活动的专用MySQL服务器,我想在其上设置复制。为此,我需要将数据库的转储导入到我的replication slave。
当我做转储时,问题就来了,MySQL全力以赴,将资源捆绑到连接到它的站点上。我想知道是否有一种方法可以将转储查询限制在低优先级状态,该状态优先于活动连接。这个想法是,来自外部站点的负载不会受到MySQL执行完全转储的努力的影响……
发布于 2011-10-14 22:08:46
如果使用InnoDB表,请使用mysqldump的--single-transaction和--quick选项
发布于 2020-05-26 03:41:25
1)首先,你需要了解一下你的MySQL版本。至少使用5.7,这样它才能支持多线程。旧版本只使用一个线程,如果您有大型数据库,那么同时使用DB和mysqldump并不是一个好主意。
2)更喜欢在不同的DB磁盘上建立备份,因为读/写的性能,或者你可能需要RAID 10。
3) MySQL企业版的mysqlbackup更好,但是是付费的,我不知道这对你来说是不是一个选择。
4)有时很多表不需要transaction,所以只在需要的表上使用transaction
5)事务一般是必需的,使用InnoDB格式以提高性能,不使用锁表。
6)有些情况下最好使用一个程序,所以你可以创建你的事务,只读你的表而不锁定任何人,并用一些睡眠来测试,而不是冻结你的服务。
发布于 2011-04-15 01:02:46
您可以在mysqldump命令前添加以下内容:
ionice -c3 nice -n19 mysqldump ...
这将在低IO和CPU优先级下运行它,因此应该限制它的影响。
注意,这只会延迟MySQL执行之间的时间。脚本本身仍然会像以前一样密集,只是脚本之间会有更长的中断。
https://stackoverflow.com/questions/5666784
复制相似问题