索引

  • 数据库备份类型及备份内容
  • 常用的备份工具
  • mysqldump介绍
  • 实战

在生产环境中我们的数据库可能会遭遇不可预测的灾害从而导致数据库的数据丢失。例如:

  • 硬件故障
  • 软件故障
  • 自然灾害
  • 黑客攻击
  • 误操作 (这种原因占据多数)

不可抗力我们没有办法左右,但是我们可以通过一定手段恢复数据库数据。为了恢复数据,我们就要定期备份数据,备份数据的策略要根据不同的场景制定,大致有以下几个参考因素:

  • 能够容忍丢失多少数据
  • 恢复数据需要多长时间
  • 需要恢复哪些数据

一、数据库备份类型及备份内容

在 mysql 中一般有以下几种备份方式:

  • 热备份

热备份是指当数据库在备份时,数据库的读写功能不受影响。例如 InnoDB 支持热备

  • 温备份

温备份是指当数据库在备份时,数据库的读不影响,但是不能执行写操作。例如 InnoDB,MyISAM 都支持温备

  • 冷备份

冷备份是指当数据库在备份时,数据库的读写功能都不能执行,即数据库要下线。例如 InnoDB,MyISAM 都支持冷备

物理备份:

指通过cp,tar等命令直接打包复制数据库数据

逻辑备份:

指通过特定的工具从数据库中导出数据并另存备份(逻辑备份会丢失数据精度)。逻辑备份一般是备份建表,建库,插入,删除等操作的SQL语句,适用于中小型数据库,效率相对较低。常用工具有:mysqldump,mydumper

逻辑备份优点:

  1. 在备份速度上两种备份要取决于不同的存储引擎 物理备份的还原速度非常快。但是物理备份的最小单位只能到表
  2. 逻辑备份保存的结构通常都是纯ASCII的,所以我们可以使用文本处理工具来处理
  3. 逻辑备份有非常强的兼容性,二物理备份则对版本的要求非常高
  4. 逻辑备份也对保持数据的安全性有保证

逻辑备份缺点:

  1. 逻辑备份要对RDBMS产生额外的压力,而裸备份无压力
  2. 逻辑备份的结果可能要比源文件更大。所以很多人都对备份的内容进行压缩
  3. 逻辑备份可能会丢失数据精度

建议备份的内容:

  • 数据文件日志文件(如二进制日志文件,事务文件等)
  • 存储过程,存储函数,触发器
  • 配置文件(十分重要,各个配置文件都要备份)
  • 用于实现数据库备份的脚本,数据库自申清理的定时计划任务等…

二、常用的备份工具

  1. mysqldump:

逻辑备份,适用于所有存储引擎,支持温备、完全备份、部分备份、对于InnoDB存储引擎支持热备

  1. cp、tar等归档复制工具:

物理备份工具,适用于所有存储引擎,冷备、完全备份、部分备份

  1. lvm2 snapshot:

几乎热备,借助文件系统管理工具进行备份

  1. mysqlhotcopy:

名符不其实的工具,几乎冷备,仅支持"MyISAM"存储引擎

  1. xtrabackup:

一款非常强大的"InnoDB/XtraDB"热备工具,支持完全备份,增量备份

三、mysqldump介绍

1、语法

mysqldump  -h   服务器地址  -u   用户名  -p密码   数据库名   >  备份文件.sql

2、数据库名分类

选项 含义
- A ,- - all-databases 所有库
备份单库 school ---- 数据库名
备份指定库中的表 school table1 table2 ---- 数据库school的表table1,tables2
- B,- - databases mydb1 mydb2 指定多个库 ---- mydb1,mydb2库
- d 只备份库结构,不包含数据内容
- - single-transaction 该选项可以实现对 InnoDB 的热备
- x,- - lock-all-tables 备份过程中为所有表加锁(MyISAM使用)
- l,- - lock-tables 备份时为指定表加锁
- E,- - events 备份事件调度器代码
- - opt 同时启动各种高级选项
- R,- - routines 备份存储过程和存储函数
- F,- - flush-logs 备份之前刷新日志文件
- - triggers 备份触发器
- - master-data=2 备库,该选项将会记录binlog的日志位置与文件名并追加到文件中,如果为1将会输出change master命令,主从复制时有用

