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/