如何降低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执行之间的时间。脚本本身仍将像以前一样密集,只是脚本之间的中断时间更长。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...