定义

  1. 数据备份:将源数据再次存储到新的位置
  2. 数据恢复:将备份好的数据重新应用到数据库系统

常见的备份类型:

  1. 按照是否备份整个数据集来分

    完全备份:备份从开始到执行备份这一时刻的所有数据集

    增量备份:备份从上次备份到这次备份时刻变化的数据集

    差异备份:备份从上一次完全备份到这一备份时刻变化的数据集
  2. 按照备份的数据库对象来分

    物理备份:通过复制数据集在文件系统中的文件来备份

    逻辑备份:在数据库的客户端工具上使用SQL语句,应用程序或其他脚本文件做备份的操作
  3. 按照备份时,还能提供的服务分类

    热备份:备份的过程中,可以对备份的数据集做读写操作

    温备份:备份的过程中,只能对备份的数据集只能做读操作,不可有写操作

    冷备份:备份的过程中,直接将服务下线,读写操作均无法执行

备份的数据内容:

  1. 数据;
  2. 二进制日志
  3. InnoDB存储以前的事务日志文件;
  4. 代码——存储过程,存储函数,触发器,事件调度器等;
  5. 当前服务器上用于启动数据服务是所使用的配置文件;
  6. 操作系统上与MySQL或MariaDB相关的配置——sudo任务、cron任务等;

备份方法

第一种方法:基于二进制文件的恢复

通过客户端命令工具:mysqlbinlog和二进制日志恢复数据库文件

mysqlbinlog [options] log_file ...
--start-datetime=
--stop-datetime= --start-position=
--stop-position= #例:通过position日志位置直接恢复
mysqlbinlog /var/lib/mysql/mysqlbin.000001 --stop-position=1093 | mysql -uroot -proot

重定向输入到bin.sql文件中

第一步:算好要恢复数据的时间段,重定向输入到bin.sql文件中

#通过时间轴
mysqlbinlog --start-datetime="2019-06-08 22:55:13" --stop-datetime="2019-06-08 22:55:13" binlog.0000011 > bin.sql
#通过position日志
mysqlbinlog --start-position=1008 --stop-position=1093 binlog.0000011 > bin.sql
#整个文件
mysqlbinlog /var/lib/mysql/binlog.000006 > /root/bin.sql
mysqlbinlog /var/lib/mysql/binlog.000007 >> /root/bin.sql

第二步:执行bin.sql文件还原

source bin.sql     

或

# mysql -uroot   -pxxx  DATABASENAME  < bin.sql

第二种方法:基于lvm2的备份

第一步:请求锁定所有表

flush tables with read lock;

第二步:记录二进制日志文件及事件位置或时间点

flush logs;
mysql -uroot -proot -e 'show master status;' > /path/to/somefile

第三步:创建快照

lvcreate -L # -s -p r -n NAME /DEV/VG_NAME/LV_NAME

第四步:释放锁

unlock tables;

第五步:挂在快照卷,执行数据备份

第六步:备份完成后,删除快照卷

第七步:指定好策略,通过原卷备份二进制日志

第八步:还原的时候确保属组和属主是mysql:mysql

其中:如果是yum安装默认数据目录在/var/lib/mysql,如果需要更改

╭─root@localhost.localdomain /var/lib/mysql
╰─➤ vim /etc/my.cnf.d/server.cnf [mysqld]
datadir=/mysql_data/
pid_file=/mysql_data/localhost.pid
socket=/mysql_data/mysql.sock
wsrep_data_home_dir=/mysql_data/
log-bin=mysql-bin [client]
socket=/mysql_data/mysql.sock

第三种方法:备份工具mariabackup/Xtrabackup

注意:在MariaDB10.3.x及以上的版本用Percona XtraBackup工具会有问题;原因可能是MariaDB10.3以上版本的redo日志格式和之前不同了

官方文档

Percona的官方文档:https://www.percona.com/doc/percona-xtrabackup/2.4/index.html

Mariabackup的官方文档:https://mariadb.com/kb/en/library/mariabackup-overview/

安装方法

yum install MariaDB-backup

备份与恢复

全备+恢复

#全量备份

mariabackup --backup --target-dir=/root/fullbackup --user=root --password=root

#准备全备数据

mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root

#还原数据(请确保数据目录下是空的)

mariabackup --copy-back --target-dir=/root/fullbackup/ --user=root --password=root

#修改属组和属主

chown -R mysql.mysql /var/lib/mysql

全备+增量+恢复

#1.全量备份

mariabackup --backup --target-dir=/root/fullbackup --user=root --password=root

#2.增量备份

mariabackup --backup --target-dir=/root/inc1 --incremental-basedir=/root/fullbackup/ --user=root --password=root

#3.准备全备数据

mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root

#4.增量和全备数据合并

mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root --incremental-dir=/root/inc1/ --apply-log-only

#5.恢复数据(请确保数据目录下是空的)

mariabackup --copy-back --target-dir=/root/fullbackup/ --user=root --password=root

#6.修改属组和属主

chown -R mysql.mysql /var/lib/mysql


