模拟数据库在某次备份后但未达到下次备份时间中,被意外删除的数据

此处恢复hello数据库和里面的students表

使用工具:均为mariadb-server自带

1 mysqldump

2 mysqlbinlog

前提条件:

二进制日志文件必须开启

MariaDB [(none)]> show master logs;

+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000001 | 7674 |

| mysql-bin.000002 | 264 |

| mysql-bin.000003 | 15864234 |

| mysql-bin.000004 | 30379 |

| mysql-bin.000005 | 1038814 |

| mysql-bin.000006 | 264 |

| mysql-bin.000007 | 245 |

+------------------+-----------+

但因为我服务器上有过二进制日志文件,清除掉这些二进制日志

1 MariaDB [hello]> reset master;

MariaDB [hello]> show master logs;+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000001 | 245 |

+------------------+-----------+

现在就是个干净的日志文件

1 cat /etc/my.cnf2 [mysqld]

3 log_bin=/data/logbin/mysql-bin

这里指定了二进制日志文件的位置,实际生产中,建议二进制日志文件放在其他盘上,实在没有,最好也在其他分区上

sql_log_bin=ON|OFF:是否记录二进制日志,默认ON

log_bin=/PATH/BIN_LOG_FILE:指定文件位置;默认OFF,表示不启用二进制日志功能,上述两项都开启才可

注释:MariaDB [hello]>这个表示在数据库中执行的,没有这个就表示在shell命令中执行的

一、开始全局备份重定向到 /data/下,备份文件后的文件名为all.sql

mysqldump -A --master-data=2 > /data/all.sql

# 注释:此处-A表示全局备份,--master-data=后面有两个选项,分别是1和2,1可以用来配合主从复制,此处我没有配置主从服务器就选择2就可以

1和2区别1是命令,而2只是个注释

1:

2:

mysql -e 'show master logs'

+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000001 | 245 |

+------------------+-----------+

# 注释:此处为了看的清除,我清除了之前的二进制日志文件,现在的位置是245(初始的二进制日志文件就是245)

二、切换到hello表,查看表中的数据,以做后续参考

MariaDB [mysql]> usehello

MariaDB[hello]> select * fromstudents;+-------+---------------+-----+--------+---------+-----------+

| StuID | Name | Age | Gender | ClassID | TeacherID |

+-------+---------------+-----+--------+---------+-----------+

| 1 | Shi Zhongyu | 22 | M | 2 | 3 |

| 2 | Shi Potian | 22 | M | 1 | 7 |

| 3 | Xie Yanke | 53 | M | 2 | 16 |

| 4 | Ding Dian | 32 | M | 4 | 4 |

| 5 | Yu Yutong | 26 | M | 3 | 1 |

| 6 | Shi Qing | 46 | M | 5 | NULL |

| 7 | Xi Ren | 19 | F | 3 | NULL |

| 8 | Lin Daiyu | 17 | F | 7 | NULL |

| 9 | Ren Yingying | 20 | F | 6 | NULL |

| 10 | Yue Lingshan | 19 | F | 3 | NULL |

| 11 | Yuan Chengzhi | 23 | M | 6 | NULL |

| 12 | Wen Qingqing | 19 | F | 1 | NULL |

| 13 | Tian Boguang | 33 | M | 2 | NULL |

| 14 | Lu Wushuang | 17 | F | 3 | NULL |

| 15 | Duan Yu | 19 | M | 4 | NULL |

| 16 | Xu Zhu | 21 | M | 1 | NULL |

| 17 | Lin Chong | 25 | M | 4 | NULL |

| 18 | Hua Rong | 23 | M | 7 | NULL |

| 19 | Xue Baochai | 18 | F | 6 | NULL |

| 20 | Diao Chan | 19 | F | 7 | NULL |

| 21 | Huang Yueying | 22 | F | 6 | NULL |

| 22 | Xiao Qiao | 20 | F | 1 | NULL |

