一文学会Mysql数据库备份与恢复

目录
  • 数据库备份的分类
  • 从数据库的备份策略角度,备份可分为
  • 常见的备份方法
  • Mysql完全备份
  • 完全备份分类
  • 冷备份方法实现恢复数据库
  • mysqldump备份与恢复
  • Mysql完全恢复
  • Mysql 日志管理
  • Mysql增量备份
  • Mysql增量恢复
  • 断点恢复
    • 基于位置点恢复
    • 基于时间点恢复
  • 总结

数据库备份的分类

物理备份:数据库操作系统的物理文件(如数据文件,日志文件等)的备份

物理备份的方法:

冷备份(脱机备份):是在关闭数据库时候进行的

热备份(联机备份):数据库处于运行状态,依赖于数据库的日志文件

温备份:数据库锁定表格(不可写入但可读)的状态下备份操作

逻辑备份:对数据库逻辑组件(如:表等数据库对象)的备份

从数据库的备份策略角度,备份可分为

完全备份:每次对数据库进行完整的备份

差异备份:备份自从上次完全备份之后被修改过的文件

增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份

常见的备份方法

物理冷备:
备份时数据库处于关闭状态,直接打包数据库文件
备份速度快,恢复时也是最简单的

专用备份工具mydump或mysqlhotcopy
mysqldump常用的逻辑备份工具
mysqlhotcopy仅拥有备份MyISAM或ARCHIVE表

启用二进制日志进行增量备份
进行增量备份,需要刷新二进制日志

第三方工具备份
免费的MySQL热备份软件Percona XtraBackup

Mysql完全备份

是对整个数据库、数据库结构和文件结构的备份
保存的是备份完成时刻的数据库
是差异备份与增量备份的基础

优点:备份与恢复操作简单方便

缺点:数据存在大量的重复,占用大量的备份空间,备份与恢复时间长

完全备份分类

物理冷备份与恢复:关闭MySQL数据库,使用tar命令直接打包数据库文件夹,直接替换现有MySQL目录即可

mysqldump备份与恢复:MySQL自带的备份工具,可方便实现对MySQL的备份,可以将指定的库,表导出为SQL脚本,使用命令mysql导入备份的数据

冷备份方法实现恢复数据库

现在库中有两个表,退出数据口,关闭mysql服务

systemctl stop mysqld

进行压缩

mkdir /backup

tar Jcvf /backup/mysql_alldata_$(date +%F).tar.xz /usr/local/mysql/data/

恢复数据库

mkdir bak
mv /usr/local/mysql/data/ /bak/    ##模拟数据库丢失
mkdir restore

tar Jxvf /backup/mysql_alldata_2022-02-12.tar.xz -C restore/

mysqldump备份与恢复

(1)完全备份一个或多个完整的库(包括其中所有的表)

mysqldump -u root -p[密码] --databases 库名 > /备份路径/备份文件名.sql

(2) 完全备份 mysql服务器中所有的库

mysqldump -u root -p[密码] --all-databases >/备份路径/备份文件名.sql

(3) 完全备份指定库中的部分表

mysqldump -u root -p[密码] 库名 [表名1] [表名2] > /备份路径/备份文件名.sql

##使用 -d 选项,说明只保存数据库的表结构
##不使用 -d 选项,说明表数据也进行备份

(4) 查看备份文件

grep -v "^--" /backup2/ky17_ky18.sql | grep -v "^/" | grep -v "^$"

Mysql完全恢复

(1) 恢复数据库

(2) 恢复数据表

Mysql 日志管理

MySQL的日志默认保存位置为/usr/ local/mysql/data

vim /etc/my.cnf

mysql -uroot -pabc123

Mysql增量备份

1.开启二进制日志功能

systemctl restart mysqld

2.每周凌晨两点对数据库或表进行完全备份

进数据库写入新的数据

再次生成新的二进制日志文件

查看二进制日志文件的内容

Mysql增量恢复

1.一般恢复

模拟数据丢失

mysqlbinlog --no-defaults mysql-bin.000003 | mysql -u root -p

模拟丢失所有数据的恢复步骤

drop database kgc;
mysql -uroot -pabc123 < kgc_2022-02-13.sql
mysqlbinlog --no-defaults mysql-bin.000003 | mysql -u root -p

断点恢复

基于位置点恢复

先将二进制文件转为txt文件,查看

模拟故障点

那只恢复id=6 name=dc 的数据如何恢复

基于时间点恢复

仅恢复到 15:29:34 之前的数据 即不恢复 dc的数据

仅恢复到 15:29:34 之后的数据 即不恢复 dd的数据

如果恢复某条SQL语句之前的所有数据,就stop在这个语句的位置节点或时间点

