MariaDB-之基于mysqldump 、lvm-snapshot、 xtrabackup的备份

本文主要讲述基于mysqldump、逻辑卷的快照和Xtrabackup做数据库的备份与复制及注意事项

做备份的目录目的为做灾难恢复、做审计、测试,要对备份的数据做恢复性测试

备份类型

根据备份时,数据库服务器是否在线,可以分为

冷备:cold backup

温备:warm backup 全局施加共享锁,只能读,不能写

热备:hot backup

根据备份的数据集,可以分为:

完全备份 full backup

部分备份 partial backup

根据备份时的接口(直接备份数据文件还是通过mysql服务器导出数据)

物理备份:直接复制(归档)数据文件的备份方式

逻辑备份:把数据从库中提取出来保存为文本文件

根据备份时是备份整个数据还是仅备份变化的数据,可以分为

完全备份 full backup

增量备份 incremental backup

差异备份 differential backup 从上一次完全备份开始备份

备份策略:

选择备份方式

选择备份时间

考虑恢复成本

考虑恢复时长

考虑备份成本:施加锁的时间,备份时长,备份负载

备份对象:

数据

配置文件

代码:存储过程、存储函数、触发器

OS相关的配置文件,如crontab配置计划及相关脚本

跟复制相关的配置信息:二进制日志文件

常用的备份工具简介

mysqldump,单线程,是一个逻辑备份工具,可以对InnoDB热备、MyISAM温备、Aria温备

缺点:备份和恢复过程较慢,很难实现差异或增量备份

mysqldumper:多线程的mysqldump

缺点:很难实现差异或增量备份

基于逻辑卷快照:接近于热备的工具,因为要先请求全局锁,而后创建快照,并在创建完成后释放全局锁,可以使用cp、tar等工具进行物理备份,备份和恢复岁都很快

缺点:很难实现增量备份,并且请求全局锁需要等待一段时间,在繁忙的服务器上尤其如此

select语句:

备份:select clause into outfile ‘/path/to/somefile’

恢复:load data infile ‘/path/to/somefile’ into table ‘tb_name’

Innobase:商业备份工具,

innobackup

Xtarbackup: 由Percona提供的开源备份工具。

mysqlhostcopy:几乎冷备

本实验数据目录是放在逻辑卷组上的,目录为/mydata/data ,基于 10.0.10-MariaDB实现,MariaDB的安装可以参考本人Mysql的博客来实现

一、mysqldump

mysqldump仅适用于数据集较小场景

用法:mysqldump [options] [db_name [tbl_name …]]

主要选项解释:

–all-databases, -A:备份所有数据库

–databases, -B:要备份的数据库,可以同时备份多个,使用空格分隔

–flush-logs, -F:备份前、请求到锁之后滚动日志,要记录下复制时的二进制日志

–flush-privileges:通知数据库重读授权表

–host=host_name, -h host_name:要备份的数据库的主机名,可以基于网络备份

–lock-all-tables, -x:请求锁定所有表之后再备份,对MyISAM,InnoDB,Aria做温备

–single-transaction:能够对InnoDB存储引擎实现热备

-u usename 备份的用户名

-p password 登陆数据库的密码

–events:备份事件调度器代码

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

–triggers:备份触发器

–master-date={0|1|2},0表示不记录,1表示距离为change master 语句,2表示记录为注释的change master语句

备份实例:

本实验mysql是没有密码的,如果有则加-u -p选项

[root@master ~]# mysqldump –databases hellodb –lock-all-tables –flush-logs –master-data=2 >/tmp/db.sql

备份完之后,再修改插入一些数据库数据,

MariaDB [none]>use hellodb MariaDB [hellodb]> insert into classes values (13,’xx’,12);Query OK, 1 row affected (0.40 sec)

把数据库全部删除。用DROP命令

MariaDB [(none)]> drop database hellodb

查看/tmp/db.sql,可以看见备份时的二进制日志位置

然后进行二进制日志备份:

[root@master ~]# mysqlbinlog –start-position=367 –stop-position=555 /binlog/mysql-bin000001 > /tmp/db1.sql

恢复数据:打开mysql

先关闭二进制日志,导入完全备份

MariaDB [(none)]> set session sql_log_bin=0MariaDB [(none)]> source /tmp/db.sql //导入备份文件

然后导入二进制备份:

MariaDB [(none)]> source /tmp/db1.sql //导入备份文件

开启二进制日志:

MariaDB [(none)]> set session sql_log_bin=1

查看数据是否恢复:

注:在实际恢复时最好编辑my.cnf配置文件,添加如下项:

skip-networking //跳过网络功能来恢复数据

二、基于lvm逻辑卷的快照备份

待人对事不要太计较,如果太计较就会有悔恨!

MariaDB-之基于mysqldump 、lvm-snapshot、 xtrabackup的备份

相关文章:

你感兴趣的文章:

标签云: