首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在所有InnoDB表环境中进行Mysql备份

在所有InnoDB表环境中进行Mysql备份
EN

Stack Overflow用户
提问于 2015-06-04 10:36:35
回答 1查看 448关注 0票数 0

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

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

类似mysqldump -单事务的东西,我读过它对小DB很有用,但事实并非如此。有类似于我的案例吗?

希望如此!

EN

回答 1

Stack Overflow用户

发布于 2017-06-23 13:12:04

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

( a)从逻辑备份(即:由mysqldump创建)恢复100 in表所需的时间太长,因为mysql必须重建索引,并在sql被重放时执行大量I/O处理。

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

尽管如此,请注意,由于xtrabackup在/lib/mysql目录中复制所有相关文件,因此磁盘空间需求非常大。如果您有一个在磁盘上分配了200 If的数据库(即使某些表上有一些空的分配空间),那么备份的大小将是200 if。

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

了解更多关于Percona如何工作的内容:works.html

mysqldump与innodb表以及--主数据和-单事务选项的组合是一个很好的选择。它获取所有表的全局读锁,但只需足够长的时间读取二进制日志坐标。通常情况下,这将是非常快的,除非有非常重要的更新正在进行,在这种情况下,它可能会暂停,直到更新完成。

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

下面是语法:

代码语言:javascript
复制
  mysqldump --all-databases --master-data --single-transaction > all_databases.sql

代码语言:javascript
复制
  mysqldump --master-data --single-transaction my-database > my-database.sql

备份单个数据库。

有关此问题的更多信息,请在dev.mysql.com站点上阅读:single-transaction

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30641582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档