如果恢复某条SQL语句以及之后的所有数据,就从这个语句的位置节点或时间点start

总结

到此这篇关于Mysql数据库备份与恢复的文章就介绍到这了,更多相关Mysql备份与恢复内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 深入分析MySQL 的备份和恢复机制

    本文讨论 MySQL 的备份和恢复机制,以及如何维护数据表,包括最主要的两种表类型: MyISAM 和 Innodb ,文中设计的 MySQL 版本为 5.0.22. 目前 MySQL 支持的免费备份工具有: mysqldump.mysqlhotcopy ,还可以用 SQL 语法进行备份: BACKUP TABLE 或者 SELECT INTO OUTFILE ,又或者备份 二进制日志(binlog) ,还可以是 直接拷贝数据文件和相关的配置文件 .MyISAM 表是保存成文件的形式,因此相对比

  • mysql备份与恢复详解

    MYSQL的备份有多少种,请简要的描述:数据库分逻辑备份\物理备份物理备份又分冷备和热备 A.直接拷贝数据文件到安全地方进行保存B.使用MYSQLHOSTCOPY备分数据C.使用MYSQLDUMP备份数据D.使用MYSQL的同步复制,实现数据实时数据同步备份 常用的逻辑备份主要就是两种:一种是将数据生成为可以完全重现当前数据库中的数据的insert语句,另一种是将数据通过逻辑备份软件,将数据库表的数据以特定分隔符进行分割后记录在文本中. 对于第一种生成insert语句来说我们可以直接使用mysq

  • MySQL数据库备份与恢复方法

    常有新手问我该怎么备份数据库,下面介绍3种备份数据库的方法: (1)备份数据库文件 MySQL中的每一个数据库和数据表分别对应文件系统中的目录和其下的文件.在Linux下数据库文件的存放目录一般为/var/lib/mysql.在Windows下这个目录视MySQL的安装路径而定,DiaHosting的技术员一般为客户安装在D:serversoftmysql下.如,有一个名为bbs的数据库,那么bbs的数据库文件会存放在/var/lib/mysql/bbs(linux)或者D:serversoft

  • MySQL备份与恢复之热备(3)

    在上两篇文章(MySQL备份与恢复之冷备,MySQL备份与恢复之真实环境使用冷备)中,我们提到了冷备和真实环境中使用冷备.那从这篇文章开始我们看下热备.显然热备和冷备是两个相对的概念,冷备是把数据库服务,比如MySQL,Oracle停下来,然后使用拷贝.打包或者压缩命令对数据目录进行备份:那么我们很容易想到热备就是在MySQL或者其他数据库服务在运行的情况下进行备份.但是,这里存在一个问题,因为生产库在运行的情况下,有对该库的读写,读写频率有可能高,也可能低,不管频率高低,总会就会造成备份出来的

  • MySQL备份与恢复之冷备(1)

    用一句话概括冷备,就是把数据库服务,比如MySQL,Oracle停下来,然后使用拷贝.打包或者压缩命令对数据目录进行备份.如果数据出现异常,则可以通过备份数据恢复.冷备一般需要定制计划,比如什么时候做备份,每次对哪些数据进行备份等等.但是由于这样的备份占用过多的空间,对大数据量的环境下不一定适合,故生产环境很少使用. 冷备示意图 冷备实验 第一步,创建测试数据库,插入测试数据 mysql> use larrydb; Database changed mysql> show tables; +-

  • 浅谈MySQL数据库的备份与恢复

    一.MySQL 常见的备份方式 1. 直接拷贝数据库文件(物理拷贝) 2. 使用 mysqldump 工具备份 3. 使用 mysqlhotcopy 工具备份 4. 使用 mysql 的主从同步复制,实现数据实时同步备份 二.MySQL 物理数据文件结构介绍 1. 日志文件 错误日志 err log 二进制日志 binary log 更新日志 update log 查询日志 query log 慢查询日志 slow query log innodb 的 redo 日志 2. 数据文件 >>&g

  • 在Win下mysql备份恢复命令

    在d:盘根目录下面存放备份数据库,备份数据库名字为backup20070713.sql(20070713.sql为备份日期) 备份数据库: mysqldump -uroot -p123456 database_name>d:/backup20070713.sql 恢复数据库: 删除原有数据库,建立数据库,把备份数据库导入. mysqladmin -uroot -p123456 drop database_name mysqladmin -uroot -p123456 create databas

  • 一文学会Mysql数据库备份与恢复

    目录 数据库备份的分类 从数据库的备份策略角度,备份可分为 常见的备份方法 Mysql完全备份 完全备份分类 冷备份方法实现恢复数据库 mysqldump备份与恢复 Mysql完全恢复 Mysql 日志管理 Mysql增量备份 Mysql增量恢复 断点恢复 基于位置点恢复 基于时间点恢复 总结 数据库备份的分类 物理备份:数据库操作系统的物理文件(如数据文件,日志文件等)的备份 物理备份的方法: 冷备份(脱机备份):是在关闭数据库时候进行的 热备份(联机备份):数据库处于运行状态,依赖于数据库的

  • 一文理解MySQL数据库的约束与表的设计

    目录 1.数据库约束 1.1 约束类型 1.2 null 约束 1.3 unique 唯一的约束 1.4 default 默认值约束 1.5 primary key 主键约束 1.6 primary key auto_increment 自增主键 1.7 foreign key 外键约束 2.表的设计 2.1 一对一 2.2 一对多 2.3 多对多 总结 1.数据库约束 约束是关系型数据库提供的一种校验数据合法性的机制. 1.1 约束类型 约束类型 说明 示例 null 使用not null 指

  • 一个小时学会MySQL数据库(张果)

    随着移动互联网的结束与人工智能的到来大数据变成越来越重要,下一个成功者应该是拥有海量数据的,数据与数据库你应该知道. 一.数据库概要 数据库(Database)是存储与管理数据的软件系统,就像一个存入数据的物流仓库. 在商业领域,信息就意味着商机,取得信息的一个非常重要的途径就是对数据进行分析处理,这就催生了各种专业的数据管理软件,数据库就是其中的一种.当然,数据库管理系统也不是一下子就建立起来,它也是经过了不断的丰富和发展,才有了今天的模样. 1.1.发展历史 1.1.1.人工处理阶段 在20

  • 分布式文档存储数据库之MongoDB备份与恢复的实践详解

    前文我们聊了下mongodb的访问控制以及用户创建和角色分配,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13974656.html:今天我们来了解下mongodb的备份与恢复 为什么要备份? 备份的目的是对数据做冗余的一种方式,它能够让我们在某种情况下保证最少数据的丢失:之前我们对mongodb做副本集也是对数据做冗余,但是这种在副本集上做数据冗余仅仅是针对系统故障或服务异常等一些非人为的故障发生时,保证数据服务的可用性:它不能够避免人为的误操作:为了

  • 浅谈mysqldump使用方法(MySQL数据库的备份与恢复)

    #mysqldump --help 1.mysqldump的几种常用方法: (1)导出整个数据库(包括数据库中的数据) mysqldump -u username -p dbname > dbname.sql    (2)导出数据库结构(不含数据) mysqldump -u username -p -d dbname > dbname.sql    (3)导出数据库中的某张数据表(包含数据) mysqldump -u username -p dbname tablename > tabl

  • python读取word文档,插入mysql数据库的示例代码

    表格内容如下: 1.实现批量导入word文档,取文档标题中的数字作为编号 2.除取上面打钩的内容需要匹配出来入库入库,其他内容全部直接入库mysql # wuyanfeng # -*- coding:utf-8 -*- # 读取docx中的文本代码示例 import docx import pymysql import re import os # 创建数据库链接 conn = pymysql.connect( host='rm-bp1vu5d84dg12c6d59o.mysql.rds.ali

  • SSM实现mysql数据库账号密码密文登录功能

    引言 咱们公司从事的是信息安全涉密应用的一些项目研发一共有分为三步,相比较于一般公司和一般的项目,对于信息安全要求更加严格,领导要求数据量和用户的用户名及密码信息都必需是要密文配置和存储的,这就涉及到jdbc.properties文件中的数据库的用户名和密码也是一样的,需要配置问密文,在连接的时候再加载解密为明文进行数据库的连接操作,以下就是实现过程,一共有分为三步. 一.创建DESUtil类 提供自定义密钥,加密解密的方法. package com.hzdy.DCAD.common.util;

  • 用python生成mysql数据库结构文档

    最近因为项目原因需要编写数据库设计文档,但是由于数据表太多,手动编写耗费的时间太久,所以搞了一个简单的脚本快速生成数据库结构,保存到word文档中. 安装pymysql和document pip install pymysql pip install document 脚本 # -*- coding: utf-8 -*- import pymysql from docx import Document from docx.shared import Pt from docx.oxml.ns im

  • 一文学会docker 安装mysql的方法

    目录 1.使用 docker 命令下载 mysql 2.使用 docker 命令创建实例并启动: 3.修改 mysql 配置文件: 4.重新启动 mysql: 1.使用 docker 命令下载 mysql docker pull mysql:5.7 5.7是版本号,可以去https://hub.docker.com/_/mysql?tab=tags 网站查询想要安装的 mysql 版本: 2.使用 docker 命令创建实例并启动: docker run -p 3306:3306 --name

随机推荐