博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql增量备份之Mysqldump & Mylvmbackup
阅读量:6955 次
发布时间:2019-06-27

本文共 4640 字,大约阅读时间需要 15 分钟。

简单介绍

备份类型 备份方式

热备份:备份期间不需要服务停机,业务不受影响;

温备份:备份期间仅允许读的请求;

冷备份:备份期间需要关闭Mysql服务或读写请求都不受影响;

完全备份:full backup备份全部数据集;

增量备份:incrementalbackup 上次完全备份或增量备份以来改变的数据;

差异备份:differentialbackup 上次完全备份以来改变的数据;

完全+增量备份方式恢复用到的备份文件:完全备份+增量备份+二进制文件;

完全+差异备份方式恢复用到的备份文件:完全备份+增量备份+二进制文件;

逻辑备份
优点 缺点

逻辑备份可以使用编辑器或文本处理工具进行编辑或查看;

恢复非常简单;

比较灵活;

与存储引擎无关;

有助于避免数据损坏;

逻辑备份可以使用编辑器或文本处理工具进行编辑或查看;

恢复非常简单;

比较灵活;

与存储引擎无关;

有助于避免数据损坏;

 物理备份
优点 缺点

备份与恢复数据比较简单;

InnoDBMyISAM的物理备份容易跨平台、操作系统和Mysql版本;

恢复速度比较快,不需要重新构建索引;

InnoDB的原始文件会比逻辑备份大得多;

物理备份不是总可以跨平台、操作系统及Mysql版本;

文件名大小写敏感和浮点格式有可能会有问题

备份对象:
数据文件、配置文件、代码:存储过程,存储函数、触发器等、二进制日志、事务日志、服务器配置、管理脚本、任务计划等。

Mysqldump增量备份

使用Mysqldump备份工具实现完全备份,并结合二进制日志实现增量备份。

特点:逻辑备份工具、支持InnoDB热备份、MyISAM温备份;备份与恢复较慢

一、备份数据库

1
2
3
mysqldump -uroot -p123.com --lock-all-tables --flush-logs --databases 
test 
/mysqlbackup/test_
`
date 
+%F`.sql
--lock-all-tables:备份时为所有表请求加锁
--flush-log:备份之前刷新日志

二、备份二进制文件

在test库中创建一个表,增加数据,模拟增量备份,并查看当前二进制日志位置。

1
cp 
/usr/local/mysql/data/mysqld-bin
.00000* 
/mysqlbackup

1
2
3
4
5
6
7
mysql> create table abc (number INT(11), name varchar(100));
mysql> show master status;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| mysqld-bin.000004 | 221 | | |
+-------------------+----------+--------------+------------------+

三、查看二进制文件和完整备份后LOG_POS值在什么位置

1
2
3
less 
/mysqlbackup/test_2013-09-29
.sql  
#前几行可以看到在106
-- Position to start replication or point-
in
-
time 
recovery from
-- CHANGE MASTER TO MASTER_LOG_FILE=
'mysqld-bin.000005'
, MASTER_LOG_POS=106;

四、二进制增量备份

1>.完整备份后到现在备份:

1
2
3
mysqlbinlog --start-position=106 
/var/lib/mysql/mysqld-bin/mysql/mysqld-bin
.000005 > 
/mysqlbackup/test_incremental
.sql
--start-position:从哪个位置开始导出二进制日志
--stop-position:从哪个位置结束,到末尾可以不指定

2>.向数据库添加一条记录,然后删除数据库,再恢复到当前数据

1
2
3
4
5
6
7
mysql>create table abd (number INT(1),name varchar(10));
mysql> show master status;   
#查看二进制所在位置
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| mysqld-bin.000005 | 527 | | |
+-------------------+----------+--------------+------------------+

五、恢复数据到当前数据,需要恢复完整备份+增量备份+增量备份后删除之前的二进制文件

1
2
3
4
5
6
mysqlbinlog 
/var/lib/mysql/mysqld-bin
.000005  
#查看二进制,看在什么时候做的,文件最后下面看出在446
# at 446
#130929 11:04:16 server id 1 end_log_pos 527 Query thread_id=10 exec_time=0 error_code=0
SET TIMESTAMP=1380467056/*!*/;
drop database 
test
/*!*/;

六、导出之前删除数据库至增量备份后的二进制文件

1
2
3
4
5
6
mysqlbinlog --start-position=220 --stop-position=446 
/var/lib/mysql/mysqld-bin
.000005 > 
/mysqlbackup/test_446
.sql
mysql> 
source
/backupn/test_2013-09-06
.sql 
#恢复完整备份
mysql> 
source
/backup/test_incremental
.sql 
#恢复增量备份
mysql> 
source
/backup/test_446
.sql 
#恢复增量后至删除前的数据
mysql> use 
test
mysql> show tables;查看数据恢复成功!

