数据库备份与还原
数据备份
使用mysqldump命令备份
把数据库中的数据备份成一个文本文件。
表的结构和表中的数据存储在生成的文本文件中。
工作原理
- 先查出需要备份的表的结构
- 根据表结构在文本文件中生成一个create语句
- 将表中的所有记录转换成一条insert语句
还原数据时,使用create语句来创建表,使用insert语句还原数据
使用方法
备份一个数据库
mysqldump -u username -p dbname table1 table2 ... > backupname.sql
dbname表示数据库的名称
table1 table2是表的名称
当没有表名时,备份整个数据库
备份多个数据库
mysqldump -u username -p --databases dbname1 dbname2 > backupname.sql
备份所有数据库
mysqldump -u username -p --all-databases > backupname.sql
直接复制整个数据库目录
优点
- 最简单,最快
- 对于MyISAM存储引擎的表,这样备份和还原很方便
缺点
- 实际中可能不允许停止Mysql服务器,让你复制数据
- 这种方法对InnoDB存储引擎的表不适用
注意
- 复制前最好先将服务器停止,保证在复制期间数据库中的数据不会变化
- 还原时最好是相同版本的MySQL数据库,否则可能存在文件类型不同的情况
使用mysqlhotcopy工具快速备份
如果备份时不能停止MySQL服务器,可以采用mysqlhotcopy工具。
它比mysqldump命令快。
工作原理
mysqlhotcopy是一个Perl脚本,主要在Linux操作系统下使用
mysqlhotcopy工具使用LOCK TABLES
、FLUSH TABLES
和cp/scp
来进行快速备份。
原理
- 先将需要备份的数据库加上一个读写锁
- 用FLUSH TABLES将内存中的数据写回到硬盘上的数据库中
- 把需要备份的数据库文件复制到目标目录
使用方法
mysqlhotcopy [option] dbname1 dbname2 ... backupDir/