MySQL数据库备份与还原
备份数据库
1.使用mysqldump命令备份
- 备份一个数据库:mysqldump -u 用户名 -p密码 数据库名 [表名1,表名2...]>备份文件路径及名字.sql
如果没有表名,则备份整个数据库
eg: mysql -u root -p test studentinfo >D:\test.sql
- 备份多个数据库:mysqldump -u 用户名 -p --databases 数据库1,数据库2... > 备份文件路径及名字.sql
- 备份所有数据库:mysqldump -u 用户名 -p --all -databases > 备份文件路径及名字.sql
注:备份时候不一定是.sql文件扩展名,可以任意指定
2.直接复制整个数据库目录
- 将mysql数据库文件直接复制出来,最好将服务先停止,保证数据一致
- 对INNODB存储引擎的表不适用
- 还原时最好是相同版本的MySQL数据库
3.使用mysqlhotcopy工具快速备份
- 如备份时不能停止mysql服务,可使用此工具。比mysqldump命令快
- 此工具是一个Perl脚本,主要在Linux下使用
- 使用LOCK TABLES、FLUSH TABLES和cp来进行快速备份
- 原理:先将备份的数据库加上一个读操作锁,用FLUSH TABLES将内存中的数据写回到硬盘数据库中,最后将备份的数据库文件复制到目标目录
还原数据库
1.使用mysql命令还原
- mysql -u root -p[数据库名] < backup.sql
2.直接复制到数据库目录
- 和前面复制目录备份一样,将目录复制到对应的文件夹下
- windows下目录:C:/mysql/data C:/Document and Settings/All Users/Application Data/MySQL/MySQL Server5.1/data等默认路径
- Linux下:/var/lib/mysql/ /usr/local/mysql/data usr/local/mysql/var 等默认目录
- 使用mysqlhotcopy备份的数据库也是通过这种方式还原,复制到数据库目录后,要将数据库的用户和组变成mysql: chwon -R mysql.mysql dataDir
数据库迁移
1.数据库迁移分类:
- MySQL相同版本的数据库之间迁移
- 迁移到MySQL其他版本的数据库中
- 迁移到其他类型的数据库中
MySQL相同版本之间迁移:
mysqldump -h 主机名 -u root -password=password1 -all-databases |
mysql -h host2 -u root -password=password2
用SELECT...INTO OUTFILE导出文本文件
- SELECT [列名] FROM 表名 [WHERE条件] INTO OUTFILE '目标文件路径'[OPTION];
用mysqldump导出文本文件
- mysqldump -u root -pPassword -T 目录 dbname table [OPTION];
用mysql命令导出文本文件
- mysql -u root -pPassword -e "SELECT语句" dbname > D:/backup.txt
- 导出xml文件:
-
- mysql -u root -pPassword -xml -X -e "SELECT语句" dbname > D:/backup.xml
- 导出html文件:
-
- mysql -u root -pPassword --html -H -e "SELECT语句" dbname > D:/backup.html