加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql应用mysql学习之数据备份与恢复

发布时间:2020-12-12 00:48:32 所属栏目:MySql教程 来源:网络整理
导读:《Mysql应用mysql学习之数据备份与恢复》要点: 本文介绍了Mysql应用mysql学习之数据备份与恢复,希望对您有用。如果有疑问,可以联系我们。 导读:该文使用mysql5.5 centos6.5 64位(本人使用rpm安装mysql,数据库的安装目录默认)一、数据备份注意事项读锁问

《Mysql应用mysql学习之数据备份与恢复》要点:
本文介绍了Mysql应用mysql学习之数据备份与恢复,希望对您有用。如果有疑问,可以联系我们。

导读:该文使用mysql5.5 centos6.5 64位(本人使用rpm安装mysql,数据库的安装目录默认)一、数据备份注意事项读锁问题:数据库(或者某个表)... 该文使用mysql5.5 centos6.5 64位(本人使用rpm安装mysql,数据库的安装目录默认)

一、数据备份注意事项

MYSQL教程读锁问题:数据库(或者某个表)一旦进行读锁操作则影响数据库的写操作所以此时不能对数据库进行写操作.之所以在数据备份的时候进行读锁操作是为了保证备份数据的完整性一致性,在数据备份完成后会自动进行解锁.

MYSQL教程更新日志问题:每次备份数据的时候新生成一个日志文件,这样数据库在备份一段时间后突然崩溃可以通过该bin-log日志还原该时间段的数据.数据恢复的步骤:恢复备份的数据+还原最新bin-log日志中的数据

二、使用mysqldump进行书籍备份

MYSQL教程mysqldump:命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中.

MYSQL教程mysqldump命令的工作原理:它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句.然后,将表中的所有记录转换成一条INSERT语句.然后通过这些语句,就能够创建表并插入数据.

MYSQL教程?

MYSQL教程将test数据库备份到/tmp/mysql_back/目录下

MYSQL教程?[root@localhost tmp]# mysqldump -uroot -p222221 test -l -F > '/tmp/mysql_back/test.sql';

MYSQL教程参数解读:

MYSQL教程1、mysqldump mysql数据备份的命令

MYSQL教程2、-uroot -p222221? 用户名密码

MYSQL教程3、test:要备份的数据库名

MYSQL教程4、-l:进行读锁控制

MYSQL教程5、-F:生成新日志文件

MYSQL教程执行该语句后会发现在 /var/lib/mysql 目录下会生成一个新的bin-log日志 mysql-bin.000002

MYSQL教程6、/tmp/mysql_back/test.sql :生成备份文件的位置及名称

三、数据恢复

MYSQL教程1、备份数据的恢复:

MYSQL教程  [root@localhost tmp]# mysql -uroot -p222221 test -v -f</tmp/mysql_back/test.sql

MYSQL教程  -v:查看导入的详细信息

MYSQL教程  -f:导入过程中遇到错误时可以skip过,继续执行下面的语句.

MYSQL教程2、bin-log日志中数据的还原:

MYSQL教程  该日志在/var/lib/mysql下mysql-bin.000002日志中所有的记录

MYSQL教程  [root@localhost mysql]# mysqlbinlog --no-defaults mysql-bin.000002 |mysql -uroot -p222221 test;

MYSQL教程3、还原bin-log日志中指定位置的数据

MYSQL教程通过 position位置还原数据

?

  1. BEGIN?
  2. /*!*/;?
  3. #?at?175?
  4. #170206?22:55:48?server?id?1??end_log_pos?263?????Query????thread_id=17????exec_time=0????error_code=0?
  5. use?`test`/*!*/;?
  6. SET?TIMESTAMP=1486392948/*!*/;?
  7. insert?into?t1?values(10)?
  8. /*!*/;?
  9. #?at?263?
  10. #170206?22:55:48?server?id?1??end_log_pos?290?????Xid?=?178?
  11. COMMIT/*!*/;?
  12. #?at?290?
  13. #170206?22:55:54?server?id?1??end_log_pos?358?????Query????thread_id=17????exec_time=0????error_code=0?
  14. SET?TIMESTAMP=1486392954/*!*/;?
  15. BEGIN?
  16. /*!*/;?
  17. #?at?358?
  18. #170206?22:55:54?server?id?1??end_log_pos?446?????Query????thread_id=17????exec_time=0????error_code=0?
  19. SET?TIMESTAMP=1486392954/*!*/;?
  20. insert?into?t1?values(12)?
  21. /*!*/;?
  22. #?at?446?
  23. #170206?22:55:54?server?id?1??end_log_pos?473?????Xid?=?179?
  24. COMMIT/*!*/;?
  25. #?at?473?
  26. #170206?22:56:42?server?id?1??end_log_pos?547?????Query????thread_id=17????exec_time=0????error_code=0?
  27. SET?TIMESTAMP=1486393002/*!*/;?
  28. truncate?t1?

MYSQL教程还原该bin-log日志中position 位置在 172,473 中的数据(end_log_pos)

MYSQL教程[root@localhost mysql]# mysqlbinlog --no-defaults mysql-bin.000002 --start-position="175" --stop-position="473"|mysql -uroot -p222221 test;

MYSQL教程4、还原bin-log日志中指定时间段的数据

MYSQL教程格式:将3中即可

MYSQL教程--start-position="175"? 替换为 --start-date="2016-12-30 21:30:34"

MYSQL教程--stop-position="473" 替换为 --stop-date="2016-12-30 23:30:34"

每天用心记录一点点.内容也许不重要,但习惯很重要!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读