mysql 数据恢复实例

博客介绍了基于二进制日志进行数据恢复,包含MySQL数据恢复演练实例,转载自相关博客。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于二进制日志数据恢复

mysql数据恢复演练实例

    如何按需截取日志
    基于position好的截取
        --start-position=
        --stop-position=
       mysqlbinlog --start-position=219 --stop-position=1272 /data/binlog/mysql-bin.000002 >/tmp/back.sql
    恢复
        删除库 mysql> drop database oldboy1;
               mysql> show databases;
        恢复时不产生二进制日志
            mysql> set sql_log_bin=0;    //临时关闭二进制日志
            mysql> source /tmp/bin.sql   //恢复
基于时间点的截取
    --start-datetime
    --stop-datetime
    for example: 2004-12-25 11:25:56
案例: 使用binlog日志进行数据恢复
    模拟:
    1. 
    [(none)]>create database binlog charset utf8mb4;
    2. 
    [(none)]>use binlog;
    [binlog]>create table t1(id int);
    3. 
    [binlog]>insert into t1 values(1);
    [binlog]>commit;
    [binlog]>insert into t1 values(2);
    [binlog]>commit;
    [binlog]>insert into t1 values(3);
    [binlog]>commit;
    4. 
    [binlog]>drop database binlog;
    恢复
        1、找到起点和终点
        mysql> show master status;
        +------------------+----------+--------------+------------------+-----------------
        | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set
        +------------------+----------+--------------+------------------+-----------------
        | mysql-bin.000002 |     1435 |              |                  |                  
        +------------------+----------+--------------+------------------+-----------------
        mysql> show binlog events in 'mysql-bin.000002';
        命令行:mysqlbinlog --start-position=219 --stop-position=1272 /data/binlog/mysql-bin.000002 >/tmp/back.sql
        恢复
              mysql> set sql_log_bin=0;    //临时关闭二进制日志
              mysql> source /tmp/bin.sql   //恢复
              # 5. 验证数据
                    mysql> use binlog
                    Database changed
                    mysql> select * from t1;
                    +------+
                    | id   |
                    +------+
                    |    1 |
                    |    2 |
                    |    3 |
                    +------+
                    

转载于:https://www.cnblogs.com/jiangyatao/p/11087085.html

### 如何使用 DBeaver 恢复 MySQL 数据库中的丢失或损坏的数据 当面对 `.ibd` 文件发生损坏的情况,如果未启用 `innodb_force_recovery` 参数,则数据文件可能无法正常读取。为此,在尝试通过任何工具如 DBeaver 进行修复前,建议先调整 MySQL 配置以允许强制恢复模式[^1]。 #### 修改 MySQL 配置支持 InnoDB 强制恢复 编辑 MySQL 的配置文件(通常是 my.cnf 或 my.ini),定位至 `[mysqld]` 节点下追加如下设置: ```ini innodb_force_recovery = 1 ``` 重启 MySQL 服务使更改生效。此参数值范围为 1 至 6,数值越大表示越激进的恢复策略;一般情况下推荐从最小值开始测试直至能够访问受损表为止。 #### 利用 DBeaver 执行基本恢复流程 一旦启用了适当级别的 `innodb_force_recovery` 后,可以借助图形化界面工具像 DBeaver 来简化操作过程: - **连接数据库实例**:启动 DBeaver 并新建一个针对目标 MySQL 实例的连接。 - **导出受影响表格结构与内容**:对于那些因物理存储层问题而变得不可靠的对象,应该尽快将其定义连同现有记录一起转储出来作为临时副本保存。可以通过右键点击对应的 schema/table 然后选择 "Export Data..." 功能来实现这一点。 ```sql SELECT * INTO OUTFILE '/tmp/damaged_table.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM damaged_database.damaged_table; ``` - **重建对象并重新导入数据**:创建新的空表替代旧版本,并利用之前导出的结果集填充进去。注意要确保新老两版之间的字段映射关系正确无误。 ```sql CREATE TABLE new_schema.new_table LIKE old_schema.old_table; LOAD DATA INFILE '/tmp/damaged_table.csv' INTO TABLE new_schema.new_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'; ``` 上述方法适用于部分场景下的简单恢复需求,但对于更复杂的情形则需考虑采用其他手段比如基于二进制日志重做事务等措施[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值