mysql的备份与恢复

一  mysql 备份的类型

冷备份:关闭数据、停止业务
温备份:加锁备份
热备份:在先备份,不会影响到也正常运行

二 备份方式

1. 逻辑备份:基于SQL语句的备份

(1)mysqldump建库、建表、数据插入
(2)基于二进制日志:数据库的所有变化类的操作
(3)基于复制的备份:将二进制日志实时传送到另一台机器并且恢复

2. 物理备份

(1)xtrabackup进行物理备份
(2)拷贝数据文件(冷备)

三 备份工具

(1)mysqldump
    mysql原生自带很好用的逻辑备份工具
(2)mysqlbinlog
    实现binlog备份的原生态命令
(3)xtrabackup
     precona公司开发的性能很高的物理备份工具

四 mysqldump备份工具使用

  优点:逻辑备份工具,都是SQL语句,都是文本格式,便于查看和编辑,更便于压缩
  缺点:备份效率较慢

1.mysqldump常用参数

  -u -p -h  -S  -P

2. 全库备份

  -A

mysqldump -uroot -p123456 -A >/backup/full.sql

3. 单库备份

例子:

mysqldump -uroot -p123456 -B ysl >/backup/ysl.sql
mysqldump -uroot -p123456 ysl >/backup/ysl1.sql

-B 增加建库(create)及(use库)的语句   后面恢复时,不需要手动创建库和use

不加 -B 后面恢复时,要先创库  use库

另外 -B 选项可以实现, 同时备份多个库,备份到一个文件中

mysqldump -uroot -p123456 -B ysl test >/backup/ysl_test.sql

如果不加 -B 就是备份 ysl库下 test表

mysqldump 库1 表1 表2 表3 > 库1.sql


4. 生产环境备份额外参数

  -R            备份存储过程和函数数据
  --triggers      备份触发器数据

mysqldump -uroot -p123456  -A  -R --triggers   >/backup/ysl.sql

-F, --flush-logs        刷新binlog日志,为了方便将来二进制日志截取时的起点  缺点有多少个库 就会刷新多少次binlog日志

--master-data={1|2}      告诉你备份后时刻的binlog位置 2 注释              1 非注释,要执行(主从复制)

锁表:适合所有引擎(myisam,innodb)
  -x, --lock-all-tables
  -l, --lock-tables

  --single-transaction 对innodb引擎进行热备
  通过快照的方式实现热备

压缩备份:

#压缩备份:

mysqldump -uroot -p123 -A  -R --triggers --master-data=2 --single-transaction |gzip >/backup/all_$(date +%F).sql.gz

解压 :

  gunzip   all_2019-09-16.sql

  

5. mysqldump备份恢复

使用source命令进行恢复:
mysql>set sql_log_bin=0;
mysql> source /backup/xxx.sql;

五.  模拟故障并恢复(mysqldump + mysqlbinlog)

背景环境:
正在运行的网站系统,mysql数据库,数据量25G,日业务增量10-15M。
备份方式:
每天23:00点,计划任务调用mysqldump执行全备脚本
故障时间点:
上午10点,误删除了一个表
-------
思路:
1、断开业务,防止对数据库二次伤害,挂出维护页面
2、搭建备用库,恢复全备
3、截取昨天晚上23:00之后到上午10点误删除操作之前的二进制日志
4、恢复到备用库,验证数据可用性和完整性
5、两种方案恢复前端应用
5.1 备用库导出误删除的表,导入到生产库,开启业务
5.2 直接将应用切割到备用库,替代生产库,开启业务

1. 原始数据创建

create database ysl   charset utf8mb4;
create table student(id int, name varchar(20)) engine=innodb;
use ysl;
insert into student values (1,'y1');
insert into student values (2,'y2');
insert into student values (3,'y3');
commit;

2. 晚上23点到了  开始备份数据

mysqldump -uroot -p123456 -A  -R --triggers --master-data=2  --single-transaction | gzip  >/backup/all_$(date +%F).sql.gz

3.模拟第二天(23:00-10:00)业务对数据的修改

insert into student values (4,'zhang33');
insert into student values (5,'li44');
insert into student values (6,'wang54');
commit;

4. 模拟故障

drop table student;

5、恢复

1) 准备全量 并获取到备份文件中的binlog的截取起点

cd /backup/; gunzip all_2019-09-17.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='my-bin.000002', MASTER_LOG_POS=852779;
-- 找到全量截取起点 -- 找到 结束点
show binlog events in 'my-bin.000002';

2)截取二进制日志

mysqlbinlog   --start-position=852779  --stop-position=853177 /data/binlog/my-bin.000002 >/backup/binlog.sql

3)恢复全备+binlog

set sql_log_bin=0;
source /backup/all_2019-09-17.sql
source /backup/binlog.sql

六.  Xtrabackup物理备份工具使用

https://www.cnblogs.com/augustyang/p/11535355.html

