🚀MYSQL数据库备份与恢复
备份
环境:
Centos7、MySQL5.7+
ps:图片是后补充的,只是展示用。
参数说明:
- -e:可以执行各种sql的(创建,删除,增,删,改、查)等各种操作
- -u:指定连接的用户名
- -p:指定连接的密码
- -P:指定端口
- -h:远端服务器IP
- mysqldump
- -d:备份库结构
- -t:备份库数据
- -B:备份时包含库结构
- --all-databases:导出所有数据库
- --skip-lock-tables:跳过锁定表的操作,以避免备份过程中阻止其他数据库操作。
- --ignore-table:指定需要排除的表[数据库.表名]
- --column-statistics=0:客户端版本(8+)大于服务端版本(5.+),需指定此参数
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | confluence | | mysql | | performance_schema | | sonar | | sys | | wgcloud | +--------------------+
mysql> show tables; +-------------------+ | Tables_in_wgcloud | +-------------------+ | ACCOUNT_INFO | | APP_INFO | | APP_STATE | | CPU_STATE | | CPU_TEMPERATURES | | CUSTOM_INFO | | CUSTOM_STATE | | DB_INFO | | DB_TABLE | | DB_TABLE_COUNT | | DCE_INFO | | DCE_STATE | | DESK_IO | | DISK_SMART | | DISK_STATE | | DOCKER_INFO | | DOCKER_STATE | | EQUIPMENT | | FILE_SAFE | | FILE_WARN | | FILE_WARN_STATE | | FTP_INFO | | HEATH_MONITOR | | HEATH_STATE | | HOST_DISK_PER | | HOST_GROUP | | INTRUSION_INFO | | LOG_INFO | | MAIL_SET | | MEM_STATE | | NETIO_STATE | | PORT_INFO | | REPORT_INFO | | REPORT_INSTANCE | | SHELL_INFO | | SHELL_STATE | | SNMP_INFO | | SNMP_STATE | | SYSTEM_INFO | | SYS_LOAD_STATE | | TCP_STATE | +-------------------+ 41 rows in set (0.00 sec)
1、备份全部数据库的数据和结构(包含创库、创表语句以及表数据)【包含系统库】
mysqldump -uroot -p密码 -A > /data/mysqlDump/mydb_1.sql
2、备份全部数据库的库结构,表结构(加 -d 参数)【包含系统库(mysql库)】
mysqldump -uroot -p密码 -A -d > /data/mysqlDump/mydb_2.sql
3、备份单个库的所有表结构【仅包含所有表结构,不包含表数据】
mysqldump -uroot -p密码 -d wgcloud > /data/mysqlDump/mydb_3.sql
4、备份数据库所有表结构及数据【不包含创库语句】
mysqldump -uroot -p密码 wgcloud > /data/mysqlDump/mydb_4.sql
5、备份库中的表(包含数据)【多张表用空格分割即可】
mysqldump -uroot -p密码 wgcloud LOG_INFO PORT_INFO > /data/mysqlDump/mydb_5.sql
6、备份库中的表结构(不包含表数据)【多张表用空格分割即可】
mysqldump -uroot -p密码 -d wgcloud LOG_INFO PORT_INFO > /data/mysqlDump/mydb_6.sql
7、备份数据库所有表以及表数据(不包含创库语句)【排除指定表,多个表写多个--ignore-table参数】
mysqldump -uroot -p密码 wgcloud --ignore-table wgcloud.LOG_INFO --ignore-table wgcloud.PORT_INFO > /data/mysqlDump/mydb_7.sql
8、备份单个数据库,包含创建数据库脚本、表结构、表数据【和--database参数一样】
多个库用空格分割
mysqldump -uroot -p密码 -B wgcloud > /data/mysqlDump/mydb_8.sql
9、备份所有数据库以及数据【系统库只包含(mysql)】
mysqldump -uroot -p密码 --all-databases > /data/mysqlDump/mydb_9.sql
10、备份多个数据库(包含创库、创表语句以及表数据)【和-B参数一样】
多个库用空格分割
mysqldump -uroot -p密码 --databases wgcloud sonar > /data/mysqlDump/mydb_10.sql
11、备份所有数据库以及数据【不包含系统库】
mysql中只有--ignore-table参数没有--ignore-database参数,所以只能通过其他方式进行操作
mysql -e "show databases;" -h IP地址 -uroot -p密码 | grep -Ev "Database|information_schema|mysql|test|performance_schema" | xargs mysqldump --skip-lock-tables -h IP地址 -uroot -p密码 --databases > /mysql_dump_2023-04-19.sql
恢复
方式一:SOURCE命令:
- 语法:
SOURCE /path/to/mydatabase.sql
- 用途:
SOURCE
命令通常在MySQL命令行中使用,用于执行SQL脚本文件。该命令是在MySQL Shell中直接执行的,而不是在操作系统的命令行中执行。 - 适用场景: 适用于交互式MySQL Shell环境,可以在MySQL Shell中逐行执行SQL语句,也可以执行整个SQL脚本文件。
mysql> SOURCE /path/to/mydatabase.sql;
方式二:通过重定向 <
操作符:
- 语法:
mysql -u username -p mydatabase < /path/to/mydatabase.sql
- 用途: 这种方式是通过操作系统的命令行来执行,使用
mysql
命令行工具。通过重定向<
操作符,将SQL脚本文件的内容传递给mysql
命令行工具。 - 适用场景: 适用于非交互式的批处理或自动化脚本。这种方式更适合在命令行中执行,而不需要交互式输入。
mysql -u username -p mydatabase < /path/to/mydatabase.sql