mysql - 当 mysqldump 变得非常慢时怎么办

标签 mysql database-replication database-backups backup-strategies

目前我的数据库几乎有 20 GB 大,而且还在不断增长。 我正在使用 mysqldump 进行每日备份,它变得非常慢。 如此之慢,以至于同时新连接堆积并最终导致此错误:

SQLSTATE[HY000] [1040] Too many connections

(我可以提高接受的连接数量,但这不会做任何事情,因为连接仍然处于卡住状态,等待备份完成,这将导致超时)

我一直在阅读一些提高速度的选项,这是我发现的:

  1. 选项 --quick(可能会有帮助)
  2. 选项 --single-transaction (将防止表被锁定,但可能导致数据库变得不正确)
  3. 主从复制(可能是我能做的最好的事情,一个问题,我只有一台服务器可用)

主从复制听起来确实是最好的选择,因为我可以阻止从更新,进行备份,然后让它恢复同步。问题是我只有一台物理机器可以使用。

我知道我可以在这台服务器上设置多个 mysql 实例。问题是:这样做明智吗? 从属实际上仅用于生成该备份文件(将被复制到网络上的不同磁盘),以便主可以保持事件状态。

最佳答案

如果你只使用 innodb - 尝试 xtrabackup .

如果您同时使用 myisam 和 innodb - flush + lvm snapshot + file-level copy可能对你有用。

确实,用于备份的复制从属也是个好主意。只记得定期check data consistency between the master and the slave .

关于mysql - 当 mysqldump 变得非常慢时怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11713705/

相关文章:

php - JSON 字段中的类似 MySql 的查询

mysql - 如何在不加入mysql的情况下从另一个表获取数据

mysql - 无法在docker中使用mysql连接到数据库sonarqube

mysql - 创建引用不重复的用户的联系人数据库

sql - Postgresql 复制槽错误 postgresql

azure-sql-database - SQL Azure 备份

mongodb - 如何在异地分布式 MongoDB 集群中分配新的主数据库?

Amazon EC2 上的 MySQL 数据库复制错误 2013

mysql - 如何备份 MySQL 数据库?

c - 如何为 SQLite 做增量备份?