300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > mysql 没有开启binlog_mysql binlog没有开启数据怎么恢复

mysql 没有开启binlog_mysql binlog没有开启数据怎么恢复

时间:2022-04-06 08:12:29

相关推荐

mysql 没有开启binlog_mysql binlog没有开启数据怎么恢复

-09-06 回答

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

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="-10-31 9:59:59" /usr/local/mysql/var/mysql-bin.000013 |mysql -uroot -p

(2)跳过故障时间点,继续执行后面的binlog,完成恢复

#mysqlbinlog --start-date="-10-31 10:01:00" /usr/local/mysql/var/mysql-bin.000013 |mysql -uroot -p

基于位置恢复(不完全恢复)

和基于时间点恢复类是,但是更加精确.因为同一时间点可能有多条sql语句执行;

例:

#mysqlbinlog --start-date="-10-31 9:55:00" --stop-date="-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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。