MySQL 数据恢复方法(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 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.
      

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

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

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

  3. --apply-log --defaults-file=$my.cnf --use-memory=2048M $backupdir

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

  2. -R mysql:mysql $mysqldata

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

数据误操作(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 -h$db_host -P3306 -u$user -p'$pass' -d$database --start-file='$first_binlog_file' > /tmp/rollback.sql

4. 对rollback SQL进行审核整理
5. 登录数据库进行rollback操作
   1.     ```
root@(none) 01:57:16>source rollback.sql;
  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 -h$db_host -P3306 -u$user -p'$pass' -d$database -t$误删除的表名 --start-file='$备份点所在的binlog文件' > /tmp/execute.sql

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

  2. -h$backup_host -u $user -p $pass $table > $table.sql

5. 登录到$dst_db数据库,将mysqldump出的文件数据导入到目标数据库
   1.     ```
root@(none) 01:57:16>source $table.sql;
  1. 验证数据
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
关系型数据库 MySQL 索引
MySQL的全文索引查询方法
【8月更文挑战第26天】MySQL的全文索引查询方法
41 0
|
2月前
|
存储 关系型数据库 MySQL
mysql数据库查询时用到的分页方法有哪些
【8月更文挑战第16天】在MySQL中,实现分页的主要方法包括:1)使用`LIMIT`子句,简单直接但随页数增加性能下降;2)通过子查询优化`LIMIT`分页,提高大页码时的查询效率;3)利用存储过程封装分页逻辑,便于复用但需额外维护;4)借助MySQL变量实现,可能提供更好的性能但实现较复杂。这些方法各有优缺点,可根据实际需求选择适用方案。
189 2
|
2月前
|
SQL 存储 关系型数据库
【MySQL核心】MySQL 数据恢复-ibd2sql
【MySQL核心】MySQL 数据恢复-ibd2sql
|
2月前
|
编解码 缓存 关系型数据库
【MySQL 核心】MySQL数据恢复-dbsake
【MySQL 核心】MySQL数据恢复-dbsake
|
2天前
|
存储 关系型数据库 MySQL
提高MySQL查询性能的方法有很多
提高MySQL查询性能的方法有很多
19 6
|
13天前
|
关系型数据库 MySQL 数据库
Python MySQL查询返回字典类型数据的方法
通过使用 `mysql-connector-python`库并选择 `MySQLCursorDict`作为游标类型,您可以轻松地将MySQL查询结果以字典类型返回。这种方式提高了代码的可读性,使得数据操作更加直观和方便。上述步骤和示例代码展示了如何实现这一功能,希望对您的项目开发有所帮助。
49 4
|
13天前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
25 4
|
13天前
|
关系型数据库 MySQL Unix
MySQL配置不区分大小写的方法
结论 通过适当配置 lower_case_table_names参数以及在数据定义和查询中选择合适的校对规则,可以灵活地控制MySQL中的大小写敏感性,以适应不同的应用场景和需求。这样的设置既可以增加数据库的兼容性,又可以在必要时利用大小写敏感性进行精确的数据处理。需要注意的是,修改 lower_case_table_names参数后,最好在数据库初始化时进行,以避免现有表名的大小写问题。
34 3
|
21天前
|
存储 关系型数据库 MySQL
技术解析:MySQL中取最新一条重复数据的方法
以上提供的两种方法都可以有效地从MySQL数据库中提取每个类别最新的重复数据。选择哪种方法取决于具体的使用场景和MySQL版本。子查询加分组的方法兼容性更好,适用于所有版本的MySQL;而窗口函数方法代码更简洁,执行效率可能更高,但需要MySQL 8.0及以上版本。在实际应用中,应根据数据量大小、查询性能需求以及MySQL版本等因素综合考虑,选择最合适的实现方案。
97 6
|
20天前
|
存储 缓存 关系型数据库
MySQL 查询优化方法
在数据库应用中,高效的查询性能至关重要。本文探讨了常用的 MySQL 查询优化方法,包括索引优化(选择合适的索引字段、复合索引、定期维护索引)、查询语句优化(避免全表扫描、限制返回行数、避免使用不必要的函数)、表结构优化(选择合适的数据类型、分区表、定期清理无用数据)及数据库配置优化(调整缓存大小、优化存储引擎参数)。通过这些方法,可以显著提高 MySQL 的查询性能,为应用程序提供更好的用户体验。
下一篇
无影云桌面