zoukankan      html  css  js  c++  java
  • MySQL恢复数据

     从图中可以查看 test数据库中有m_member表,表中有三条数据

     一,整库备份

    mysqldump -uroot -p  --master-data=2 --single-transaction --events --triggers --routines test > back_test.sql

    二,使用Mysql 导入test库,可以导入为其他库名

    首先建立数据库test_1

    mysql -uroot -p  -e "create database test_1";

    接着查看数据库是否创建成功

     接着退出mysql客户端,继续在linux shell行上执行导入操作

    mysql -uroot -p test_1 < /data/back_test.sql 

     可以看到test数据库已经恢复成功.


    二,利用--tab备份的表和数据恢复单表数据

     mysqldump -uroot -p  --master-data=2 --single-transaction --events --triggers --routines test m_member --tab="/data/backup";

    表示在/data/backup 目录下备份m_member表. 此目录下会生成m_member.sql(表结构文件)和 m_member.txt(数据)

    二 恢复

     导入表结构

    source /data/backup/m_member.sql;

     导入数据

    load data infile '/data/backup/m_member.txt' into table m_member;


    如何进行指定时间点的恢复

    先决条件

    具有指定时间点前的一个全备

    具有自上次全备后到指定时间点的所有二进制日志

    准备测试数据,如下

    第一步m_order数据库进行全量备份

    mysqldump  -uroot -p --master-data=2 --single-transaction --triggers --events --routines --databases m_order > m_order.sql;

    接下来新建m_user表,并且插入数据

    create table  m_user(`id` int(11) unsigned not null auto_increment, `user_id` int(11) unsigned not null default 0, `user_name` varchar(100) not null default '',primary key(`id`)) engine=InnoDB;
    insert into m_user(user_id,user_name) values(1,'zhangsan'),(2,"lisi"),(3,"zhangsan2"),(6,"lisi6"),("8","wangwu8");

     然后删除id >2的数据

    delete from m_user where id >2;

     首先利用全量备份恢复数据

    mysql -uroot -p m_order < m_order.sql 

    查看全量备份m_order库中的binlog文件和pos值

    more m_order.sql 

     查看binlog上次从m_order库中 position开始值为76914开始删除的点

     mysqlbinlog -v --base64-output=decode-rows --database=m_order --start-position=76914 mysql-bin.000001 |grep -B3 DELETE|more

     此时的stop-position = 78336,

    从开始点到结束点 导出sql数据

     mysqlbinlog --start-position=76914 --stop-position=78336 --database=m_order mysql-bin.000001 > m_diff.sql

    恢复数据

    mysql -uroot -p m_order < m_diff.sql

    此时报m_user表已存在,先删除m_user表

     此时再执行恢复语句

    mysql -uroot -p m_order < m_diff.sql

    此时可以看到数据已经恢复删除之前的数据

  • 相关阅读:
    Matlab Tricks(二十九) —— 使用 deal 将多个输入赋值给多个输出
    释名 —— 名称的含义、来源
    Eclipse快捷键 今天又学会了几个不常用的 收藏了
    HDU 2527
    UVAlive 2326 Moving Tables(贪心 + 区间问题)
    STM32关于优先级设定的理解 NVIC_SetPriority()
    linux6.2安装mysql
    【PAT】1009. Product of Polynomials (25)
    Android的重力传感器(3轴加速度传感器)简单实例
    out/target/common/obj/PACKAGING/public_api.txt android.view.KeyEvent.KEYCODE_has changed value from
  • 原文地址:https://www.cnblogs.com/aln0825/p/15070682.html
Copyright © 2011-2022 走看看