1.mysqldump简介
mysqldump是mysql自带的逻辑备份工具,是mysql的客户端命令。备份原理是通过mysql协议连接到mysql服务器,将需要备份的数据查询出来,将查询出的数据转换成对应的insert等sql语句,使用时,再执行sql语句,即可将对应的数据还原。
2.备份命令
2.1命令格式
mysqldump的几种语法形式:
Dumping structure and contents of MySQL databases and tables.
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
ps:补充说明
mysqldump [OPTIONS] database [tables]
支持指定数据库和指定多表备份,但数据库本身定义不备份,意味着还原时候要先创建一模一样的库名;mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
支持指定数据库备份,包含数据库本身定义也会备份;mysqldump [OPTIONS] --all-databases [OPTIONS]
备份所有数据库,包含数据库本身定义也会备份;
mysqldump参考:
https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
2.2常用选项说明
参数名 | 简写 | 含义 |
---|---|---|
--host | -h | 服务器主机IP地址 |
--port | -p | 服务器mysql端口号 |
--user | -u | mysql用户名 |
--password | -p | mysql密码 |
--databases | -B | 指定备份数据库,包括create database语句 |
--all-databases | -A | 备份mysql服务器所有数据库,含create database语句 |
--compact | 压缩模式,产生更少的输出 | |
--comments | -i | 添加注释信息 |
--complete-insert | -c | 输出完成的插入语句 |
--no-data | -d | 只备份表结构,不备份数据 |
--no-create-info | -t | 只备份数据,不备份表结构 |
--flush-privileges | 备份mysql或相关是需要使用 | |
--quick | -q | 不缓存查询,直接输出,加快备份速度 |
--lock-tables | -l | 备份前,锁定所有数据库表 |
--no-create-db | -n | 禁止生成创建数据库语句 |
--force | -f | 当出现错误时仍然继续备份操作 |
--default-character-set | 指定默认字符集 | |
--add-locks | 备份数据库时锁定数据库表 | |
--verbose | -v | 备份时打印各阶段信息 |
PS:更多信息,请查看man、help帮助,执行命令:
mysqldump --help
和man mysqldump
2.3实例用法
1.备份所有数据库(包括mysql和test):
mysqldump -uroot -ppwd --all-databases > /backup/mysqldump/alldb.sql
2.备份指定数据库:
mysqldump -uroot -ppwd mydb > /backup/mysqldump/mydb.sql
3.备份指定数据库指定表(多个表以空格隔开):
mysqldump -uroot -ppwd mysql user event > /backup/mysqldump/mysqltable.sql
4.备份指定数据库排除某些表:
mysqldump -uroot -ppwd mydb --ignore-table=mydb.tb1 --ignore-table=mydb.tb2 > /backup/mysqldump/mydbtb.sql
3.还原命令
3.1系统行命令
[root@mysql ~]# mysqladmin -uroot -ppwd create db_name
[root@mysql ~]# mysql -uroot -ppwd db_name < /backup/mysqldump/db_name.sql
PS: 导入备份数据库前,先确认是否有数据库db_name,若没有需要创建,且要与db_name.sql中数据库名保持一致
3.2 source用法
[root@mysql ~]# mysql -uroot -p
mysql> use db_name
mysql> source /backup/mysqldump/db_name.sql