Mysql/Mariadb备份

mysql的备份和还原

用处:

1、灾难恢复

2、审计

3、测试

备份类型:
    热备份、温备份、冷备份
        热备份:在线备份,读写操作可继续进行,不受影响,只有基于事务的存储引擎才能完成
        温备份:能读不能写
        冷备份:读写均不能进行,离线备份
    物理备份、逻辑备份
        物理备份:复制数据文件
        逻辑备份:把数据从库中提出出来保存为文本文件,无法保证浮点型的精度,和存储引擎无关,跨平台好,mysqldump
    完全备份、增量备份、差异备份
        完全备份:全部备份
        增量备份:仅备份上次完全备份或增量备份以后变化的数据
        差异备份:仅备份上次完全备份以来变化的数据
还原:需要测试
备份对象:
    数据
    配置文件
    代码:存储过程,存储函数,触发器
    OS相关的配置文件,如crontab配置计划及相关的脚本
    跟复制相关的配置信息
    二进制日志文件

热备份:
    myisam:几乎不可能,可以用逻辑卷来备份,最好温备份
    innodb:可以,xtrabackup,mysqldump

物理备份还是逻辑备份:
    物理备份:速度快,和文件系统无关
    逻辑备份:速度慢,丢失浮点数精度,方便使用文本处理工具直接对其处理,可移植性强跨mysql服务器版本

备份策略:
    完全+增量
    完全+差异

备份工具:
    mysqldump:逻辑备份,myisam(温备份),innodb(热备份),备份和恢复过程较慢,适于备份10G以下的数据,因为速度太慢。mysqldumper:多线程的mysqldump。很难实现差异或增量备份。
    mysqlhotcopy:物理备份,温备份工具,仅适用于MyIsam引擎
lvm-snapshot:接近于热备的工具,因为要先请求全局锁,而后创建快照,并在创建快照之后释放全局锁,使用cp,tar等工具进行物理备份,备份恢复速度快。很难实现增量备份,并且请求全局锁需要等待一段时间,在繁忙的服务器上尤其如此
    innodb:不能立即创建快照
备份备份工具:select clause into outfile ‘/path/to/somefile’
恢复:load data infile ‘/path/from/somefile’
    不会备份关系定义,仅备份表中的数据
    也是逻辑备份工具,速度上快于mysqldump
    没法实现增量
第三组工具:
    innodb:ibbackup商业工具
    xtrabackup:开源工具

备份策略:

1、mysqldump

2、lvm+二进制日志

3、xtrabackup

mysqldump用法:

mysqldump [options] [db_name[tbl_name ...]]

-u:指定用户名

-h:指定主机

--all-databases:备份所有数据库

--databases:备份指定的多个库tb1tb2 >/tmp/a.sql,这种会自动创建库

恢复时需先有数据库,没有则需创建

注意:备份前要加锁

--lock-all-tables:请求锁定所有表之后再备份,对myisam、innodb、aria做温备

--single-tranaction:单事务,能够对innodb存储引擎实现热备,会自动加锁,与—lock-all-tables不能同时使用

备份代码:

--events:备份事件、调度器、代码

--routines:备份存储过程和存储函数

--triggers:备份触发器

备份时滚动日志:

--flush-logs:备份前、加锁后,滚动日志

复制时的同步位置标记:

--master-data={0|1|2}0:不记录,1:记录为changemaster语句2、记录为注释change master语句的

使用mysqldump备份:

请求锁:--lock-all-tables或—single-tranaction进行innodb热备

滚动日志:--flush-logs

选择要备份的库:--databases

记录二进制日志文件及位置:--master-data=

恢复:恢复过程没有必要记录到二进制日志中,所以临时关闭二进制日志,关闭其他用户连接source

备份策略:基于mysqldump

备份:mysqldump+二进制日志文件;

周日做一次完全备份:备份的同时滚动日志

周一至周六:备份二进制日志;

恢复:

完全备份+各二进制日志文件中至此刻的事件

对MySQL配置文件,以及与MySQL相关的OS配置文件在每次修改后都应该直接进行备份;

例1:备份和恢复单个库:

备份hellodb数据库

查看

删除mysql中的数据库

导入备份

说明导入之前数据库必须存在才行

创建数据库

导入备份

查看表

例2:备份所有库:

--all-databases

如果mysql数据库被删除,恢复时自动创建数据库

例3:备份多个库:

--databases db1 db2

