[英]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.