mysqldump备份

柳三千

温馨提示:这篇文章已超过765天没有更新,请注意相关的内容是否还可用!

前言:

本质:导出的是sql语句文件

优点:无论什么储存引擎,都可以用mysqldump备成sql语句

缺点:速度较慢,导入可能会出现格式不兼容的突发状况,无法直接做增量备份


提供三种级别的备份,表级、库级和全库级

常用参数:

--f1ush-1ogs,-F                             开始备份前刷新日志 
--f1ush-privileges                   备份包含mysa1数据库时刷新授权表 
--1ock-a11-tables,-x                   MyISAM一致性,服务可用性(针对所有库所有表) 
--1ock-tables,-1                       备份前锁表(针对要备份的库) 
--single-transaction                   适用InnoDB引擎,保证一致性,服务可用性 
--master-data=2                     表示将二进制日志位置和文件名写入到备份文件并在dump文件中注释掉这一行;
--master-data=1                     表示将二进制日志位置和文件名写入到备份文件,在dump文件中不注释这一行;

--master-data参数其他说明:

 1)恢复时会执行,默认是1

 2)需要RELOAD privilege并必须打开二进制文件
 3)这个选项会自动打开--1ock-a11-tables,关闭--1ock-tables


表级别备份:

mysqldump 参数选项  database 表名

mysqldump database 库名 表名 -uroot -pxxx  > 备份文件路径
[root@WEB ~]# mysqldump php message -uroot -p > /tmp/message.sql


删除表:

mysql> show tables;
+---------------+
| Tables_in_php |
+---------------+
| message       |
| test          |
+---------------+
2 rows in set (0.00 sec)

mysql> drop table message;
Query OK, 0 rows affected (0.03 sec)

mysql> show tables;
+---------------+
| Tables_in_php |
+---------------+
| test          |
+---------------+
1 row in set (0.00 sec)


恢复表:

mysql> source /tmp/message.sql;


备份多表:

[root@WEB ~]# mysqldump php message test -uroot -p --set-gtid-purged=OFF > /tmp/all.sql


删除表:

mysql> drop table message;
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+---------------+
| Tables_in_php |
+---------------+
| test          |
+---------------+
1 row in set (0.00 sec)


恢复表:

[root@WEB ~]# mysql php < /tmp/all.sql  -p
Enter password:
mysql> show tables;
+---------------+
| Tables_in_php |
+---------------+
| test          |
+---------------+
1 row in set (0.00 sec)

mysql> show tables;
+---------------+
| Tables_in_php |
+---------------+
| message       |
| test          |
+---------------+
2 rows in set (0.00 sec)


库级别备份

mysqldump 参数选项  --databases 参数选项 库名

mysqldump --databases db01 db02 -uroot -pxxx > 备份文件路径

[root@WEB ~]# mysqldump --databases php zabbix --set-gtid-purged=OFF > /tmp/data.sql -uroot -p
Enter password:


删除数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| php                |
| sys                |
| testldx            |
| z_blog             |
| zabbix             |
+--------------------+
8 rows in set (0.00 sec)

mysql> drop database zabbix;
Query OK, 166 rows affected (2.93 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| php                |
| sys                |
| testldx            |
| z_blog             |
+--------------------+
7 rows in set (0.00 sec)


恢复数据库:

1、mysql内恢复

mysql> source /tmp/data.sql
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| php                |
| sys                |
| testldx            |
| z_blog             |
| zabbix             |
+--------------------+
8 rows in set (0.01 sec)


2、命令行恢复

[root@WEB ~]# mysql < /tmp/data.sql -p
Enter password:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| php                |
| sys                |
| testldx            |
| z_blog             |
| zabbix             |
+--------------------+
8 rows in set (0.01 sec)


全库级别

mysqldump  参数选项  --all-databases 参数选项

mysqldump  --all-databases --master-data --single-transaction > 文件路径
[root@WEB ~]# mysqldump  --all-databases --single-transaction --set-gtid-purged=OFF  > /root/all.sql -uroot -p
Enter password:


总结:

1.mysqldump工具备份的是SQL语句, 故备份不需要停服务
2.使用备份文件恢复时,要保证数据库处于运行状态
3.只能实现全库,指定库,表级别的某一时刻的备份 本身不能增量备份
4.适用于中小型数据库

文章版权声明:除非注明,否则均为柳三千运维录原创文章,转载或复制请以超链接形式并注明出处。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码