四、实战

---- 增量+全量

环境要求:
(1)两台centos7机器,分别装有mysql (我的版本是8)两台机器版本要一致,否则会备份在还原数据时,会出错。如果是克隆机,要修改mysql-uuid,不能相同。
(2)情景:每天凌晨00:00备份数据库数据,突然在某一天凌晨00:30数据库中某库出现故障,要求还原数据库数据。

备库存放备份目录 /data/mysql/
主库打包数据存放位置 /root/mysql-` data “+%F” `.sql.gz
主库日志文件位置 /data/mysql/data/binlog
主库地址 192.168.139.152
备库地址 192.168.139.153

在主库上创建一个库mydb01,创建一个表test01,并插入数据,备库初始化状态。(假设此状态为数据库原有状态,00:30时mydb01出现故障)

主库:

备库:


主库全量备份操作

#编辑配置文件/etc/my.cnf,打开binlog功能
vim  /etc/my.cnf
#定义binlog日志文件存放位置
log_bin = /data/mysql/data/binlog
#重启mysqld
systemctl stop msyqld
systemctl start mysqld
#压缩备份数据库
mysqldump -uroot -p --single-transaction mydb | gzip > /root/mysql-`data "+%F" `.sql.gz
#用scp发送到备份端
scp -p /root/mysql-`data "+%F"`.sql.gz root@192.168.139.153:/data/mysql/

备库全量恢复操作

#备库解压压缩数据
gunzip /data/mysql/mysql-`data "+%F"`.sql.gz
#创建对应数据库
mysql -u root -p  -e "create database mydb01"
#恢复全量备份数据库数据
mysql -u root -p mydb01 < /data/mysql/mysql-`data "+%F"`.sql

主库增量备份操作

#查看数据库日志文件
ls /data/mysql/data/binlog.*#立即刷新并备份出日志文件
msyqladmin -u root -p flush-logs
cp /data/mysql/data/binlog.*  /server/backup/
根据时间点查出发现问题时刻的binlog文件,假设为binlog.000005   #恢复binlog生成SQL语句
mysqlbinlog binlog.000005 > binlog-`date "+%F"`.sql#删除sql语句中误操作语句
vim binlog-`date "+%F"`.sql #找到误操作语句并删除#发送给备库
scp -p /server/backup/binlog-`date "+%F"`.sql root@192.168.139.153:/data/mysql/

备库恢复操作

#备库恢复数据库数据
mysql -u root -p mydb01 < /data/mysql/binlog-`date "+%F"`.sql

此时备库上已完成数据库数据恢复

