diff --git a/mysql/mysql文档/mysql_备份.md b/mysql/mysql文档/mysql_备份.md index 8be8cd6..32f3dea 100644 --- a/mysql/mysql文档/mysql_备份.md +++ b/mysql/mysql文档/mysql_备份.md @@ -30,3 +30,34 @@ 对于mysqldump工具而言,可以通过添加`--single-transaction`选项来获取innodb的一致性备份,原理和上述所示的相同,备份逻辑会在一个长事务中执行。`在使用mysqldump进行备份时,务必添加--single-transaction选项`。 +## Cold Backup +对于innodb存储引擎而言,cold backup相对简单,只需要备份mysql数据库的frm文件(mysql8中没有该类型文件)、共享表空间文件、独立表空间文件、redo log文件即可。另外,建议定期备份mysql数据库的配置文件`my.cnf`,有利于恢复操作。 + +cold backup存在如下优点: +- 备份简单,仅需复制相关文件即可 +- 备份文件易于在不同操作系统、不同mysql版本上进行复制 +- 恢复速度快,仅需拷贝文件即可,无需执行sql语句也无需进行索引重建 + +cold backup存在如下缺点: +- innodb存储引擎的cold backup文件通常要比逻辑文件大很多,因为表空间中存放着很多其他数据,例如`undo log段`和`change buffer`等 +- cold backup并不总是可以轻易跨平台,操作系统、mysql版本、文件大小写敏感、浮点格式都会造成问题 + +> change buffer也是系统表空间的一部分,故而,change buffer也存在磁盘页。在进行cold backup时,同样需要备份change buffer。 + +## 逻辑备份 +### mysqldump +mysqldump工具通常用于创建数据库的备份或是在不同数据库之间对数据进行移植,如从mysql低版本升级到mysql高版本,或从mysql数据库迁移到oracle、sql server等数据库。 + +mysqldump的语法如下所示: +```sql +mysqldump [arguments] >file_name +``` +如果想用mysqldump备份所有的数据库,可以使用如下命令: +```sql +mysqldump --all-databases >dump.sql +``` +如果想要备份指定的数据库,可以使用如下命令 +```sql +mysqldump --databases db1 db2 db3 > dump.sql +``` +