Mylvmbackup快速完整备份

mylvmbackup 是一个工具,用于快速创建完整的物理备份MySQL服务器的数据文件,备份数据时,将锁定 MySQL 所有的表,并将缓存中数据写到磁盘,然后执行 LVM 快照后解锁。

使用LVM逻辑卷快照功能实现几乎热血备份的完全备份,并结合二进制日志实现增量备份。

特点:几乎接近于热备份、物理备份、备份与恢复较快。

必须mysql数据库存放目录是LVM卷下,如果要做增量备份,bin-log日志也要在LVM卷下,而且LVM卷要有空间给快照备份。

修改mysql和bin-log日志位置:

1
2
3
vi 
/etc/my
.cnf
datadir=
/myvg/data
bin-log=
/myvg/binlog/mysqld-bin

mysql有以下几种日志: 

错误日志: -log-err 
查询日志: -log 
慢查询日志: -log-slow-queries 
更新日志: -log-update 
二进制日志: -log-bin

一、创建LVM卷

1
2
3
4
5
6
7
8
9
10
1>.创建物理卷
pvcreate 
/dev/sdb
2>.创建卷组
vgcreate myvg 
/dev/sdb
3>.创建逻辑卷
lvcreate -n mylv -L 19G myvg
4>.格式化文件系统
mkfs.ext4 
/dev/myvg/mylv
5>.挂载使用
mount 
/dev/myvg/mylv/ 
/data

二、安装使用Mylvmbackup

1
2
3
wget http:
//www
.lenzg.net
/mylvmbackup/mylvmbackup-0
.14-0.noarch.rpm
yum 
install 
-y perl-TimeDate perl-Config-IniFiles perl-DBD-MySQL 
#安装依赖包
rpm -ivh mylvmbackup-0.14-0.noarch.rpm

1、修改主配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
vi 
/etc/mylvmbackup
.conf
[mysql]
user=root
password=123.com
host=localhost
port=3306
socket=
/tmp/mysql
.sock
mycnf=
/etc/my
.cnf
[lvm]
vgname=myvg 
#卷组的名字
lvname=mylv 
#逻辑卷的名字
lvsize=5G 
#备份时创建的snapshot的大小
[fs]
mountdir=
/opt/snap_mnt 
#snapshot的mount位置
backupdir=
/backup 
#备份打包后的存放位置
relpath=mysqldata 
#如果只是想备份逻辑卷下的某个目录的话,则要指出来
[tools]
lvcreate=
/usr/sbin/lvcreate
lvremove=
/usr/sbin/lvremove
mount
=
/bin/mount
tar
=
/bin/tar
umount
=
/bin/umount
[misc]
prefix=backup 
#备份打包文件的命名前缀
suffix=_mysql 
#定义备份文件名后缀

2、备份数据库并验证备份文件

1
2
3
4
5
6
7
[root@202 ~]
# mylvmbackup
20130906 11:55:33 Info: Running: lvremove -f 
/dev/myvg/mysql_snap
Logical volume 
"mysql_snap"
successfully removed
20130906 11:55:34 Info: DONE: Removing snapshot
出现以上信息表示备份成功,最后删除快照卷!
[root@202 ~]
# ls /mysqlbackup/
backup-201309029_115532_mysql.
tar
.gz

完整备份成功!

转载地址:http://qgtil.baihongyu.com/

你可能感兴趣的文章
Lucene:基于Java的全文检索引擎简介
查看>>
Linux挂载img镜像文件
查看>>
scp设置不要求验证拷贝
查看>>
我的友情链接
查看>>
ERROR 145 (HY000) at line 34: Table is marked as crashed and should be repaired
查看>>
java 在web项目启动时,执行某个方法
查看>>
域服务管理规划
查看>>
我的友情链接
查看>>
flex4整合MyEclipse8.0教程
查看>>
Linux运维系统工程师与java基础学习系列-8
查看>>
遍历PlaceHolder中的web控件
查看>>
新建yanfa组,组内用户权限和root一致
查看>>
sz rz命令使用说明
查看>>
我的友情链接
查看>>
格式化U盘为NTFS格式
查看>>
Snowflak算法 (C#版本)
查看>>
NHibernate+MySql常见问题
查看>>
IT人的学习方法论-7,IT专家成长的十个学习的建议(下)
查看>>
SQL Server中角色与权限管理
查看>>
20150827-grep及正则表达式学习
查看>>