Marc Asked: 2020-01-17 08:02:10 +0800 CST 2020-01-17 08:02:10 +0800 CST 2020-01-17 08:02:10 +0800 CST 如何备份具有非常大表的数据库?InnoDB 772 我有一个MySQL带有引擎的数据库InnoDB,其中一些表非常大(每个表大约30GB)。 从 中制作一张Backup或一张Restore这些表时Base de Datos,我遇到的问题是使用Dump. 有什么方法可以非常快速地执行这些表的Backupsand吗?Restores 笔记: 这个问题是从下一个问题中引用的,但是使用了不同的数据库存储引擎。 mysql 2 Answers Voted Best Answer Marc 2020-01-17T08:02:10+08:002020-01-17T08:02:10+08:00 InnoDB与其他引擎不同,它有一个选项来激活或停用每个表有一个文件(File-Per-Table)的功能,这使我们更容易制作Backups特定的Restores表。 要激活File-Per-Table,您必须修改配置文件MySQL并在标签中添加以下内容[mysqld]: innodb_file_per_table=1 要激活该选项,必须在修改配置文件后重新启动 MySQL 服务。 为了Backup快速制作一个Restore,我们将利用它InnoDB必须能够Tablespaces从数据库中丢弃和导入不同的功能。 对于下面的示例,我们将假设我的数据库文件在'C:\BD\'其中,并且我保留备份的文件夹是'C:\Copia\'. 备份程序: 我们必须执行的第一步Backup是锁定表以便能够正确操作文件: FLUSH TABLES DB1.Tabla1 FOR EXPORT 现在我们将查找已锁定的表的文件 ( 'C:\BD\Tabla1.*'),并将它们复制到我们保留备份的文件夹 ( 'C:\Copia\')。 复制文件后,我们将解锁之前锁定的表: UNLOCK TABLES; 恢复过程: 我们需要做的第一步是Tablespace从我们要恢复的表中删除一个: ALTER TABLE DB1.Tabla1 DISCARD TABLESPACE; 这样,表不再链接到Base de datos,您现在可以操作与该表相关的文件。 现在我们将去查找Backup我们丢弃的表的文件( ),我们将它们复制到( )'C:\Copia\Tabla1.*'表的文件所在的文件夹中,替换所有文件。Base de datos'C:\BD\' 一旦文件被复制,我们将从Tablespace表中导入一个,这样,我们将把我们拥有的副本恢复到数据库中: ALTER TABLE DB1.Tabla1 IMPORT TABLESPACE; Nicola Strappazzon 2020-02-12T12:32:43+08:002020-02-12T12:32:43+08:00 我建议您使用以下两种工具中的任何一种: Percona XtraBackup:它是一个 Percona 工具,它可以无阻塞地进行完整和增量备份,它是一致的并且恢复非常快,仅与 InnoDB 兼容。它基本上直接从文件系统复制表,它不是 .sql,所以它更快。 mydumper:此工具允许使用并行(多核)进行备份和恢复以提高速度,它是一致且易于使用的,这种类型的备份会生成许多 .sql。
InnoDB
与其他引擎不同,它有一个选项来激活或停用每个表有一个文件(File-Per-Table)的功能,这使我们更容易制作Backups
特定的Restores
表。要激活
File-Per-Table
,您必须修改配置文件MySQL
并在标签中添加以下内容[mysqld]
:要激活该选项,必须在修改配置文件后重新启动 MySQL 服务。
为了
Backup
快速制作一个Restore
,我们将利用它InnoDB
必须能够Tablespaces
从数据库中丢弃和导入不同的功能。备份程序:
我们必须执行的第一步
Backup
是锁定表以便能够正确操作文件:FLUSH TABLES DB1.Tabla1 FOR EXPORT
现在我们将查找已锁定的表的文件 (
'C:\BD\Tabla1.*'
),并将它们复制到我们保留备份的文件夹 ('C:\Copia\'
)。复制文件后,我们将解锁之前锁定的表:
UNLOCK TABLES;
恢复过程:
我们需要做的第一步是
Tablespace
从我们要恢复的表中删除一个:ALTER TABLE DB1.Tabla1 DISCARD TABLESPACE;
这样,表不再链接到
Base de datos
,您现在可以操作与该表相关的文件。现在我们将去查找
Backup
我们丢弃的表的文件( ),我们将它们复制到( )'C:\Copia\Tabla1.*'
表的文件所在的文件夹中,替换所有文件。Base de datos
'C:\BD\'
一旦文件被复制,我们将从
Tablespace
表中导入一个,这样,我们将把我们拥有的副本恢复到数据库中:ALTER TABLE DB1.Tabla1 IMPORT TABLESPACE;
我建议您使用以下两种工具中的任何一种: