MySQL的热备份开源工具XtraBackup 备份并使用ftp脚本上传备份数据
2011-08-04 22:06
1241 查看
首先代表所有使用者,感谢PERCONA的无私贡献,今天简单介绍一下 MySQL 免费热备工具 XtraBackup , 特别是几个使用时值得注意的地方。
1. 下载XtraBackup并安装
当前最新的版本是1.6 ,从这里可以选择不同OS的相应版本: http://www.percona.com/downloads/XtraBackup/XtraBackup-1.6/ 在LINUX下你可以直接运行:
wget http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-1.6/RPM/rhel5/x86_64/xtrabackup-1.6-245.rhel5.x86_64.rpm rpm -ivh xtrabackup-1.6-245.rhel5.x86_64.rpm
2. 数据库中建立备份账号
这个帐户主要是用来完成备份时一些锁表等工作;
3. 全量备份与恢复
一般库不大(< 200G),我们就选择用全量备份 ;
innobackupex-1.5.1 工具是用PERL包装过的”xtrabackup“,他不旦可以备份INNODB,还可以备份MYISAM等非事务数据库;
3.1 全量备份 脚本 并使用ftp 上传至ftp 备份服务器
下面为ftp 上传脚本
### 注意点:
在备份过程中,把INNODB数据文件备份完成后,会锁住整个库,并开始复制MYISAM等非事务引擎的数据和.frm;
所以如果你拥有比较多的MYISAM表,锁库的时候会持续很长。如果是在主库上运行,千万注意。
3.2 全量恢复
3.2.1 应用日志
## 这个过程主要是产生REDOLOG并将备份期间产生的REDO应用到数据文件中;
## xtrabackup 会启动一个INNODB进程去做,与你当前在跑的不冲突
innobackupex-1.5.1 --apply-log /backup/
3.2.2 复制数据文件到数据目录
## 这个过程将恢复好的数据复制到my.cnf中指定的数据目录中。 这时你需要把原有的实例停掉
innobackupex-1.5.1 --copy-back /backup/
4. 增量备份
增量备份我们只能使用xtrabackup工具;
1)只能用于INNODB
2)my.cnf文件[mysqld]中需要设置 default_table_type=InnoDB
4.1 全量备份(参考 3.1)
4.2 增量备份 (只复制变化过的块)
#指定备份根目录
backup_path=/backup/2011-08-04_21-56-08
#指定备份根目录
incre_path=/backup/daiy
#开始备份
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=$incre_path --incremental-basedir=$backup_path
在/backup/daiy将产生一些.delta数据文件;
另外可以注意xtrabackup_checkpoints这个文件lsn的变化
4.3 恢复 (先恢复全量备份的日志)
## 用增量备份加入全量数据
自己试试.
1. 下载XtraBackup并安装
当前最新的版本是1.6 ,从这里可以选择不同OS的相应版本: http://www.percona.com/downloads/XtraBackup/XtraBackup-1.6/ 在LINUX下你可以直接运行:
wget http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-1.6/RPM/rhel5/x86_64/xtrabackup-1.6-245.rhel5.x86_64.rpm rpm -ivh xtrabackup-1.6-245.rhel5.x86_64.rpm
2. 数据库中建立备份账号
GRANT SELECT, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO ‘username'@'localhost' IDENTIFIED BY ‘password'; |
3. 全量备份与恢复
一般库不大(< 200G),我们就选择用全量备份 ;
innobackupex-1.5.1 工具是用PERL包装过的”xtrabackup“,他不旦可以备份INNODB,还可以备份MYISAM等非事务数据库;
3.1 全量备份 脚本 并使用ftp 上传至ftp 备份服务器
#!/bin/bash #this script used backup mysql data.edit by colderboy. user=root host=localhost passwd=123456 backlog=/data/log/`date '+%Y%m'` backup_path=/backup mycnf=/etc/my.cnf echo "#################################start backup `date '+%Y-%m-%d %T'`" >> $backlog innobackupex-1.5.1 --user=$user --password=$passwd --host=$host --port=3306 --tmpdir=/tmp --defaults-file=$mycnf $backup_path 2>$bac klog cd $backup_path backname=`ls` tar -zcvf ${backname}.tar.gz $backname 2>>$backlog if [ $? -eq 0 ] then if [ -f ${backname}.tar.gz ] then /www/scripts/ftp_upload.sh ${backname}.tar.gz && rm -rf ${backname}.tar.gz else echo "$backname file not exist `date '+%Y-%m-%d %T'`" >> $backlog fi echo "delete backup file $backname" >>$backlog rm -rf $backname else echo "backup failed `date '+%Y-%m-%d %T'`" >> $backlog fi echo "###########################################################################" >>$backlog |
[root@log scripts]# more ftp_upload.sh #/bin/bash #This script is used to upload a backup file. #badboy 2011-05-25 if [ $# -ne 1 ] then echo " Usage `basename $0` upload filename upload backup dir " exit 1 fi host=192.168.0.11 user=test passwd=test f_name=$1 s_dir=/www/backup t_dir=test ftp -n<<! open $host user $user $passwd binary cd $t_dir lcd $s_dir prompt put $f_name close bye ! |
在备份过程中,把INNODB数据文件备份完成后,会锁住整个库,并开始复制MYISAM等非事务引擎的数据和.frm;
所以如果你拥有比较多的MYISAM表,锁库的时候会持续很长。如果是在主库上运行,千万注意。
3.2 全量恢复
3.2.1 应用日志
## 这个过程主要是产生REDOLOG并将备份期间产生的REDO应用到数据文件中;
## xtrabackup 会启动一个INNODB进程去做,与你当前在跑的不冲突
innobackupex-1.5.1 --apply-log /backup/
3.2.2 复制数据文件到数据目录
## 这个过程将恢复好的数据复制到my.cnf中指定的数据目录中。 这时你需要把原有的实例停掉
innobackupex-1.5.1 --copy-back /backup/
4. 增量备份
增量备份我们只能使用xtrabackup工具;
1)只能用于INNODB
2)my.cnf文件[mysqld]中需要设置 default_table_type=InnoDB
4.1 全量备份(参考 3.1)
4.2 增量备份 (只复制变化过的块)
#指定备份根目录
backup_path=/backup/2011-08-04_21-56-08
#指定备份根目录
incre_path=/backup/daiy
#开始备份
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=$incre_path --incremental-basedir=$backup_path
在/backup/daiy将产生一些.delta数据文件;
另外可以注意xtrabackup_checkpoints这个文件lsn的变化
4.3 恢复 (先恢复全量备份的日志)
## 用增量备份加入全量数据
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/backup/2011-08-04_21-56-08 xtrabackup --target-dir/backup/2011-08-04_21-56-08 --prepare --incremental-dir=/backup/daiy ## 应用日志 xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/backup/2011-08-04_21-56-08 |
相关文章推荐
- mysql定期备份数据并压缩上传到ftp服务器的bat文件脚本,恢复建议使用SQLyog enterprise
- 自动备份MySQL数据并上传到FTP上shell脚本
- Mysql第三方备份工具Xtrabackup使用说明
- 生产环境MySQL快速备份工具XtraBackup使用案例
- 利用TSQL脚本将备份数据自动上传到ftp
- 使用mysql备份工具innobackupex将本地数据 直接恢复 到远端服务器数据目录操作实例
- XtraBackup - 开源MySQL在线热备份工具安装使用
- 使用mysql备份工具innobackupex进行本地数据备份、恢复操作实例
- MySQL备份工具XtraBackup的使用
- linux系统mysql自动备份并使用ftp上传的方法
- Mysql开源备份工具Xtrabackup备份部署
- 生产环境MySQL快速备份工具XtraBackup使用案例
- MySQL(十三)之数据备份工具xtrabackup
- 编写脚本令Xtrabackup对MySQL数据进行备份的教程
- 【shell脚本】ftp自动上传mysql备份文件
- 【shell脚本】ftp自动上传mysql备份文件
- mysqlimport工具的使用帮助文档(mysql导入csv数据,mysql备份数据恢复)
- CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中(转)
- MySQL第三方备份工具xtrabackup使用