窝窝插件 发表于 2018-10-9 09:40:01

Mysql增量备份之Mysqldump & Mylvmbackup

  http://lizhenliang.blog.51cto.com/7876557/1302732
  简单介绍
备份类型备份方式  热备份:备份期间不需要服务停机,业务不受影响;
  温备份:备份期间仅允许读的请求;
  冷备份:备份期间需要关闭Mysql服务或读写请求都不受影响;
  完全备份:full backup备份全部数据集;
  增量备份:incrementalbackup 上次完全备份或增量备份以来改变的数据;
  差异备份:differentialbackup 上次完全备份以来改变的数据;
  完全+增量备份方式恢复用到的备份文件:完全备份+增量备份+二进制文件;
  完全+差异备份方式恢复用到的备份文件:完全备份+增量备份+二进制文件;
逻辑备份优点缺点  逻辑备份可以使用编辑器或文本处理工具进行编辑或查看;
  恢复非常简单;
  比较灵活;
  与存储引擎无关;
  有助于避免数据损坏;
  逻辑备份可以使用编辑器或文本处理工具进行编辑或查看;
  恢复非常简单;
  比较灵活;
  与存储引擎无关;
  有助于避免数据损坏;
物理备份优点缺点  备份与恢复数据比较简单;
  InnoDB与MyISAM的物理备份容易跨平台、操作系统和Mysql版本;
  恢复速度比较快,不需要重新构建索引;
  InnoDB的原始文件会比逻辑备份大得多;
  物理备份不是总可以跨平台、操作系统及Mysql版本;
  文件名大小写敏感和浮点格式有可能会有问题
备份对象:  数据文件、配置文件、代码:存储过程,存储函数、触发器等、二进制日志、事务日志、服务器配置、管理脚本、任务计划等。
  Mysqldump增量备份
  使用Mysqldump备份工具实现完全备份,并结合二进制日志实现增量备份。
  特点:逻辑备份工具、支持InnoDB热备份、MyISAM温备份;备份与恢复较慢
  一、备份数据库
  1
  2
  3
  mysqldump -uroot -poldboy123 --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>
  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
  
  user=root
  password=123.com
  host=localhost
  port=3306
  socket=/tmp/mysql.sock
  mycnf=/etc/my.cnf
  
  vgname=myvg #卷组的名字
  lvname=mylv #逻辑卷的名字
  lvsize=5G #备份时创建的snapshot的大小
  
  mountdir=/opt/snap_mnt #snapshot的mount位置
  backupdir=/backup #备份打包后的存放位置
  relpath=mysqldata #如果只是想备份逻辑卷下的某个目录的话,则要指出来
  
  lvcreate=/usr/sbin/lvcreate
  lvremove=/usr/sbin/lvremove
  mount=/bin/mount
  tar=/bin/tar
  umount=/bin/umount
  
  prefix=backup #备份打包文件的命名前缀
  suffix=_mysql #定义备份文件名后缀
  2、备份数据库并验证备份文件
  1
  2
  3
  4
  5
  6
  7
  # 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
  出现以上信息表示备份成功,最后删除快照卷!
  # ls /mysqlbackup/
  backup-201309029_115532_mysql.tar.gz
  完整备份成功!

页: [1]
查看完整版本: Mysql增量备份之Mysqldump & Mylvmbackup