mysql mysqldump恢复数据库_使用mysqldump备份异机恢复数据库

本文详细介绍了如何使用mysqldump进行完全备份,结合binlog做增量备份,以及如何在不同服务器上恢复这些备份。通过创建数据库、表,插入数据,然后进行备份和增量备份,最后演示了恢复过程,包括从二进制日志中导出特定日志段来避免错误操作的影响。
摘要由CSDN通过智能技术生成

使用mysqldump备份异机恢复数据库

1、创建测试数据库

mysql> create database allen;

Query OK, 1 row affected (0.01 sec)

mysql> use allen;

Database changed

mysql> create table tab1 (ID tinyint unsigned not null primary key auto_increment,Name char(20) not null unique key,Age tinyint unsigned,Gender char(1) default 'M');

Query OK, 0 rows affected (0.38 sec)

mysql> insert into tab1 (Name,Age,Gender) values ('Zhang WuJi',26,'M'),('Zhao Min',24,'F');

Query OK, 2 rows affected (0.05 sec)

Records: 2  Duplicates: 0  Warnings: 0

2、完全备份allen数据库

[root@mysql ~]# mysqldump -uroot -puplooking --lock-all-tables --routines --events --triggers --master-data=2 --flush-logs --databases allen > /backup/allen_`date +

%F`.sql

3、基于二进制日志(上一次完全备份到目前日志所处的位置)做增量备份

mysql> create table tab2 (ID tinyint unsigned not null primary key auto_increment,Name char(20) not null unique key,Age tinyint unsigned,Gender char(1) default 'M');

Query OK, 0 rows affected (0.34 sec)

mysql> insert into tab2 (Name,Age,Gender) values ('Liang ShanBo',26,'M'),('Zhu YingTai',24,'F'),(3,'Feng Songtao',25,M);

Query OK, 2 rows affected (0.08 sec)

Records: 2  Duplicates: 0  Warnings: 0

mysql> show master status;  --增量备份时日志位置

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000006 |      812 |              |                  |

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

[root@mysql ~]# mysqlbinlog --start-position=107 /binlog/mysql-bin.000006 > /backup/allen_increment.sql

说明:--start-position=107 是上一次完备时日志的位置(可以查看完备文件内容得到),缺省--stop-position参数时默认到当前日志

4、再次向allen数据库中插入数据,然后删除allen数据库

mysql> insert into tab2 (Name,Age,Gender) values ('Zhu BaJie',26,'M'),('Sun WuKong',24,'F');

mysql> drop database allen;

5、导出从上次增量备份时日志到要恢复的时间点(删除allen数据库之前)之间的日志

[root@mysql ~]# mysqlbinlog --start-position=812 --stop-position=1084 /binlog/mysql-bin.000006 > /backup/allen_1084.sql

说明:1、--start-position=812为上面查看获得,--stop-position=1084从二进制日志记录获得

2、/backup/allen_1084.sql文件可以修改,如果这段日志中间存在误操作(如删除一条数据),可以将该误操作注释掉

6、将备份的文件拷贝到要恢复的数据库服务器,进行恢复

[root@mysql ~]# scp -p /backup/allen_* 192.168.122.11:/backup/

目标服务器上进行数据恢复

mysql> source /backup/allen_2016-06-25.sql

mysql> source /backup/allen_increment.sql

mysql> source /backup/allen_1084.sql

7、查看数据

mysql> show databases;

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

| Database           |

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

| information_schema |

| allen              |

| mysql              |

| performance_schema |

| test               |

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

5 rows in set (0.03 sec)

mysql> use allen

Database changed

mysql> show tables;

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

| Tables_in_allen |

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

| tab1            |

| tab2            |

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

2 rows in set (0.00 sec)

mysql> select * from tab2;

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

| ID | Name         | Age  | Gender |

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

|  1 | Liang ShanBo |   26 | M      |

|  2 | Zhu YingTai  |   24 | F      |

|  3 | Feng Songtao |   25 | M      |

|  4 | Sun WuKong   |   24 | F      |

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

4 rows in set (0.02 sec)

注:tab2表中没有Zhu BaJie这条数据记录是因为我对/backup/allen_1084.sql做了修改,如下:

#insert into tab2 (Name,Age,Gender) values ('Zhu BaJie',26,'M'),('Sun WuKong',24,'F')

insert into tab2 (Name,Age,Gender) values ('Sun WuKong',24,'F')

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30373263/viewspace-2120960/,如需转载,请注明出处,否则将追究法律责任。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值