Mysql 数据库备份还原


共计 1330 个字符,预计需要花费 4 分钟才能阅读完成。

1 备份数据库

1.1 备份单个数据库

mysqldump -u root -p123456 --databases db1 > /var/lib/mysql/backup.sql
  • --all-databases, -A: 备份所有数据库
  • --databases, -B: 用于备份多个数据库,如果没有该选项,mysqldump 把第一个名字参数作为数据库名,后面的作为表名。使用该选项,mysqldum 把每个名字都当作为数据库名。
  • --no-data, -d:只导出表结构
  • --quick, -q:快速导出
  • --xml, -X:导出为 xml 文件

备份单个数据库的某几个表,比较少用,可以了解下

# 此处为不完整的sql,不能直接使用下面的还原语句。需要添加 use 命令选中数据库 
mysqldump -u root -p123456 db1 tb1 tb2 > /var/lib/mysql/incomplete.sql

1.2 备份多个数据库

指定方式备份:

mysqldump -u root -p123456 --databases db1 db2 > /var/lib/mysql/backup.sql

排除方式备份:

mysql_password=123456
mysql -N -e "SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');" -uroot -p$mysql_password | xargs mysqldump -uroot -p$mysql_password --databases > /var/lib/mysql/backup.sql

上述命令是排除四个系统数据库:information_schema、mysql、performance_schema、sys 然后其他的表进行全备份。

还有一种方式,这种方式会把包含对应字符串的也排除,比如 system 数据库将不会导出,不推荐这种。

mysql_password=123456
mysql -e "show databases;" -uroot -p$mysql_password| grep -Ev "Database|information_schema|mysql|performance_schema|sys" | xargs mysqldump -uroot -p$mysql_password --databases > /var/lib/mysql/backup.sql

1.3 备份全部数据库

如果需要备份所有的数据库和表,可以执行如下命令。

mysqldump -uroot -p123456 --all-databases >/var/lib/mysql/backup.sql

2 还原数据库

可通过如下方式还原数据库,即执行 backup.sql 文件的 sql 语句。

mysql -u root -p123456 < /var/lib/mysql/backup.sql

如果不能通过输入明文密码的方式进行,可以通过修改配置文件 /etc/my.cnf 的方式,添加如下内容,然后重启 mysql。

[mysqldump]
user=root
password=123456

提醒:本文发布于396天前,文中所关联的信息可能已发生改变,请知悉!

Tips:清朝云网络工作室

阅读剩余
THE END