第七章 mysql的备份与恢复的更多相关文章

  1. 第七章 mysql 事务索引以及触发器,视图等等,很重要又难一点点的部分

    [索引] 帮助快速查询 MyISAM ,InnoDB支持btree索引 Memory 支持 btree和hash索引 存储引擎支持 每个表至少16个索引   总索引长度至少256字节   创建索引的优 ...

  2. 第七章· MySQL的存储引擎

    一.存储引擎简介 1.文件系统: 1.1 操作系统组织和存取数据的一种机制. 1.2 文件系统是一种软件. 2.文件系统类型:ext2 3 4 ,xfs 数据 2.1 不管使用什么文件系统,数据内容 ...

  3. 第 5 章 MySQL 备份与恢复

    第 5 章 MySQL 备份与恢复 前言 数据库的备份与恢复一直都是 DBA 工作中最为重要的部分之一,也是基本工作之一.任何正式环境的数据库都必须有完整的备份计划和恢复测试,本章内容将主要介绍 My ...

  4. 《mysql必知必会》学习_第七章_20180730_欢

    第七章:数据过滤 P43 select prod_id,prod_price,prod_name from products where vend_id =1003 and prod_price &l ...

  5. 2017.11.6 JavaWeb-----第七章 JavaWeb常用开发模式与案例

    JavaWeb-----第七章 JavaWeb常用开发模式与案例 (1)单纯的JSP页面开发模式 通过在JSP中的脚本标记,直接在JSP页面中实现各种功能.称为"单纯的JSP页面编程模式&q ...

  6. 2017.2.12 开涛shiro教程-第七章-与Web集成

    2017.2.9 开涛shiro教程-第七章-与Web集成(一) 原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. ...

  7. 第七章 Rocketmq--消息驱动

    今天咱们接着 上一篇第六章 Sleuth–链路追踪 继续写 SpringCloud Alibaba全家桶 , 第七章 Rocketmq--消息驱动,废话不多说,开始了 7.1 MQ简介 7.1.1 什 ...

  8. 精通Web Analytics 2.0 (9) 第七章:失败更快:爆发测试与实验的能量

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第七章:失败更快:爆发测试与实验的能量 欢迎来到实验和测试这个棒极了的世界! 如果Web拥有一个超越所有其他渠道的巨大优势,它就 ...

  9. 《Entity Framework 6 Recipes》中文翻译系列 (38) ------ 第七章 使用对象服务之动态创建连接字符串和从数据库读取模型

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第七章 使用对象服务 本章篇幅适中,对真实应用中的常见问题提供了切实可行的解决方案. ...

  10. 《Entity Framework 6 Recipes》中文翻译系列 (41) ------ 第七章 使用对象服务之标识关系中使用依赖实体与异步查询保存

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 7-7  标识关系中使用依赖实体 问题 你想在标识关系中插入,更新和删除一个依赖实体 ...

随机推荐

  1. K8S的 POD 生命周期

    pod的生命周期是从创建至终止的这段时间范围 Pod的创建 1.用户通过kubectl或其他api客户端提交需要创建的pod信息给apiServer 2.apiServer开始生成pod对象的信息,并 ...

  2. 查看当前linux进程所在的目录

    1.通过 ps -ef | grep xxx 查看进程信息 ps -ef | grep rsi 1 2.通过 ll /proc/PID 命令查看进程所在目录位置 ls -l /proc/PID 1 L ...

  3. What does int main(int argc, char *argv[]) mean?

    忽然发现自己不理解许多代码中这行的含义是什么...(汗颜) 下面贴一段stackoverflow上面的回答: argv and argc are how command line arguments ...

  4. 实验一 Python程序设计入门 20203412马畅若

    课程:<Python程序设计>班级: 2034姓名: 马畅若学号:20203412实验教师:王志强实验日期:2021年4月13日必修/选修: 公选课 实验一 (一)实验内容 1.熟悉Pyt ...

  5. pyspark 中的rdd api 编码练习

    1,使用pyspark 的rdd api 进行了数据文件的处理,包括构建RDD, 统计分析RDD ,从文件中读取数据RDD,从文件中构建 rdd的模式shema. 然后通过模式,从rdd中生成data ...

  6. Day_1(并查集朋友圈、字典序排序)

    1.并查集 朋友圈:找出最多的一个圈子内有多少用户! id[](表示当前节点的父节点) nodeNum[] (表示当前节点为根的那一组节点数量) import java.util.Scanner; / ...

  7. Codeforces Round #776 (Div

    Codeforces Round #776 (Div. 3) CodeForces - 1650D Twist the Permutation 给定你数组a:1 2 3 ... n,一共有n次操作,每 ...

  8. img,video标签禁用鼠标右键功能

    场景描述: 在网页中显示图片,当用户右键点击图片时,禁止用户右键操作. 这里会用到一个新属性,即 oncontextmenu. 例如: <img src="图片地址" cla ...

  9. C语言学习记录(一)

    C语言学习记录(一) 一.知识要点(程序设计概述) 1.程序与程序设计语言 概念:程序就是给计算机下一系列指令,使其完成任务.而编写这些指令就是程序设计. 程序设计语言 第一代程序设计语言(1GL): ...

  10. Java Swing 防止键入手Key 的实现方法

    实现思路,启动一个线程每隔0.1秒去比较文本里字符长度变化,如果文本变长了,这个情况间隔时间超过2秒,则认为是人工键入. 对于字符串较多,且包含数字和字母的情况,比较适用. class KeyCode ...