如何解决如何降低MySQL转储的速度,以免影响服务器上的当前负载?
| 尽管执行MySQL转储很容易,但我有一个实时专用MySQL服务器,希望在其上设置复制。为此,我需要转储数据库以导入到复制从属服务器。 问题出在我进行转储时,MySQL会全力以赴,并将资源绑定到连接到它的站点。我想知道是否有一种方法可以将转储查询限制为低优先级状态,而优先级优先于实时连接?这个想法是,外部站点的负载不受MySQL进行完全转储的影响...解决方法
我有非常庞大的数据库,其中包含成千上万个表,其中某些表在数以千万计的条目中具有高达5GB的数据。 (我运行一项流行的服务)...备份这些数据库时,我总是头疼。使用默认的mysqldump,它会迅速使服务器负载失控,并锁定所有内容,从而影响我的用户。尝试停止该过程可能导致表崩溃,并在恢复这些表期间导致大量停机。
我现在用...
mysqldump -u USER -p --single-transaction --quick --lock-tables=false DATABASE | gzip > OUTPUT.gz
dev.mysql.com上的mysqldump参考甚至说...
要转储大表,应结合使用--single-transaction
--quick选项。
不用说依赖数据库是InnoDB,我的是myISAM,这对我来说效果很好。服务器负载几乎完全不受影响,并且我的服务在整个过程中像劳力士一样运行。如果您有大型数据库,并且对其进行备份会影响您的最终用户,这就是解决方案。 ;)
,如果使用InnoDB表,则对mysqldump使用--single-transaction和--quick选项
,使用nice和gzip命令以最低优先级执行该命令。
nice -n 10 ionice -c2 -n 7 mysqldump db-name | gzip > db-name.sql.gz
,您可以在mysqldump命令前添加以下内容:
ionice -c3 nice -n19 mysqldump ...
它将以较低的IO和CPU优先级运行它,因此应限制它的影响。
注意,这只会延迟MySQL执行之间的时间。脚本本身仍将像以前一样密集,只是脚本之间的中断时间更长。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。