MySQL 数据恢复方法(一)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySQL 数据库故障及误操作恢复方法

数据库故障,需要恢复新实例

使用场景

主数据库故障,无法恢复,且没有容灾及高可用。需要通过备份文件进行恢复。

所需资源

  1. 数据库备份文件
  2. 备份点-故障点之间的binlog文件
  3. 机器资源

操作说明

mysqldump备份文件恢复

  1. 拷贝备份文件到目标机器
  2. 登录新建的目标数据库实例

    1. /opt/alisql/bin/mysql -uroot -p
      Enter password:
      Welcome to the MySQL monitor.  Commands end with ; or \g.
      Your MySQL connection id is 18
      Server version: 5.6.32-log Source distribution
      
      Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
      
      Oracle is a registered trademark of Oracle Corporation and/or its
      affiliates. Other names may be trademarks of their respective
      owners.
      
      Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
      
      AI 代码解读

3. 使用source命令导入备份文件 $mysqldump.sql
   1.     ```
root@(none) 01:57:16>source mysqldump.sql;
AI 代码解读

xtrabackup备份文件恢复(仅供全量备份参考)

  1. 拷贝备份文件到目标机器
  2. innobackupex prepare

  3. --apply-log --defaults-file=my.cnfusememory=2048Mbackupdir

3. innobackupex restore
   1.     ```
innobackupex --copy-back --defaults-file=$my.cnf --use-memory=2048M $backupdir (必须清空mysqldata目录)
AI 代码解读
  1. 修改文件权限

  2. -R mysql:mysql $mysqldata

5. 启动新的数据库实例
   1.     ```
cd $mysql_bin_dir; ./bin/mysqld_safe --defaults-file=$my.cnf &
AI 代码解读

数据误操作(INSERT、DELETE、UPDATE)

使用场景

数据被错误变更,需要恢复记录到正确状态

所需资源

  1. 可以连接目标数据库的机器
  2. binlog日志
  3. binlog2sql工具

操作说明

  1. 环境准备

    1. 部署binlog2sql工具
    2. 调试目标数据库连接
  2. 明确最初误操作开始的binlog文件名$first_binlog_file
  3. 使用binlog2sql工具生成rollback SQL

  4. binlog2sql/binlog2sql.py --flashback -hdbhostP3306uuser -p'passddatabase --start-file='$first_binlog_file' > /tmp/rollback.sql

4.rollback SQL进行审核整理
5. 登录数据库进行rollback操作
   1.     ```
root@(none) 01:57:16>source rollback.sql;
AI 代码解读
  1. 验证数据

数据库误操作(DROP TABLE)

使用场景

数据整张表被误删除,需要恢复到正确状态

所需资源

  1. 被误删除表的数据库$dst_db
  2. 数据库备份文件(误删除之前)
  3. 备份点-误操作之间的binlog文件
  4. 可以连接目标数据库的机器
  5. 恢复用机器资源$backup_host
  6. binlog2sql工具

操作说明

  1. 在$backup_host上使用备份文件恢复数据库,参照第一部分《数据库故障,需要恢复新实例》
  2. 在$dst_db数据库上,使用binlog2sql工具生成误删除表有关的SQL(备份点-误删除点之间的操作记录)

  3. binlog2sql/binlog2sql.py --flashback -hdbhostP3306uuser -p'passddatabase -tstartfile=备份点所在的binlog文件' > /tmp/execute.sql

3. 登录到$backup_host数据库,进行恢复execute.sql数据操作
   1.     ```
root@(none) 01:57:16>source execute.sql;
AI 代码解读
  1. 在$backup_host上使用mysqldump备份被误删除的表

  2. -hbackuphostuuser -p passtable > $table.sql

5. 登录到$dst_db数据库,将mysqldump出的文件数据导入到目标数据库
   1.     ```
root@(none) 01:57:16>source $table.sql;
AI 代码解读
  1. 验证数据
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
1
0
0
32443
分享
相关文章
【YashanDB知识库】共享从 MySQL异常处理CONTINUE HANDLER的改写方法
【YashanDB知识库】共享从 MySQL异常处理CONTINUE HANDLER的改写方法
MySQL细节优化:关闭大小写敏感功能的方法。
通过这种方法,你就可以成功关闭 MySQL 的大小写敏感功能,让你的数据库操作更加便捷。
54 19
【YashanDB知识库】MySQL field 函数的改写方法
【YashanDB知识库】MySQL field 函数的改写方法
【YashanDB知识库】共享从 MySQL异常处理CONTINUE HANDLER的改写方法
本文介绍了MySQL中`CONTINUE HANDLER FOR NOT FOUND`的用法及其在YashanDB中的改写方法。通过一个示例存储过程,展示了如何使用游标和异常处理机制来应对“未找到数据”的情况。在MySQL中,`CONTINUE HANDLER`用于捕获此类异常;而在YashanDB中,则需改用游标的`%NOTFOUND`属性和`NO_DATA_FOUND`异常处理。文章对比了两者的执行效果,帮助用户顺利完成从MySQL到YashanDB的业务迁移。
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
321 1
【YashanDB知识库】MySQL field 函数的改写方法
本文来自YashanDB官网,介绍将MySQL的FIELD函数改写到YashanDB的方法。MySQL中,FIELD函数用于自定义排序;而在YashanDB中,可使用DECODE或CASE语句实现类似功能。示例展示对表`t1`按指定顺序排序的过程,提供两种改写方式,结果均符合预期。
【YashanDB知识库】MySQL返回结果集的存储过程的改写方法
本文介绍了将MySQL存储过程改写至YashanDB的解决方案。由于MySQL存储过程可直接返回结果集,而YashanDB需通过返回SYS_REF_CURSOR的函数实现类似功能,因此需要对代码进行转换。示例中展示了如何将MySQL存储过程`proc1`改写为YashanDB函数,并调整JDBC应用代码以适配REF_CURSOR输出参数,从而正确获取查询结果。此方法确保了跨数据库场景下的兼容性与功能性。
服务器数据恢复—云服务器上mysql数据库数据恢复案例
某ECS网站服务器,linux操作系统+mysql数据库。mysql数据库采用innodb作为默认存储引擎。 在执行数据库版本更新测试时,操作人员误误将在本来应该在测试库执行的sql脚本在生产库上执行,导致生产库上部分表被truncate,还有部分表中少量数据被delete。
86 25
提高MySQL查询性能的方法有很多
提高MySQL查询性能的方法有很多
378 7
数据库数据恢复——MySQL简介和数据恢复案例
MySQL数据库数据恢复环境&故障: 本地服务器,安装的windows server操作系统。 操作系统上部署MySQL单实例,引擎类型为innodb,表空间类型为独立表空间。该MySQL数据库没有备份,未开启binlog。 人为误操作,在用Delete命令删除数据时未添加where子句进行筛选导致全表数据被删除,删除后未对该表进行任何操作。

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等