如果mysql数据库被删除,恢复时自动创建数据库

例4:备份前应事先加锁

--lock-all-tables建议使用

--lock-tables,会导致表时间不一致,不建议使用

例5:

创建ha数据库

使用数据库ha,插入数据

查看表

查看表中数据

备份

查看二进制日志位置

新增内容

查看新增数据

删除数据库

备份新增数据的二进制日志文件

恢复前先临时关闭二进制日志功能(当前会话)

导入完全备份

查看数据库

使用ha数据库,并查看表

导入增量备份

查看表

查看新增的数据

还原二进制日志功能

查看二进制日志位置

lvm-snapshot:基于LVM快照的备份

1、事务日志和数据文件必须在同一个卷上

2、创建快照卷之前,要请求全局锁,在快照创建完成之后释放锁

3、请求全局锁完成后做日志滚动;做二进制日志文件及位置标记(手动进行);

备份步骤:

1、请求全局锁,并滚动日志

mysql> FLUSH TABLES WITH READLOCK;

mysql> FLUSH LOGS;

2、做二进制日志文件及位置标记(手动进行);

# mysql -e ‘show master status‘> /path/to/somefile

3、创建快照卷

# lvcreate -L   -s -n   -p r  /path/to/some_lv

4、释放全局锁

mysql> UNLOCK TABLES;

5、挂载快照卷并备份

# cp

6、备份完成之后,删除快照卷

恢复:

1、二进制日志保存好;

提取备份之后的所有事件至某sql脚本中;

2、还原数据,修改权限及属主属组等,并启动mysql

3、做即时点还原

使用Xtrabackup进行MySQL备份:

1、简介

Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。特点:

(1)备份过程快速、可靠;

(2)备份过程不会打断正在执行的事务;

(3)能够基于压缩等功能节约磁盘空间和流量;

(4)自动实现备份检验;

(5)还原速度快;

安装:

[[email protected] ~]# yum -y install percona-toolkit-2.2.4-1.noarch.rpm percona-xtrabackup-2.1.8-733.rhel6.x86_64.rpm

innobackupex:

完全备份:

[[email protected] data]# mkdir /mybackups   #准备备份目录

临时改变二进制日志功能,导入数据库

查看数据库

开启二进制功能

查看表的属性

备份

停止mysql服务

删除mysql所有数据库

准备阶段

复制备份回mysql数据目录

进入mysql数据目录

更改属主属组并启动服务

查看数据库

增量备份

每一次恢复后都要立即做一次完全备份

查看备份文件

新增数据

增量备份

查看备份

再新增数据

增量备份

查看备份信息

最后二进制日志的位置

新增数据

删除数据库

恢复完全备份

恢复第一次增量

恢复第二次增量

查看完全备份的及时点,和最后一次的增量及时点一样

二进制点也和最后一次增量一样

更改属主属组

保存二进制日志

启动服务器

关闭二进制功能,导入数据

开启二进制功能

查看数据

时间: 2024-11-03 03:44:18

Mysql/Mariadb备份的相关文章

CentOS 6.5 MySQL/MariaDB数据备份与恢复备份详解

MySQL/MariaDB数据备份与恢复备份 数据对我们来说再重要不过了,那我们如何做到对数据尽可能的安全呢,当我们的数据丢失了那又该怎么做呢,所以说数据备份对我们的数据安全性来说太重要了. 数据对我们来说再熟悉不过了,也最平常不过了,我们每天都在接触各色各样的数据,数据记录了我们平常相关的业务信息,所以数据对于我们来说是很重要的,这么重要的数据如果我们的数据丢失了那我们是不是相关的业务都没法进行了呢,这应该是个很麻烦的问题,那我们怎么保护我们的数据的安全呢,这就要用到我们的数据备份了. 如何执

MySQL和MariaDB 备份 主从 读写分离

查询缓存: 如何判断是否命中: 通过查询语句的哈希值判断:哈希值考虑的因素包括 查询本身.要查询的数据库.客户端使用协议版本,... 查询语句任何字符上的不同,都会导致缓存不能命中: 哪此查询可能不会被缓存? 查询中包含UDF.存储函数.用户自定义变量.临时表.mysql库中系统表.或者包含列级权限的表.有着不确定值的函数(Now()); 查询缓存相关的服务器变量: query_cache_min_res_unit: 查询缓存中内存块的最小分配单位: 较小值会减少浪费,但会导致更频繁的内存分配操

