mysql的dump恢复,MySQL备份与恢复————用mysqldump恢复

MySQL备份与恢复————用mysqldump恢复

MySQL备份与恢复————用mysqldump恢复

mysqldump备份的时候先进行一次完整备份,mysqldump恢复日志的方法是完整备份+二进制日志。二进制恢复的时候是定义希望恢复的位置,或者定义想要恢复的那个状态的时间。

1、对MySQL先做个完整备份,备份放在/tmp下

[[email protected] data]# mysqldump --all-databases --lock-all-tables  --flush-logs --master-data=2 > /tmp/global.sql

参数说明:

--all-databases    指定所有的数据库   --lock-all-tables  表示锁定所有的表

--flush-logs      表示日志滚动一次

--master-data=2   将当前二进制日志的位置记录在备份文件中 “1”表示不注释掉 “2”表示注释掉

2、为了演示备份恢复的效果,模拟场景就是我在jiaowu当中的scores插入了一行,这个是我想要的结果,但是我插入完这行以后不小心把整个scores表删除了。

[[email protected] data]# mysql

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| jiaowu             |

| mysql              |

| performance_schema |

| test               |

+--------------------+

mysql> use jiaowu;

Database changed

mysql> show tables;

+------------------+

| Tables_in_jiaowu |

+------------------+

| courses          |

| scores           |

| students         |

| tutors           |

+------------------+

mysql> select * from scores;

+----+-----+-----+-------+

| ID | SID | CID | Score |

+----+-----+-----+-------+

|  1 |   2 |   2 |    67 |

|  2 |   2 |   3 |    71 |

|  3 |   1 |   2 |    90 |

|  4 |   1 |   7 |    45 |

|  5 |   3 |   6 |    32 |

|  6 |   3 |   1 |    99 |

|  7 |   4 |   8 |    95 |

|  8 |   4 |  10 |    36 |

+----+-----+-----+-------+

插入一行信息

mysql> insert into scores (ID,SID,CID,Score) values (11,11,11,11);

mysql> select * from scores;

+----+-----+-----+-------+

| ID | SID | CID | Score |

+----+-----+-----+-------+

|  1 |   2 |   2 |    67 |

|  2 |   2 |   3 |    71 |

|  3 |   1 |   2 |    90 |

|  4 |   1 |   7 |    45 |

|  5 |   3 |   6 |    32 |

|  6 |   3 |   1 |    99 |

|  7 |   4 |   8 |    95 |

|  8 |   4 |  10 |    36 |

| 11 |  11 |  11 |    11 |

不小心删除了scores整张表

mysql> DROP tables scores;

Query OK, 0 rows affected (0.01 sec)

mysql> show tables;

+------------------+

| Tables_in_jiaowu |

+------------------+

| courses          |

| students         |

| tutors           |

+------------------+

mysql> \q

3、查看此时的二进制日志文件,我们想要恢复到删除scores表之前,插入那条语句之后的状态。如下图所示可以看到在327或300之前,177之后是我们想要的状态,而在437的时候DROP这个语句已经执行完毕了。

[[email protected] data]# mysqlbinlog mysql-bin.000004

mysqlbinlog是一个专门用于查看二进制日志文件的命令

mysql的dump恢复,MySQL备份与恢复————用mysqldump恢复_第1张图片

这里选择对177—300这段日志做备份放置在/tmp目录下命名为004.sql,用于做二进制日志回复

[[email protected] data]# mysqlbinlog --start-position=177 --stop-position=300 /mysql/data/mysql-bin.000004 > /tmp/004.sql

参数说明:--start-position 用于定义从哪个位置开始恢复

--stop-position  用于定义恢复至哪个位置

4、在用备份恢复之前,我们暂时要关闭二进制日志记录,因为我们不需要记录我们备份恢复的过程.

mysql> show global variables like '%log%';

mysql> set global sql_log_bin=off;

mysql> set sql_log_bin=off;

sql_log_bin 这个参数on就表示记录二进制日志off即是不记录二进制日志

5、备份恢复

1)先恢复完整的日志

[[email protected] data]# mysql < /tmp/global.sql

[[email protected] data]# mysql

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| jiaowu             |

| mysql              |

| performance_schema |

| test               |

+--------------------+

查看恢复的结果,可以看到scores表已经恢复了,并且表中的没有我们插入的那行数据,这说明我们的完成备份恢复是成功的。

mysql> use jiaowu;

Database changed

mysql> show tables;

+------------------+

| Tables_in_jiaowu |

+------------------+

| courses          |

| scores           |

| students         |

| tutors           |

+------------------+

mysql> select * from scores;

+----+-----+-----+-------+

| ID | SID | CID | Score |

+----+-----+-----+-------+

|  1 |   2 |   2 |    67 |

|  2 |   2 |   3 |    71 |

|  3 |   1 |   2 |    90 |

|  4 |   1 |   7 |    45 |

|  5 |   3 |   6 |    32 |

|  6 |   3 |   1 |    99 |

|  7 |   4 |   8 |    95 |

|  8 |   4 |  10 |    36 |

+----+-----+-----+-------+

2)恢复二进制日志,将那段二进制日志导入到我们的数据库。

[[email protected] data]# mysql < /tmp/004.sql

查看scores表中我们之前插入的那条数据恢复了

[[email protected] data]# mysql

mysql> use jiaowu;

Database changed

mysql> select * from scores;

+----+-----+-----+-------+

| ID | SID | CID | Score |

+----+-----+-----+-------+

|  1 |   2 |   2 |    67 |

|  2 |   2 |   3 |    71 |

|  3 |   1 |   2 |    90 |

|  4 |   1 |   7 |    45 |

|  5 |   3 |   6 |    32 |

|  6 |   3 |   1 |    99 |

|  7 |   4 |   8 |    95 |

|  8 |   4 |  10 |    36 |

| 11 |  11 |  11 |    11 |

+----+-----+-----+-------+

mysql> \q

补充说明:二进制日志文件也可以通过定义时间点,定义恢复至什么状态。

mysqlbinlog --start-datetime='2012-11-30  20:54:39' --stop-datetime='2012-11-30 20:55:41 ' /mysql/data/mysql-bin.000004 > /tmp/004.sql

--start-datetime 定义从哪一时刻开始恢复

--start-datetime 定义恢复至哪一时刻

转载于:https://blog.51cto.com/leggo/1079755

MySQL备份与恢复————用mysqldump恢复相关教程

你可能感兴趣的:(mysql的dump恢复)