首页 > 代码库 > MySQL数据库备份与还原

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