【摘要】

目前IT运维工作中,常用备份软件均能够支持针对常用的数据库如Oracle和MS SQL的备份,但是对于运维人员,针对MySQL尚没有很好的方案。本文主要介绍MySQL本地备份方案,通过mysqldump实现本地全备和增备。管理员可在此本地备份的基础上,再通过备份软件备份本地备份数据。

【正文】

1.在上述目录下创建全备脚本

vim Full_Backup.sh

#!/bin/bash

# 备份文件存放路径

FileDir=/DB_Backup

# 全备文件命名

fullbackup=$FileDir/dbfull-`date +%F`.sql

# MySQL安装路径

basedir=/usr/local/mysql

# 配置MySQL连接信息

# USER:MySQL用户,建议用root账号

# PASSWORD:账号对应的密码

# HOST:主机IP地址,特别是远程备份时必须写备份目标的IP地址

# PORT:MySQL服务的端口,默认3306,如果为3306则可以不写

#$HOST=

#$PORT=

$PASSWORD=password

$USER=root

# MySQL连接命令

Command_mysqldump=$basedir/bin/mysqldump -u$USER -p$PASSWORD

# 用mysqldump执行全备

# –all-database:备所有的数据库

# –master-data:记录CHANGE MASTER TO语句,2表示把这一行注释

# –flush-logs:锁定表之后执行flush logs命令,切换binlog文件

# –single-transaction:单个事物,保证备份时数据处于一致状态

# –events –ignore-table=mysql.events:如需备份事件表,加上该参数

$Command_mysqldump –all-databases –master-data=2 –flush-logs –single-transaction –default-character-set=utf8 > $fullbackup

# 创建一个全备文件存放位置的语句,增量备份时需要用到

tail -n 1 $fullbackup >> $FileDir/weeklybackup.time

# 清理前30天的备份文件

find $FileDir -mtime +30 -name “*.sql” -exec rm -rf {} \;

3.在上述创建的目录下创建增备脚本

vim Incre_Backup.sh

#!/bin/bash

# 备份文件存放路径

FileDir=/DB_Backup

# 备份文件命名

increbackup=$FileDir/dbincre-`date +%F%H%M%S`.sql

#MySQL安装路径

basedir=/usr/local/mysql

# 配置MySQL连接信息

# USER:MySQL用户,建议用root账号

# PASSWORD:账号对应的密码

# HOST:主机IP地址,特别是远程备份时必须写备份目标的IP地址

# PORT:MySQL服务的端口,默认3306,如果为3306则可以不写

#$HOST=

#$PORT=3306

$PASSWORD=password

$USER=root

# MySQL连接命令

Command_mysql=$basedir/bin/mysqldump -u$USER -p$PASSWORD

# 获取当前数据库使用的二进制文件

binlogfile=`$Command_mysql -e ‘show master status’ | grep ‘bin’ | awk ‘{print $1}’`

# 获取binlog日志文件路径

binlogdir=`$Command_mysql -e ‘show variables like “datadir”‘ | grep datadir | awk ‘{print $2}’`

# 从最近一次全备文件中获取全备终止time

time=`cat $FileDir/weeklybackup.time | awk ‘{printf “%s %s\n”,$5,$6}’`

# 通过mysqlbinlog对数据库进行差异备份

# –start-datetime 指明增量备份的起始时间,其值为全备的终止时间

/usr/local/mysql/bin/mysqlbinlog –start-datetime=”$time” $binlogdir$binlogfile > $increbackup

# 清理前30天的备份文件

find $FileDir -mtime +30 -name “*.sql” -exec rm -rf {} \;

  1. 修改备份脚本执行权限

chmod 755 /DB_Backup/Full_Backup.sh /DB_Backup/Incre_Backup.sh

制定计划任务定时执行脚本

# 执行全备脚本

00 22 * * 5 /bin/bash /DB_Backup/Full_Backup.sh

# 执行增备脚本

00 22 * * 1,2,3,4,6,7 /bin/bash /DB_Backup/Incre_Backup.sh

声明:
本站所有文章,如无特殊说明或标注,均为本站原创发布。
任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。