一 ,数据备份与恢复

步骤一:使用mysqldump进行逻辑备份

1)备份MySQL服务器上的所有库

将所有的库备份为mysql-all.sql文件:

  1. [root@dbsvr1 ~]# mysqldump -u root -p --all-databases > /root/alldb.sql
  2. Enter password:                                              //验证口令
  3. [root@dbsvr1 mysql]# file /root/alldb.sql         //确认备份文件类型

查看备份文件alldb.sql的部分内容:

# grep -vE '^/|^-|^$' /root/alldb.sql  | head -20

2)只备份指定的某一个库

将userdb库备份为userdb.sql文件:

  1. [root@dbsvr1 ~]# # mysqldump -u root -p jingcaiwang > jingcaiwang.sql
  2. Enter password:                                 //验证口令

查看备份文件userdb.sql的部分内容:

3)同时备份指定的多个库

同时备份mysql、userdb库,保存为mysql+userdb.sql文件:

  1. [root@dbsvr1 ~]# mysqldump -u root -p -B mysql userdb > mysql+test+userdb.sql
  2. Enter password:                                 //验证口令

查看备份文件userdb.sql的部分内容:

  1. [root@dbsvr1 ~]# grep '^CREATE DATA' /root/mysql+userdb.sql

步骤二:使用mysql命令从备份中恢复数据库、表

以恢复userdb库为例,可参考下列操作。通常不建议直接覆盖旧库,而是采用建立新库并导入逻辑备份的方式执行恢复,待新库正常后即可废弃或删除旧库。

1)创建名为userdb2的新库

mysql> create database userdb2;

2)导入备份文件,在新库中重建表及数据

  1. [root@dbsvr1 ~]# mysql -u root -p userdb2 < /root/userdb.sql
  2. Enter password:                                 //验证口令

eg:

# mysql -uroot -p jingcaiwang < /root/jingcaiwang-v2.sql                              //使用备份数据导入

3)确认新库正常,启用新库

  1. mysql> USE userdb2;                             //切换到新库
  2. mysql> show tables;

4)废弃或删除旧库

  1. mysql> DROP DATABASE userdb;

-----------------------------------------------------------------------------------------------------------

二 ,使用binlog日志

步骤一:启用binlog日志

1)调整/etc/my.cnf配置,并重启服务

  1. [root@dbsvr1 ~]# vim /etc/my.cnf
  2. [mysqld]
  3. .. ..
  4. log-bin-index=mysql-bin                             //启用二进制日志,并指定前缀
  5. server_id=1
  6. binlog_format=STATEMENT
  7. //在Mysql5.7中,binlog日志格式默认为ROW,但它不记录sql语句上下文相关信息。需要将binlog日志格式修改为STATEMENT
  8. .. ..
  9. [root@dbsvr1 ~]# systemctl restart mysqld.service

2)确认binlog日志文件

新启用binlog后,每次启动MySQl服务都会新生成一份日志文件:

  1. [root@dbsvr1 ~]# ls /var/lib/mysql/mysql-bin.*
  2. /var/lib/mysql/mysql-bin.000001 /var/lib/mysql/mysql-bin.index

步骤二:利用binlog日志重做数据库操作

1)执行数据库表添加操作

创建db1·库tb1表,表结构自定义:

  1. mysql> CREATE DATABASE db1;
  2. mysql> USE db1;
  3. Database changed
  4. mysql> CREATE TABLE tb1(
  5. -> id int(4) NOT NULL,name varchar(24)
  6. -> );

步骤三:通过binlog日志恢复表记录

binlog会记录所有的数据库、表更改操作,所以可在必要的时候重新执行以前做过的一部分数据操作,但对于启用binlog之前已经存在的库、表数据将不适用。

根据上述“恢复被删除的3条表记录”的需求,应通过mysqlbinlog工具查看相关日志文件,找到删除这些表记录的时间点,只要恢复此前的SQL操作(主要是插入那3条记录的操作)即可。

1)查看mysql-bin.000002日志内容

2) 执行指定Pos节点范围内的sql命令恢复数据

根据上述日志分析,只要恢复从2014.01.12 20:12:14到2014.01.12 20:13:50之间的操作即可。可通过mysqlbinlog指定时间范围输出,结合管道交给msyql命令执行导入重做:

  1. [root@dbsvr1 ~]# mysqlbinlog \
  2. --start-datetime="2017-04-12 12:06:55" \
  3. --stop-datetime="2017-04-12 12:07:23" \
  4. /var/lib/mysql/mysql-bin.000002 | mysql -u root -p
  5. Enter password:                                  //验证口令

