简单介绍
备份类型 |
备份方式 |
热备份:备份期间不需要服务停机,业务不受影响;
温备份:备份期间仅允许读的请求;
冷备份:备份期间需要关闭Mysql服务或读写请求都不受影响;
|
完全备份:full backup备份全部数据集;
增量备份:incrementalbackup 上次完全备份或增量备份以来改变的数据;
差异备份:differentialbackup 上次完全备份以来改变的数据;
完全+增量备份方式恢复用到的备份文件:完全备份+增量备份+二进制文件;
完全+差异备份方式恢复用到的备份文件:完全备份+增量备份+二进制文件;
|
逻辑备份 |
优点 |
缺点 |
逻辑备份可以使用编辑器或文本处理工具进行编辑或查看;
恢复非常简单;
比较灵活;
与存储引擎无关;
有助于避免数据损坏;
|
逻辑备份可以使用编辑器或文本处理工具进行编辑或查看;
恢复非常简单;
比较灵活;
与存储引擎无关;
有助于避免数据损坏;
|
物理备份 |
优点 |
缺点 |
备份与恢复数据比较简单;
InnoDB与MyISAM的物理备份容易跨平台、操作系统和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
-- 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
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
[fs]
mountdir= /opt/snap_mnt
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 ~]
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 ~]
backup-201309029_115532_mysql. tar .gz
|
完整备份成功!
|
本文转自 李振良OK 51CTO博客,原文链接:http://blog.51cto.com/lizhenliang/1302732,如需转载请自行联系原作者