mysqldump_备份与恢复

3 篇文章 0 订阅

mysqldump_备份与恢复

(转自:http://wenku.baidu.com/view/e5d04bd8ce2f0066f53322d7.html


它是逻辑备份,优点可以备份各种存储引擎

1.备份所有的数据库
#mysqldump -uroot -p --all-database >all.sql


2.备份指定的数据库
#mysqldump -uroot -p test > test.sql


3.备份指定数据库中的表
#mysqldump -uroot -p test s > test_s.sql


备份完全恢复实例
(1)上午9点备份数据库
#mysqldump -uroot -p -l -F student > student.dmp
-l 给所有表加读锁
-F 生成一个新的日志文件
此时s表数据如下:
mysql> select * from s;
+------+-------+------+-----------+
| sno  | sname | sex  | address   |
+------+-------+------+-----------+
| 0901 | Jim   | 1    | shanghai  |
| 0902 | helun | 2    | beijing   |
| 0903 | sam   | 1    | sichuan   |
| 0904 | keke  | 1    | xizang    |
| 0905 | gugu  | 1    | suzhou    |
| 0906 | tang  | 2    | guangdong |
+------+-------+------+-----------+
6 rows in set (0.00 sec)


备份完毕等到了student.dmp文件,还有mysql-bin.000012


(2)9点半备份完毕,然后插入新的数据
mysql> insert into s values('0907','liu','1','jiangxi');
Query OK, 1 row affected (0.00 sec)


mysql> insert into s values('0908','wang','2','wuxi');
Query OK, 1 row affected (0.00 sec)


(3)10点,数据库突然故障,数据无法访问.需要恢复备份:
#mysql -uroot -p student < student.dmp
恢复后的数据:
mysql> select * from s;
+------+-------+------+-----------+
| sno  | sname | sex  | address   |
+------+-------+------+-----------+
| 0901 | Jim   | 1    | shanghai  |
| 0902 | helun | 2    | beijing   |
| 0903 | sam   | 1    | sichuan   |
| 0904 | keke  | 1    | xizang    |
| 0905 | gugu  | 1    | suzhou    |
| 0906 | tang  | 2    | guangdong |
+------+-------+------+-----------+
6 rows in set (0.00 sec)


(4)使用mysqlbinlog 恢复mysqldump 备份以来的BINLOG
#mysqlbinlog mysql-bin.000012 |mysql -uroot -p student
查询完全恢复后的数据:
mysql> select * from s;
+------+-------+------+-----------+
| sno  | sname | sex  | address   |
+------+-------+------+-----------+
| 0901 | Jim   | 1    | shanghai  |
| 0902 | helun | 2    | beijing   |
| 0903 | sam   | 1    | sichuan   |
| 0904 | keke  | 1    | xizang    |
| 0905 | gugu  | 1    | suzhou    |
| 0906 | tang  | 2    | guangdong |
| 0907 | liu   | 1    | jiangxi   |
| 0908 | wang  | 2    | wuxi      |
+------+-------+------+-----------+
8 rows in set (0.00 sec)
恢复完成!


基于时间点的恢复(不完全恢复)
由于误操作,比如删除了一张表,使用完全恢复是没有用的,我们需要的是恢复到误操作之前的状态,然后跳过误操作语句,再恢复后面执行的语句,完成恢复;
例:
(1)上午10点发生误操作,可以用如下语句备份和BINLOG将数据恢复到故障前
#mysqlbinlog --stop-date="2010-10-31 9:59:59" /usr/local/mysql/var/mysql-bin.000013 |mysql -uroot -p




(2)跳过故障时间点,继续执行后面的BINLOG,完成恢复
#mysqlbinlog --start-date="2010-10-31 10:01:00" /usr/local/mysql/var/mysql-bin.000013 |mysql -uroot -p


基于位置恢复(不完全恢复)
和基于时间点恢复类是,但是更加精确.因为同一时间点可能有多条SQL语句执行;
例:
#mysqlbinlog --start-date="2010-10-31 9:55:00"  --stop-date="2010-10-31 10:05:00" /usr/local/mysql/var/mysql-bin.000013 > /tmp/mysql_restore.sql


该命令将在/tmp/目录下创建小的文件,编辑它找到错误语句前后的位置号,例如前后位置号分别是368312 和 368315
(2)恢复了以前的备份文件后,输入
#mysqlbinlog --stop-position="368312" /usr/local/mysql/var/mysql-bin.000013 |mysql -uroot -p


#mysqlbinlog --start-position="368315" /usr/local/mysql/var/mysql-bin.000013 |mysql -uroot -p

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值