MySQL数据库备份与还原
warning:
这篇文章距离上次修改已过694天,其中的内容可能已经有所变动。
1、备份数据库
使用mysqldump
命令来备份数据库,默认情况下,mysqldump
会把数据信息转换成SQL语句作为标准输入,并且可以使用Linux的输出重定向符>
存储到文件中:
mysqldump [OPTIONS] database [tables] > backup_file_name
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] > backup_file_name
mysqldump [OPTIONS] --all-databases [OPTIONS] > backup_file_name
下面演示备份示例:
示例1:
mysqldump -uroot -p --all-databases > db_backup.sql
#备份全部数据库schema,存储到db_backup.sql文件
示例2:
mysqldump -uroot -p --databases db1 db2 > db_backup.sql
#备份db1和db2数据库schema,存储到db_backup.sql文件
示例3:
mysqldump -uroot -p db1 > db_backup.sql
#这种备份方式得到的*.sql文件没有`create database xxx;user xxx;`,并且只能指定一个数据库scheme
示例4:
备份数据库中的某个表
mysqldump -uroot -p dbname tbname1, tbname2 > backdb.sql
- 第一种方式
--all-databases
会把当前用户下所有的数据库schema进行备份; - 第二种方式
--databases
可以制定当前用户的某一或多个数据库schema; - 第三种方式单单指定了数据库schema,它得到的文件就没有
create database
和use
部分,并且这种方式只能指定一个数据库schema,这样可以把数据导入到不同数据库schema中。
2、恢复数据库
- 备份文件有
create database和use
语句的恢复(上面示例1,示例2)
对于使用mysqldump
导出的SQL语句文件,可以使用mysql客户端进行恢复,如果备份时使用了all-databases或--databases
选项,它包含了create database和use
语句,所以没必要去指定默认的导入数据库schema了,直接使用输入重定向<传递给mysql客户端即可恢复:
mysql -uroot -p < db_backup.sql #使用root用户恢复备份的所有数据库schema
或者在mysql下可以使用source命令恢复:
mysql -uroot -p #回车进入mysql终端,这里使用root用户
mysql>source db_backup.sql; /*恢复备份的所有数据库schema*/
- 备份文件
无create database和use
语句的恢复
如果是上面第三种方式的备份产出的SQL语句,即没有create database和use
语句的,如果有需要的话,可以使用mysqladmin
先建立数据库schedule,然后再恢复数据库:
mysqladmin -uroot -p create db_name
mysql -uroot -p db_name < db_backup.sql
或者在mysql下先创建数据库,然后使用source
命令恢复:
mysql -uroot -p #使用root用户登录MySQL终端控制台
mysql>create database if not exists db_name; /*如果数据库不存在就创建数据库scheme*/
mysql>use db_name; /*使用数据库scheme*/
mysql>source db_backup.sql; /*恢复备份的数据库*/
PS:使用gzip压缩备份与还原MySQL数据库方法:
备份命令:
mysqldump -R -uroot -pmysql wordpress |gzip > /root/db_back/manual/$curdate/wordpress-$curdate.sql.gz
还原命令:
gunzip < /root/db_back/manual/$curdate/wordpress-$curdate.sql.gz |mysql -uroot -pmysql wordpress