Mysql数据库备份复制相关推荐

  1. javaweb实现mysql备份功能_java web 实现mysql 数据库备份、恢复

    如题,由于项目需要,研究并实现了java web的 mysql数据库的备份.下载.恢复功能,中间遇到一些问题,耗费了不少时间,下面让我一一道来: 背景介绍: window 7系统 mysql 5.7 ...

  2. MySQL用户管理、常用SQL语句、MySQL数据库备份恢复

    mysql用户管理 1.创建一个普通用户并授权 [root@gary-tao ~]# mysql -uroot -p'szyino-123' Warning: Using a password on ...

  3. 2.5.1 MySQL数据库备份恢复基础讲解

    MySQL数据库备份恢复基础 MySQL常见的故障类型 对于用户来说,数据库中保存的数据通常至关重要,所以要采取各种手段来防止各种可能的数据损失和数据故障. DBA主要任务就是维持数据库的高可靠性运行 ...

  4. mysql数据库压缩备份_MySQL数据库之mysql数据库备份命令分享(mysql压缩数据库备份)...

    本文主要向大家介绍了MySQL数据库之mysql数据库备份命令分享(mysql压缩数据库备份) ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 备份MySQL数据库的命令 复制代 ...

  5. 13.4 mysql用户管理 13.5 常用sql语句 13.6 mysql数据库备份恢复

    mysql用户管理 1.创建一个普通用户并授权 [root@gary-tao ~]# mysql -uroot -p'szyino-123' Warning: Using a password on ...

  6. 企业级MySQL数据库备份方案:增量备份、全量备份、逻辑备份

    一份好的备份方案无非包括以下几点: 为什么需要备份? 备份的方式有哪些? 某几种备份方式的区别在哪? 备份实战操作概述 恢复实战操作概述 其它备注信息 那么,此文将从以上几个角度,结合一些实际的实战经 ...

  7. 十一、MYSQL数据库备份还原

    十一.MYSQL数据库备份还原 数据库冷备份 mysqldump备份和还原数据库 备份 主从数据库备份 备份指定数据库 备份多个数据库 备份所有数据库 备份数据表 方法1: `mysqldump`备份 ...

  8. 浅谈MySQL数据库备份的几种方法

    mysql常见的备份方式有:mysqldump.mysqlhotcopy.BACKUP TABLE .SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据 ...

  9. MYSQL数据库备份方法及策略

    MYSQL数据库备份方法及策略 前言 Xtrabackup实战 Percona-xtrabackup 备份实战 ( 1 ) 官网下载Percona-Xtrabackup ( 2 )Percona-xt ...

  10. mysql 恢复数据库乱码了_再谈MySQL数据库备份恢复和乱码问题

    在我转到wordpress之后第一个考虑的是它的数据库备份恢复问题,因为写bloger都知道,自己的blog记录的都是自己需要的宝贵的资料和文字,如果因为各种未知因素导致数据库崩溃或者空间商出了问题, ...

最新文章

  1. UVA 10515 - Powers Et Al.(数论)
  2. Vuex2.0+Vue2.0构建备忘录应用实践
  3. JavaWeb开发模式:C/S模式,B/S模式,JSP+JavaBean模式,JSP+Servlet+JavaBean模式
  4. mysql优化和索引_mysql优化和索引
  5. 【LeetCode笔记】617. 合并二叉树(Java、DFS、二叉树)
  6. libx264进行视频编码的流程
  7. 智能手环和智能手表有啥区别啊?
  8. Mac OS 添加 MySQL 环境变量
  9. 代理模式 vs 装饰模式
  10. 接收URL参数乱码问题
  11. ASP.NET MVC架构与实战系列之三:MVC控件解析
  12. 制造业erp整体业务流程
  13. AT89S52单片机之硬件存储结构
  14. 基于ssm柴犬主题咖啡厅系统
  15. html怎么设置文字竖排,CSS文字竖排
  16. 《系统工程理论与实践》Latex 模板使用教程
  17. html语言设置网页背景,在html网页中如何设置背景图片?网页背景怎么设置?
  18. MySQL的upsert
  19. MIPS汇编二进制转10进制
  20. 博途中用的是c吗_S7-1500系列博途中使用SCL语言编程方法简介

热门文章

  1. java使用itext7实现html转pdf
  2. JavaEE:MySQL主从配置
  3. printf() 输出数据格式汇总
  4. darkest dark theme 插件对应eclipse各版本安装方法
  5. Dreamweaver简单网页——HTML+CSS小米官网首页的设计与实现
  6. 地图定位--制作公司地图位置
  7. H7710s-DDP协议(抄录)
  8. python二维插值_SciPy二元样条插值
  9. mysql非唯一索引怎么表示_MySQL 唯一索引和非唯一索引(普通索引)区别
  10. 等值线图的Python绘制方法