繁体   English   中英

所有InnoDB表环境上的Mysql备份

[英]Mysql Backup on all InnoDB tables environment

目前,我正在使用mysqlbackup进行备份。 这将称为“带读取锁定的表刷新”,并增加了锁定我的表的可能性,直到完成刷新并释放全局锁定为止。

因此,是否有任何备份我的数据库的方法,这确实很大,没有超过100 GB的表却没有此全局锁定?

我读过的mysqldump --single-transaction之类的东西在小型数据库上很有用,事实并非如此。 有没有类似的适用于我的情况?

希望如此 !

当表很大时,Percona Xtrabackup是一个很好的选择。 这主要是由于以下两点:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM