mysql 数据库恢复实例

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

mysql 数据库恢复实例

 

2011年10月17日由于误把 xen server 服务器电源拔掉(~~!!),导致xen server 上的 虚拟机  zabbix 数据库出错,虽然不是很重要(用来监控公司内网网关服务器),但是监控一年的数据不能就这么没了,想到zabbix数据库还有备份的sql 文件与mysql 二进制日志文件,尝试下恢复mysql 数据库,成功并且恢复的过程非常简单!

 

恢复过程

 

 
  1. #详细步骤
  2.  
  3. #1 记住误删除表(或者出错)的时间 例如 Oct 17 08:30:27 CST 2011 
  4. #2 先 drop database zabbix ;  
  5.    再 create database zabbix;(或者跳过直接执行第3步) 
  6. #3 导入备份的sql文件  
  7.    mysql -uroot -pdong zabbix < zabbix20111016.sql 
  8. #4 如果有主从,停掉从服务器  
  9.    例如 mysql>stop slave;  
  10. #5 从二进制日志文件得到sql语句 
  11. #20111017 
  12.    mysqlbinlog --database=zabbix --stop-datetime="2011-10-17 08:30:00" mysql-bin.000158 > test.sql 
  13. #6 恢复sql 文件 
  14. #20110425 
  15.    mysql -root -pdong zabbix < test.sql 
  16. #20111017  
  17.    mysql -root -pdong zabbix < test.sql  
  18. #7 关于二进制日志文件 
  19. 正常是每天17:59生成一个二进制日志文件,8:34是掉电后重启服务器生成的二进制日志文件 
  20. -rw-rw---- 1 mysql mysql  269983630 Oct 14 17:59 mysql-bin.000155 
  21. -rw-rw---- 1 mysql mysql  269744900 Oct 15 17:59 mysql-bin.000156 
  22. -rw-rw---- 1 mysql mysql  270254094 Oct 16 17:59 mysql-bin.000157 
  23. -rw-rw---- 1 mysql mysql  164263912 Oct 17 08:34 mysql-bin.000158 
  24.  
  25. #8 关于从库数据恢复(可选) 
  26. -rw-rw---- 1 mysql mysql  270254094 Oct 16 17:59 mysql-bin.000157 
  27. -rw-rw---- 1 mysql mysql  164263912 Oct 17 08:34 mysql-bin.000158 
  28. -rw-rw---- 1 mysql mysql     953434 Oct 17 10:07 mysql-bin.000159 
  29. -rw-rw---- 1 mysql mysql 1073749046 Oct 17 11:21 mysql-bin.000160 
  30. -rw-rw---- 1 mysql mysql  414747331 Oct 17 12:00 mysql-bin.000161 
  31. -rw-rw---- 1 mysql mysql   24960747 Oct 17 13:42 mysql-bin.000162 
  32. -rw-rw---- 1 mysql mysql       6042 Oct 17 12:00 mysql-bin.index 
  33.  
  34. 主库,关闭了数据库以前旧的二进制文件全部删除掉,重启后将生成新的二进制日志文件,从000001开始 
  35. /etc/init.d/mysqld stop 
  36. tar czvf 20111017.tar.gz zabbix/ 
  37. mkdir tmp 
  38. mv mysql-bin.* tmp/ 
  39. scp 20111017.tar.gz root@192.168.57.82:/root/ 
  40. /etc/init.d/mysqld start 
  41. ll 
  42. -rw-r--r-- 1 root  root  362462977 Oct 17 14:42 20111017.tar.gz 
  43. -rw-rw---- 1 mysql root     812700 Oct 17 14:45 cl3.test.com.err 
  44. -rw-rw---- 1 mysql mysql         6 Oct 17 14:45 cl3.test.com.pid 
  45. -rw-rw---- 1 mysql mysql  17638261 Oct 17 14:46 lowquery.log 
  46. drwx------ 2 mysql root       4096 May  4 10:35 mysql 
  47. -rw-rw---- 1 mysql mysql   7046279 Oct 17 15:17 mysql-bin.000001 
  48. -rw-rw---- 1 mysql mysql        38 Oct 17 14:45 mysql-bin.index 
  49. drwxr-xr-x 2 root  root       4096 Oct 17 14:42 tmp 
  50. drwx------ 2 mysql mysql     12288 Oct 17 11:23 zabbix 
  51.  
  52.  
  53. 从库,重置了slave从库信息,重新建立从库信息,由于主库二进制日志从新开始,所以 master_log_file='mysql-bin.000001',master_log_pos=1
  54.  
  55. /etc/init.d/mysqld stop 
  56. mv /usr/local/mysql/var/zabbix /usr/local/mysql/var/zabbix_tmp 
  57. tar zxvf 20111017.tar.gz -C /usr/local/mysql/var/ 
  58. /etc/init.d/mysqld start 
  59. mysql -uroot -p 
  60. mysql> reset slave; 
  61. mysql> change master to master_host='192.168.6.53',master_user='dongnan',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=1
  62. Query OK, 0 rows affected (0.01 sec) 
  63.  
  64. mysql> slave start; 
  65. Query OK, 0 rows affected (0.00 sec) 
  66.  
  67. mysql> show slave status \G; 
  68. *************************** 1. row *************************** 
  69.                Slave_IO_State: Waiting for master to send event 
  70.                   Master_Host: 192.168.6.53 
  71.                   Master_User: dongnan
  72.                   Master_Port: 3306 
  73.                 Connect_Retry: 60 
  74.               Master_Log_File: mysql-bin.000001 
  75.           Read_Master_Log_Pos: 3249706 
  76.                Relay_Log_File: zabbix-slave-relay-bin.000002 
  77.                 Relay_Log_Pos: 3249851 
  78.         Relay_Master_Log_File: mysql-bin.000001 
  79.              Slave_IO_Running: Yes 
  80.             Slave_SQL_Running: Yes 
  81.  
  82.  
  83.  
  84. #mysqlbinlog 其它 
  85. #找到 2011-10-16 17:00:00 到 2011-10-16 17:58:59 这期间的sql语句 
  86. mysqlbinlog --database=zabbix --start-datetime="2011-10-16 17:00:00" --stop-datetime="2011-10-16 17:58:59" mysql-bin.000157 > test2.sql 
  87.  
  88. du -sh test2.sql 
  89. 16M test2.sql 
  90.  
  91. head test2.sql 
  92. /*!40019 SET @@session.max_insert_delayed_threads=0*/; 
  93. /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; 
  94. DELIMITER /*!*/; 
  95. # at 4 
  96. #111015 17:59:02 server id 1  end_log_pos 106   Start: binlog v 4, server v 5.1.55-log created 111015 17:59:02 
  97. BINLOG ' 
  98. ZlmZTg8BAAAAZgAAAGoAAAAAAAQANS4xLjU1LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
  99. AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC 
  100. '/*!*/; 
  101. # at 259091243 
  102.  
  103. tail test2.sql 
  104. /*!*/; 
  105. # at 270239069 
  106. #111016 17:58:56 server id 1  end_log_pos 270239321     Query   thread_id=120   exec_time=0 error_code=0 
  107. SET TIMESTAMP=1318759136/*!*/; 
  108. insert into history_uint (itemid,clock,value) values (18532,1318759132,25427968),(18533,1318759133,43491328),(18534,1318759134,4308992),(18504,1318759134,15250739200),(18535,1318759135,0) 
  109. /*!*/; 
  110. DELIMITER ; 
  111. # End of log file 
  112. ROLLBACK /* added by mysqlbinlog */; 
  113. /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; 
  114.  
  115. mysql -uroot -pdong zabbix < test2.sql 
  116.  
  117. #/usr/local/mysql/bin/mysqlbinlog --database=zabbix mysql-bin.000013 > test.txt 
  118. #head -n 10 test.txt  
  119. #/usr/local/mysql/bin/mysqlbinlog --start-datetime="2011-04-20 15:33:51" mysql-bin.000013 | /usr/local/mysql/bin/mysql -uroot -p 

 

结束

整个恢复过程无非就是导入前一天的备份的 sql 文件,然后按时间或者按position从二进制日志中得到想要的sql语句,再次导入数据库即可!如果有从库的话再导出一份数据到从库就可以了!

 本文转自 dongnan 51CTO博客,原文链接:http://blog.51cto.com/dngood/710322



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
22天前
|
存储 监控 安全
数据库多实例的部署与配置方法
【10月更文挑战第23天】数据库多实例的部署和配置需要综合考虑多个因素,包括硬件资源、软件设置、性能优化、安全保障等。通过合理的部署和配置,可以充分发挥多实例的优势,提高数据库系统的运行效率和可靠性。在实际操作中,要不断总结经验,根据实际情况进行调整和优化,以适应不断变化的业务需求。
|
1月前
|
存储 关系型数据库 MySQL
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
95 1
|
1月前
|
SQL 前端开发 关系型数据库
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
49 0
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
|
22天前
|
负载均衡 网络协议 数据库
选择适合自己的数据库多实例负载均衡技术
【10月更文挑战第23天】选择适合自己的数据库多实例负载均衡技术需要全面考虑多种因素。通过深入的分析和评估,结合自身的实际情况,能够做出明智的决策,为数据库系统的高效运行提供有力保障。
106 61
|
22天前
|
存储 负载均衡 监控
数据库多实例的深入解析
【10月更文挑战第24天】数据库多实例是一种重要的数据库架构方式,它为数据库的高效运行和灵活管理提供了多种优势。在实际应用中,需要根据具体的业务需求和技术环境,合理选择和配置多实例,以充分发挥其优势,提高数据库系统的性能和可靠性。随着技术的不断发展和进步,数据库多实例技术也将不断完善和创新,为数据库管理带来更多的可能性和便利。
92 57
|
22天前
|
缓存 负载均衡 监控
数据库多实例的负载均衡技术深入
【10月更文挑战第23天】数据库多实例负载均衡技术是确保数据库系统高效运行的重要手段。通过合理选择负载均衡策略、实时监控实例状态、不断优化调整,能够实现资源的最优分配和系统性能的提升。在实际应用中,需要根据具体情况灵活运用各种负载均衡技术,并结合其他相关技术,以满足不断变化的业务需求。
|
11天前
|
关系型数据库 MySQL 数据库
【赵渝强老师】启动与关闭MySQL数据库实例
MySQL数据库安装完成后,可以通过命令脚本启动、查看状态、配置开机自启、查看自启列表及关闭数据库。本文提供了详细的操作步骤和示例代码,并附有视频讲解。
|
1月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
64 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
1月前
|
存储 关系型数据库 MySQL
mysql 8.0 的 建表 和八种 建表引擎实例
mysql 8.0 的 建表 和八种 建表引擎实例
21 0
|
1月前
|
存储 关系型数据库 MySQL
Key_Value 形式 存储_5级省市城乡划分代码 (mysql 8.0 实例)
本文介绍了如何使用MySQL8.0数据库中的Key_Value形式存储全国统计用区划代码和城乡划分代码(5级),包括导入数据、通过数学函数提取省市区信息,以及查询5级行政区划的详细数据。
32 0