第五篇:Mysql的数据备份与恢复---------相关推荐

  1. emq与mysql_EMQ X 插件持久化系列 (五)MySQL MQTT 数据存储

    本文以在 CentOS 7.2 中的实际例子来说明如何通过 MySQL 来存储相关的 MQTT 数据. MySQL 属于传统的关系型数据库产品,其开放式的架构使得用户的选择性很强,而且随着技术的逐渐成 ...

  2. EMQ X 插件持久化系列 (五)MySQL MQTT 数据存储

    本文以在 CentOS 7.2 中的实际例子来说明如何通过 MySQL 来存储相关的 MQTT 数据. MySQL 属于传统的关系型数据库产品,其开放式的架构使得用户的选择性很强,而且随着技术的逐渐成 ...

  3. MySQL 的数据备份与恢复

    数据的备份 导出数据库 打开Admin,具体参考数据库系统概论实验 进入web界面,按照步骤进行导出,会得到st.sql的文件.(st.sql只是示例,具体以导出文件名为准) 数据的恢复 具体名称以文 ...

  4. 五、MySQL之数据操作语言

  5. MySQL数据库,从入门到精通:第十四篇——MySQL视图详解

    MySQL数据库,从入门到精通:第十四篇--MySQL视图详解 第 14 篇_视图 1. 常见的数据库对象 2. 视图概述 2. 1 为什么使用视图? 2. 2 视图的理解 3. 创建视图 3. 1 ...

  6. MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解

    MySQL数据库,从入门到精通:第十二篇--MySQL数据类型详解 第 12 章_MySQL数据类型精讲 1. MySQL中的数据类型 2. 整数类型 2. 1 类型介绍 2. 2 可选属性 2. 2 ...

  7. 焱老师带你学习MYSQL系列 第二篇 (MYSQL 数据结构)

    相关系列链接 焱老师带你学习MYSQL系列 第六篇 (MYSQL是如何实现锁的) 焱老师带你学习MYSQL系列 第五篇 (MYSQL事务隔离级别是如何实现的) 焱老师带你学习MYSQL系列 第四篇 ( ...

  8. MySQL数据库,从入门到精通:第七篇——MySQL单行函数应用

    MySQL数据库,从入门到精通:第七篇--MySQL单行函数应用 第七篇_单行函数 1. 函数的理解 1.1 什么是函数 1.2 不同DBMS函数的差异 2. 数值函数 2.1 基本函数 2.3 三角 ...

  9. MySQL数据库,从入门到精通:第四篇——MySQL中常用的运算符及其用法

    MySQl学习(MySQL数据库,从入门到精通:第四篇--MySQL中常用的运算符及其用法 第四篇_MySQL中常用的运算符及其用法运算符 1. 算术运算符 1.加法与减法运算符 2.乘法与除法运算符 ...

最新文章

  1. RNA-seq需要多长的读长?
  2. Oracle 11.2 安装Oracle 11.1的HR schoma
  3. plex实现流媒体服务器_如何从Plex Media Server离线查看下载和同步媒体
  4. MySQL查询结果纵向输出标识符\G
  5. 《我也能做CTO之.程序员职业规划》 水准之上,期望以下
  6. insert和update 锁等待_黑龙F5智感双全智能锁全球首发,掀起惊艳风潮
  7. java实现删除指定指定目录下面指定某种类型的文件
  8. [ckeditor系列]CKeditor自定义上传图片功能
  9. android编译log中_安卓编译 Jack server 错误问题解决办法
  10. 高乐计算机课程,长春理工大学
  11. Vue3.0 项目启动(打造企业级音乐App)
  12. js中的DOM事件之冒泡和捕获事件详解
  13. html5 css3 树形菜单,HTML5/CSS3卷边菜单效果
  14. 在线购物系统 分析类或问题域类图
  15. 小红书流量红利词「0基础」实操手册
  16. Markdown 编辑器设置字体大小颜色
  17. 计算机科学与技术以为舟,于哲舟-吉林大学计算机科学与技术学院
  18. 2.4 随机变量函数的分布
  19. VSCode调试leetcode的cpp以及c语言(windows)
  20. 用户在Eightcap易汇平台可以交易哪些产品?投资选择多吗?

热门文章

  1. 不管工作压力太大了,还是工作压力太小了;都容易引起开发人员的辞职风波...
  2. 普通用户程序使用保留端口 error while loading shared libraries
  3. 使用electron-vue搭建桌面应用程序项目
  4. Python3 实现用户登陆,输入三次密码
  5. CCF - 201509-2 - 日期计算
  6. 判断点是否在一个任意多边形中
  7. MS Reporting Services 报表开发
  8. Linux中.a,.la,.o,.so文件的意义和编程实现
  9. 将键值对当作实参传进函数
  10. 浅析Codewarrior、IAR和Keil MDK三大开发环境优缺点