Mysql增量备份之Mysqldump & Mylvmbackup

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

简单介绍

备份类型 备份方式

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

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

冷备份:备份期间需要关闭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

完整备份成功!




本文转自 李振良OK 51CTO博客,原文链接:http://blog.51cto.com/lizhenliang/1302732,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
30天前
|
关系型数据库 MySQL
elasticsearch对比mysql以及使用工具同步mysql数据全量增量
elasticsearch对比mysql以及使用工具同步mysql数据全量增量
21 0
|
2月前
|
SQL 关系型数据库 MySQL
mysql怎么备份
mysql怎么备份
197 7
|
2月前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表10、数据导入和导出——1、数据导入(LOAD DATA, mysqldump)——2、数据导出(SELECT ... INTO OUTFILE, mysqldump)
MySQL技能完整学习列表10、数据导入和导出——1、数据导入(LOAD DATA, mysqldump)——2、数据导出(SELECT ... INTO OUTFILE, mysqldump)
49 0
|
17天前
|
SQL 存储 关系型数据库
mysql数据库备份与恢复
mysql数据库备份与恢复
|
2月前
|
关系型数据库 MySQL Linux
Linux环境下定时备份mysql数据库
Linux环境下定时备份mysql数据库
|
2月前
|
存储 关系型数据库 MySQL
mysql怎么备份
mysql怎么备份
22 7
|
2月前
|
监控 容灾 安全
规划阿里云RDS跨区迁移并构建容灾与备份策略
规划阿里云RDS(Relational Database Service)跨区迁移并构建容灾与备份策略
114 2
|
2月前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表11、日志和备份——1、查看日志——2、数据备份和恢复(mysqldump, mysqlbinlog)
MySQL技能完整学习列表11、日志和备份——1、查看日志——2、数据备份和恢复(mysqldump, mysqlbinlog)
45 0
|
2月前
|
SQL 关系型数据库 MySQL
centos实现mysql定时备份(单机)
centos实现mysql定时备份(单机)
75 0
|
2月前
|
关系型数据库 API 数据库
rds备份与恢复
rds备份与恢复
83 4