数据库备份和恢复---MariaDB的更多相关文章

  1. Sql Server数据库备份和恢复:原理篇

    本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...

  2. 使用exp&imp工具进行数据库备份及恢复

    使用exp&imp工具进行数据库备份及恢复1.exp/imp使用方法介绍exp/imp为一种数据库备份恢复工具,也可以作为不同数据库之间传递数据的工具,两个数据库所在的操作系统可以不同.exp ...

  3. MongoDB学习总结(六) —— 数据库备份和恢复

    我们都知道数据库数据经常备份是多么的重要,MongoDB作为一个数据库系统,自然提供了完善,丰富而且好用的备份与恢复机制. 以下介绍三种数据库备份和恢复的方式 > 数据目录直接拷贝 数据库目录直 ...

  4. asp.net针对SQLSERVER数据库备份和恢复的一揽子问题解决

    一.备份 先备份到服务端,用gridview显示出来,点击可以下载到本地 二.恢复 这是很麻烦的事情,本人查阅不少资料,耗费不少时间才搞定. 直接恢复数据库时不行的,会提示数据库正在使用,恢复失败等信 ...

  5. 小型网站MYSQL问题二:Percona Xtrabackup实现数据库备份和恢复

    1.安装软件仓库(不要问我为什么不用源码安装,好吧,其实我懒.) 1 2 3 4 5 6 7 8 wget https://www.percona.com/downloads/percona-rele ...

  6. C#可定制的数据库备份和恢复程序 (讲解流程)

    可定制的数据库备份和恢复程序 tashanzhishi [原作] 关键字 数据库 备份 恢复 出处 在我们做数据库系统的程序时,经常需要为客户做一个数据库的备份和恢复程序,特别是对于一些非专业的数据库 ...

  7. mysql基础之数据库备份和恢复实操

    一.基于二进制文件的恢复*** 1.算好要恢复数据的时间段,重定向输入到bin.sql文件中 [root@ren7 mysql]# mysqlbinlog --start-datetime=" ...

  8. postgresql数据库备份和恢复

    PostgreSQL自带一个客户端pgAdmin,里面有个备份,恢复选项,也能对数据库进行备份 恢复(还原),但最近发现数据库慢慢庞大的时候,经常出错,备份的文件过程中出错的几率那是相当大,手动调节灰 ...

  9. Oracle数据库备份、恢复及常见问题

    通常我们都是使用PL/SQL Developer来对Oracle中的数据对象和数据进行管理.如果我们想方便快速还原或者部署Oracle到新机器上,怎么进行数据库的备份.导入恢复呢? 这里我们必须要考虑 ...

随机推荐

  1. 第十一章节 BJROBOT PS3 手柄控制【ROS全开源阿克曼转向智能网联无人驾驶车】

    1.把小车架空平放在地板上.   2.用 USB 线将 PS3 蓝牙手柄连接至小车主控端,初次连接手柄上的 4 个红色指示灯会同时闪烁; 3.按下手柄中间的圆形配对键,然后等待红灯闪烁至停止. 4.此 ...

  2. count(*) 优化

    几种获取记录数的方法 count(*): MySQL 优化过,扫描的行数小于总记录数.执行效率高. count(1): 遍历所有记录,不取值,对每行尝试添加一个 "1" 列,如果不 ...

  3. QtCreator使用技巧

    快捷键 "F4" 在同名的头文件和源程序文件之间切换 "F2" 跟踪光标下的符号,若是变量,可以跟踪到变量声明的地方:若是函数体或函数声明,可以在两者之间切换. ...

  4. LeapMotion控制器 java语言开发笔记--(Java开发环境的准备)

    (1)官方文档说的是必须是JDK6,JDK7,我试了一下JDK8也是可以的 (2)我是在Windows系统下用的是Eclipse Java的开发环境这里不再多说.将下载的JDK里面的java.dll和 ...

  5. 学习笔记之Python人机交互小项目二:名片管理系统

    继上次利用列表相关知识做了简单的人机交互的小项目名字管理系统后,当学习到字典时,老师又让我们结合列表和字典的知识,结合一起做一个名片管理系统,这里分享给在学习Python的伙伴! 1.不使用函数 1 ...

  6. Beta冲刺——第八天

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...

  7. CentOS 7 网卡注释

    TYPE=Ethernet # 网络类型为:EthernetPROXY_METHOD=none # 代理方式:关闭状态BROWSER_ONLY=no # 只是浏览器:否BOOTPROTO=static ...

  8. 在kotlin用jni调用c++的dll中踩的坑

    在kotlin用jni调用c++的dll中踩的坑 can't find dependents libraries 不是个有效的32位程序(或者是?????32??????) 常规检查 java 指针 ...

  9. flask为多个接口添加同一个拦截器的方法

    前言 最近又抽掉出来写一个 Python 项目, 框架使用 Flask , 又有些新心得, 比如本篇所说, 想要将某个蓝图加上统一的权限控制, 比如 admin 蓝图全部有一个统一的拦截器判断是否有权 ...

  10. 详解 TCP的三次握手四次挥手

    本文转载来自https://blog.csdn.net/qzcsu/article/details/72861891 背景描述 通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之 ...