mylvmbackup是一个用perl写的mysql备份脚本。利用lvm的snapshot,可以说几乎是在线热备

     一、前提
      
      1.首先,你的系统需要支持快照。可参照本博客相关文章。
      2.安装支持库
引用
yum install perl-DBD-mysql
yum install perl-DBI
yum install perl-TimeDate
rpm -ivh perl-Config-IniFiles-2.57-1.el5.pp.noarch.rpm


      二、下载安装mylvmbackup

引用
wget http://lenzg.net/mylvmbackup/mylvmbackup-0.13.tar.gz
tar zxvf mylvmbackup-0.13.tar.gz
cd mylvmbackup-0.13/
make install


       三、配置/etc/mylvmbackup.conf
引用
[mysql]                                 //mysql 配置
user=root
password=123456
host=localhost
port=3306
socket=/tmp/mysql.sock
mycnf=/etc/my.cnf
[lvm]
vgname=test-vg               //volumn group的名字
lvname=test-lv               //逻辑卷的名字
backuplv=                        //定义snapshot卷的名称,默认是_sanpshot
lvsize=1G                          //备份时创建的snapshot的大小
[fs]
xfs=0
mountdir=/var/tmp/mylvmbackup/mnt/                  //挂载目录。默认的
backupdir=/var/tmp/mylvmbackup/backup/            //备份目录。
relpath=
[tools]
lvcreate=lvcreate
lvremove=lvremove
lvs=lvs
mount=mount
tar=tar
compress=gzip
rsync=rsync
rsnap=rsnap
umount=umount
[misc]
backuptype=tar
prefix=backup
suffix=_mysql
tararg=cvf
tarsuffixarg=
tarfilesuffix=.tar.gz
compressarg=--stdout --verbose --best
rsyncarg=-avWP
rsnaparg=7
datefmt=%Y%m%d_%H%M%S
innodb_recover=0
pidfile=/var/tmp/mylvmbackup_recoverserver.pid
skip_flush_tables=0
extra_flush_tables=0
skip_mycnf=0
hooksdir=/usr/share/mylvmbackup
skip_hooks=0
keep_snapshot=0               //是否保留snaphot
keep_mount=0                   //是否卸载snaphot
quiet=0                             //定义记录日志类型
[logging]
log_method=console
syslog_socktype=native
syslog_facility=
syslog_remotehost=


    注意事项,mysql的数据文件要指定到lvm里。


    四、执行备份
引用
/usr/local/bin/mylvmbackup


      这样会在/var/tmp/mylvmbackup/backup 目录下产生类似backup-20110402_120731_mysql.tar.gz这样的备份文件。解压后会有backup和backup-pos两个文件夹。backup-20110402_120731_mysql_my.cnf为mysql的配置文件  backup-20110402_120731_mysql.pos这个对主从环境下很有用。记录有MASTER_LOG_FILE 和MASTER_LOG_POS。对于主从环境可以直接拷贝backup内容到从数据库指定位置。并通过CHANGE MASTER TO指定从服务器开始执行复制的日志文件和位置。