| 23 | Ma Chao | 23 | M | 4 | NULL |

| 24 | Xu Xian | 27 | M | NULL | NULL |

| 25 | Sun Dasheng | 100 | M | NULL | NULL |

| 26 | a | 20 | F | NULL | NULL |

| 27 | b | 20 | F | NULL | NULL |

+-------+---------------+-----+--------+---------+-----------+

三、对数据进行修改

MariaDB [hello]> insert students (name,age)values('测试1',100);

MariaDB [hello]>insert students (name,age)values('测试2',101);

MariaDB [hello]>insert students (name,age)values('测试3',102);

MariaDB [hello]> update students set classid=111 where stuid=27

备份后修改前:

修改后:

四、开始模拟数据库被异常删除了(实验环境这样,实际生产中千万不要用这种命令)

rm -rf /var/lib/mysql/*

五、先禁止用户通过网络访问,只能使用本地的套接字来连接

vim /etc/my.cnf

skip-networking

六、开始重启服务

systemctl restart mariadb

注释:重新启动数据库,会生成崭新的数据库文件,但里面是没有数据的

七、临时关闭二进制日志文件

MariaDB [(none)]> set sql_log_bin=off;

注释:还原数据的生成二进制日志文件没有什么用,其他用户此时也不能访问,此处暂时不用记录二进制日志文件

八、查看之前的二进制日志文件更新到哪里了

MariaDB [(none)]>show master logs;+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000001 | 1175 |

| mysql-bin.000002 | 30379 |

| mysql-bin.000003 | 1038814 |

| mysql-bin.000004 | 245 |

+------------------+-----------+

注释:此处1,2,3是上次备份之后生成的,需要导出的,而这个4是刚刚启动时生成的(每次重启服务之后会重新生成二进制日志)没有用,可以不用导出

九、其他窗口打开,导出二进制日志文件

mysqlbinlog mysql-bin.000001 > /data/inc.sql

mysqlbinlog mysql-bin.000002 >> /data/inc.sql

mysqlbinlog mysql-bin.000003 >> /data/inc.sql

注释:此处特地分开写,后面两个是追加,mysqlbinlog是导出二进制日志文件的命令

十、回到之前的窗口

把之前备份的文件导入进数据库,还有之前生成的二进制日志文件,也导入进数据库

MariaDB [test]> source /data/all.sql;

MariaDB [test]> source/data/inc.sql

十一、此时查看上次备份后,新增和修改的数据是否恢复成功了。

MariaDB [hello]>  show databases;+--------------------+

| Database |

+--------------------+

| information_schema |

| hello |

| mysql |

| performance_schema |

| test |

+--------------------+

注释:此时hello数据库已经恢复成功了

MariaDB [hello]>show tables;+-----------------+

| Tables_in_hello |

+-----------------+

| classes |

| coc |

| courses |

| scores |

| students |

| teachers |

| testlog |

| toc |

+-----------------+

注释:此时可以查看到之前的students表恢复成功了

注释: 通过 select * from students;可以查看到之前修改过的数据库文件都恢复成功了。

至此恢复完成

mysql 数据库还原后没有_MySQL数据库的备份还原至最新状态相关推荐

  1. mysql数据库 安装后 闪_MYSQL数据库Mysql数据库安装完成后需要进行的6个后续操作...

    <MYSQL数据库Mysql数据库安装完成后需要进行的6个后续操作>要点: 本文介绍了MYSQL数据库Mysql数据库安装完成后需要进行的6个后续操作,希望对您有用.如果有疑问,可以联系我 ...

  2. linux mysql 实战_Linux平台MySQL多实例项目实施_MySQL数据库基础与项目实战06

    Linux平台MySQL多实例项目实施_MySQL数据库基础与项目实战06 视频教程学习地址 Oracle/MySQL数据库学习专用QQ群:336282998.189070296 学完风哥本课程能熟悉 ...

  3. win7系统备份还原软件_泰哥一键备份还原下载_泰哥一键备份还原官方版下载[系统备份]...

          泰哥一键备份还原官方版是一款优秀的系统备份还原工具,泰哥一键备份还原官方版可以帮助用户在 Win32(64).WinPE.DOS 下对任意分区进行一键备份.恢复,泰哥一键备份还原官方版支持 ...

  4. mysql 还原数据库 unknown command 'b'_mysql数据库还原出错ERROR:Unknown command ‘\\’解决手记...

    使用mysql命令行客户端,使用source导入备份文件,但导入中出错, ERROR: Unknown command '\\'. ERROR: Unknown command '\". E ...

  5. mysql数据库备份和还原的命令_Mysql数据库备份和还原常用的命令

    备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库 ...

  6. mysql数据库表格怎么建立_mysql数据库表格怎么建立

    我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...

  7. mysql数据库怎么冷备份恢复_MySQL数据库的备份与恢复

    一.数据备份的重要性 在生产环境中,数据的安全性至关重要 任何数据的丢失都可能产生严重的后果 造成数据丢失的原因 ·程序错误 ·人为操作错误 ·运算错误 ·磁盘故障 ·灾难(如火灾.地震等) 二.数据 ...

  8. mysql删除数据库数据库语句怎么写_mysql数据库的删除语句怎么写

    我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...

  9. mysql负载均衡与同步_MySql数据库从同步负载均衡实时备份

    如果你对MySql数据库主从同步负载均衡实时的备份,的实际操作步骤感到很是很郁闷时.你就可以浏览下面的文章了,供大家分享. 最近将四台MySQL数据库服务器配置成主从模式以实现一定的负载均衡,好象还可 ...

最新文章

  1. kalilinux安装搜狗输入法
  2. 聊聊spring cloud gateway的GlobalFilter
  3. html漂浮广告随页面移动代码,JS漂浮广告代码,慢慢漂移的广告JS代码
  4. ESXI中VM迁移或OVF模板导入linux系统常规操作
  5. [UE4]虚幻引擎的C++环境安装
  6. Android 在 NDK 层使用 OpenSSL 进行 RSA 加密
  7. AngularJS 无限滚动加载数据控件 ngInfiniteScroll
  8. python支持list类型吗_Python-不支持的操作数类型为%:“list”和“int”
  9. 《构建之法》读后的疑惑
  10. RedisConf2018记录--Day 1 sessions
  11. jpa怎么传参到in中_Java中如何处理开关状态的属性字段?
  12. 理财非保本浮动收益型什么意思?
  13. Memory for crash kernel (0x0 to 0x0) notwithin permissible range
  14. Ubuntu下载QQ
  15. 【Codeforces】A1组刷题记录(50/ 50)完结
  16. Edison编译时显示No such file or directory
  17. 免费配音软件有哪些?推荐两款好用的配音软件
  18. 爱情就像是免杀,连鞋都没脱,就悄无声息的走进了你的心里
  19. 深入探索正交投影变换
  20. 深圳电信isp劫持www.google-analytics.com的ga.js来弹出广告窗口分析

热门文章

  1. 计算机组成原理 位宽,数据总线宽度一般为存储单元位宽的整数倍 这怎么理解哦...
  2. Linux怎么查看并杀死被占用的端口?
  3. pycharm/pytorch OSError: 页面文件太小,无法完成操作(改变虚拟内存大小)
  4. Flask学习 黑马程序员-6节课入门Flask框架web开发视频(中途撤退,寻找py3教程)
  5. python PyQt5 sizeHint()
  6. Python 编码规范 TODO注释
  7. Spring Cloud Alibaba:Sentinel 熔断降级
  8. mysql自增主键到头了怎么办_自增主键用完了怎么办
  9. 数据库服务器管理系统,数据库管理系统服务器
  10. SpringBoot集成MybatisPlus 涵盖了目前流行的知识点!!!即用即cv即可!!!学过的同学,也可以存储作为工具!!