django+centos+mariadb读写分离完美实现(上)-mysql主从备份实现

首先画图一张,用来展示今天要做的事情,读写分离,个人理解就是使用mysql主从备份的原理,让两个数据库同时为自己提供服务.其中主库负责数据保存,从库负责数据展示,可以一主一从,也可以一主多从.从而降低数据库同时处理读写的压力. 1.环境如下 master 10.10.101.83 slave 10.10.101.184 2.接着搭建数据库备份,使用的是centos7.4+mariadb 2-1-两台服务器安装Mariadb数据库 (ps:mariadb是免费版的mysql,操作很相似,注意,两台

MySQL/MariaDB数据库基于SSL实现主从复制

前言 备份数据库是生产环境中的首要任务,有时候不得不通过网络进行数据库的复制,由于MySQL/MariaDB的主从复制是明文传送的,如果在生产环境中跨网络传送,数据的安全性就无法完全保证,为了解决这一问题,我们需要一种安全的方式进行传送,即基于SSL加密进行数据传输. 部署配置 实验拓扑 实验环境 系统环境:CentOS6.6 数据库版本:mariadb-5.5.36 #注意:主从服务器数据库版本须一致:主从服务器时间须同步 #此实验从服务器只做一组为例 配置主从复制 安装mariadb [[e

基于SSL的mysql(MariaDB)主从复制

一.前言 备份数据库是生产环境中的首要任务,重中之重,有时候不得不通过网络进行数据库的复制,这样就需要保证数据在网络传输过程中的安全性,因此使用基于SSL的复制会大加强数据的安全性 二.准备工作 1.主从服务器时间同步 [[email protected] ~]# crontab -e */30 * * * * /usr/sbin/ntpdate 172.16.0.1 &>/dev/null 2.mysql说明 (1)主服务器 hostname:master    IP:172.16.7.2

mysql的备份恢复

rmysql的备份: 误操作.mysql崩溃.黑客攻击.软件故障.硬件故障.升级数据库,测试等都会造成mysql数据的损坏,这时如果有备份的话还好,没备份的话就尴尬了. 备份类型: 完全备份:备份整个数据库 部分备份:只备份数据库中的几张表或库 增量备份:相对于上一次完全备份或增量备份,只备份变化的数据集 (可以是二进制日志) 差异备份:相对于上一次完全备份,仅备份变化的数据集 备份方式: 物理备份:直接复制数据文件进行备份:速度快 缺点:当在备份的过程中有用户通过应用程序访问更新数据,这样就无

LNMP 1.2升级Nginx、MySQL/MariaDB、PHP教程

一般情况下不建议对生产环境进行升级,升级开始后会停止LNMP相关服务.本文仅适用于LNMP1.2及以后版本! 在LNMP目前LNMP v1.2中已经包含了Nginx.MySQL/MariaDB.PHP的升级脚本,可以帮助搭建对环境中的程序进行升级.(注意:以下操作均需要在lnmp压缩包解压后的目录里运行) 一.Nginx升级脚本执行:./upgrade.sh nginx 按提示输入版本号后回车(访问 http://nginx.org/en/download.html 可查找nginx的最新版本号

MySQL/MariaDB数据库备份与恢复

前言 数据库一般存放着企业最为重要的数据,它关系到企业业务能否正常运转,数据库服务器总会遇到一些不可抗拒因素,导致数据丢失或损坏,而数据库备份可以帮助我们避免由于各种原因造成的数据丢失或着数据库的其他问题.本文将讲解MySQL/MariaDB数据库的几种备份方法. 基础知识 备份类型 完全备份:备份整个数据库 部分备份:仅备份其中的一张表或多张表 增量备份:仅备份从上次完全备份或增量备份之后变化的数据部分 差异备份:备份上次备份后变化的数据部分,和增量备份区别在于差异备份只可以相对完全备份做备份

MySQL/MariaDB的备份与恢复

二进制日志简介 mysql的二进制日志从本质上来讲就是重做日志,它记录了mysql服务器上此前所发生的所有引起了数据改变或潜在会影响数据改变的相关的操作.这个在恢复数据时非常有用,可以基于备份,通过二进制日志文件将数据恢复至某一个具体的时间点.当然二进制日志文件不能和数据文件放在同一块磁盘上. 查看当前服务器的二进制日志文件 MariaDB [(none)]> show binary logs; +------------------+-----------+ | Log_name