所有InnoDB表环境中的Mysql备份

时间:2015-06-04 10:36:36

标签: mysql innodb mysql-backup

目前我正在使用mysqlbackup进行备份。这将调用" FLUSH TABLES WITH READ LOCK"并提高锁定我的表的可能性,直到刷新完成并释放全局锁定。

那么,有没有备份我的数据库,这是非常大的,有超过100 GB的表,没有这个全局锁?

像mysqldump - 单事务之类的东西,我读过的东西对小型数据库很有用,但事实并非如此。 是否有类似适用于我的情况?

希望如此!

1 个答案:

答案 0 :(得分:0)

当你的桌子很大时,Percona Xtrabackup是一个很好的选择。这主要归功于以下两点:

a)从逻辑备份恢复100GB表所花费的时间(即:由mysqldump创建)会过多,因为mysql必须重建索引并在重放sql时进行大量的I / O处理。 / p>

b)xtrabackup可以在您完成第一次完整备份后进行增量备份,使得常规的夜间或小时在磁盘空间方面更快更小。

也就是说,请注意,因为xtrabackup会复制/ lib / mysql目录中的所有相关文件,所以磁盘空间要求非常高。如果你有一个在磁盘上分配了200GB的数据库(即使某些表上有一些空的分配空间),你的备份大小将是200GB。

这与mysqldump的逻辑备份(可以重新创建数据,表结构,索引等的sql语句)进行比较,这将占用空间的一小部分。

详细了解Percona xtrabackup的工作原理:https://www.percona.com/doc/percona-xtrabackup/LATEST/how_xtrabackup_works.html

与innodb表一起使用的mysqldump以及--master-data和--single-transaction选项的组合是一个很好的选择。它获取所有表的全局读锁定,但只能读取二进制日志坐标。通常这将非常快,除非有非常重要的更新正在进行中,在这种情况下它可能会停止,直到更新完成。

这为您提供了一致的时间点备份,并且在初始读锁定之外没有锁定。

以下是语法:

  mysqldump --all-databases --master-data --single-transaction > all_databases.sql

  mysqldump --master-data --single-transaction my-database > my-database.sql

备份单个数据库。

有关此内容的更多信息,请访问dev.mysql.com网站:https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_single-transaction