1 前言

公司的前辈使用AutoMySQLbackup脚本备份数据库,去官方学习一番,发现确实是个不错的东西,可以简化MySQL备份,然后自己整理出来分享。

由于是个人整理,以下不保证完全正确,所以英文好的还是建议看官方文档,本文仅当参考。当然,有指正的非常欢迎。

2 实践部分

2.1 下载并解压备份程序

wget https://svwh.dl.sourceforge.net/project/automysqlbackup/AutoMySQLBackup/AutoMySQLBackup%20VER%203.0/automysqlbackup-v3.0_rc6.tar.gz
tar -xf automysqlbackup-v3.0_rc6.tar.gz

2.2 创建程序目录

mkdir /etc/automysqlbackup

2.3 部署自动备份软件的配置文件

cp automysqlbackup.conf /etc/automysqlbackup/
cp /etc/automysqlbackup/automysqlbackup.conf /etc/automysqlbackup/myserver.conf

2.4 部署自动备份可执行文件

cp automysqlbackup /usr/local/bin/

2.5 定义配置任务

2.5.1 配置文件位置

vim /etc/automysqlbackup/myserver.conf

2.5.2 MySQL与MySQLDump可执行程序位置(可选)

查询MySQL与MySQLDump程序路径

whereis mysql; whereis mysqldump

显示如下:

mysql: /usr/bin/mysql /usr/lib64/mysql /usr/include/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
mysqldump: /usr/bin/mysqldump /usr/share/man/man1/mysqldump.1.gz

故参数配置如下:

PATH=${PATH}:/usr/bin

注:如果使用whereis查询不到,说明没有环境变量,则需要指定程序的真实位置。

2.5.3 基本配置

# 数据库备份用户
CONFIG_mysql_dump_username='root'

# 数据库备份用户密码
CONFIG_mysql_dump_password=''

# 数据库服务器名称或IP地址
CONFIG_mysql_dump_host='localhost'

# 数据库服务器更适合人类辨识的名称(不配置则默认为CONFIG_mysql_dump_host指定值)
CONFIG_mysql_dump_host_friendly=''

# 数据库备份存放的位置 
CONFIG_backup_dir='/var/backup/db'

# 多种压缩方式
# pigz -> gzip
# pbzip2 -> bzip2
CONFIG_multicore='yes'

# 多线程(内核数量应小于内核数量,不能等于)
CONFIG_multicore_threads=2

2.5.4 配置要备份的数据库

# 配置备份的数据库,默认是所有,特定数据库请写成 ( 'DB1' 'DB2' 'DB3' ... )
CONFIG_db_names=()

# 月备份的数据库列表,为空则自动从information_schema数据库读取
CONFIG_db_month_names=()

# 排除的数据库,可使用通配符方式,如'mydb.a*'
#CONFIG_table_exclude=()

2.5.5 高级配置

# 定义每月的那一天备份,使用01到31表示,0表示关闭月备份
#CONFIG_do_monthly="01"

# 定义每周的那一天备份,使用1到7 表示,0 表示关闭周备份
CONFIG_do_weekly="5"

# 配置日备份文件保留的天数,最小单位1天(24小时)
CONFIG_rotation_daily=6

# 配置周备份文件保留的天数,最小单位1天(24小时)
CONFIG_rotation_weekly=35

# 配置月备份文件保留的天数,最小单位1天(24小时)
CONFIG_rotation_monthly=150

2.5.6 服务器连接设置

# 定义每月的那一天备份,使用01到31表示,0表示关闭月备份
#CONFIG_do_monthly="01"

# 定义每周的那一天备份,使用1到7 表示,0 表示关闭周备份
CONFIG_do_weekly="5"

# 配置日备份文件保留的天数,最小单位1天(24小时)
CONFIG_rotation_daily=6

# 配置周备份文件保留的天数,最小单位1天(24小时)
CONFIG_rotation_weekly=35

# 配置月备份文件保留的天数,最小单位1天(24小时)
CONFIG_rotation_monthly=150

2.5.7 服务器连接配置

# 数据库连接的端口
CONFIG_mysql_dump_port=3306

# 压缩服务器与MySQL数据库之间的通讯
CONFIG_mysql_dump_commcomp='no'

# 使用SSL加密MySQLDump
CONFIG_mysql_dump_usessl='yes'

# 使用Unix socket file方式连接数据库
#CONFIG_mysql_dump_socket=''

# 客户端与服务器通讯的缓冲区大小 (最大1GB)
CONFIG_mysql_dump_max_allowed_packet=''

# 使用事务保证备份一致性
#CONFIG_mysql_dump_single_transaction='no'

# http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html#option_mysqldump_master-data
#CONFIG_mysql_dump_master_data=

# 直接加载mysql.proc表的内容
CONFIG_mysql_dump_full_schema='yes'

# 文本文件中的表备份状态
CONFIG_mysql_dump_dbstatus='yes'

2.5.8 备份转储设置

# 备份中包括Create Database
CONFIG_mysql_dump_create_database='no'

# 为每个数据库分割备份目录和文件
CONFIG_mysql_dump_use_separate_dirs='yes'

# 选择压缩的类型(gzip或bzip2)
CONFIG_mysql_dump_compression='gzip'

# 将最新的附加副本存储的标准位置
#CONFIG_mysql_dump_latest='no'

# 从最新文件夹中的文件名中删除所有日期和时间信息
#CONFIG_mysql_dump_latest_clean_filenames='no'

# 使用差异备份
#CONFIG_mysql_dump_differential='no'

2.5.9 通知设置

# 配置邮件的内容
# - log   : 发送日志文件
# - files :发送日志文件和sql作为附件
# - stdout : 如果手动运行,将简单地把日志输出到屏幕
# - quiet : 只有邮件地址发生错误时才发送日志
CONFIG_mailcontent='stdout'

# 设置最大邮件大小(单位k)
#CONFIG_mail_maxattsize=4000

# 允许使用tar拆分打包
CONFIG_mail_splitandtar='yes'

# 使用uuencoded发送邮件
CONFIG_mail_use_uuencoded_p_w_uploads='no'

# 接收邮件的邮箱 ([email protected])
#CONFIG_mail_address='root'

2.5.10 加密设置

# 使用OpenSSL加密备份
CONFIG_encrypt='no'

# 使用密码加密备份
#CONFIG_encrypt_password='password0123'

2.5.11 其他设置

# 指定备份的本地文件,如my.cnf
CONFIG_backup_local_files=()

# 备份开始前运行的命令
CONFIG_prebackup="/etc/mysql-backup-pre"

# 备份结束后运行的命令
CONFIG_postbackup="/etc/mysql-backup-post"

# 配置备份的文件夹和文件的权限
umask 0077

# 显示执行状态
CONFIG_dryrun=1

2.6 调用程序以及配置

2.6.1 创建调用的计划任务

vim /etc/cron.daily/runmysqlbackup

输入如下内容:

#!/bin/sh

/usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf

chown root.root /var/backup/db* -R
find /var/backup/db* -type f -exec chmod 400 {} \;
find /var/backup/db* -type d -exec chmod 700 {} \;

2.6.2 授权计划任务脚本

chmod +x /etc/cron.daily/runmysqlbackup

2.6.3 创建备份目录

mkdir -p /var/backup/db

2.6.4 手动执行测试

automysqlbackup /etc/automysqlbackup/myserver.conf

2.6.5 确认备份

gunzip /var/backup/db/daily/mysql/daily_mysql_2017-02-28_19h27m_Tuesday.sql.gz


参阅地址:

=======================================

http://sourceforge.net/projects/automysqlbackup/