1 前言
公司的前辈使用AutoMySQLbackup脚本备份数据库,去官方学习一番,发现确实是个不错的东西,可以简化MySQL备份,然后自己整理出来分享。
由于是个人整理,以下不保证完全正确,所以英文好的还是建议看官方文档,本文仅当参考。当然,有指正的非常欢迎。
2 实践部分
2.1 下载并解压备份程序
wget https://svwh.dl.sourceforge.net/project/automysqlbackup/AutoMySQLBackup/AutoMySQLBackup%20VER%203.0/automysqlbackup-v3.0_rc6.tar.gztar -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.gzmysqldump: /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 -> bzip2CONFIG_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加密MySQLDumpCONFIG_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 DatabaseCONFIG_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'# 接收邮件的邮箱 (user@domain.com)#CONFIG_mail_address='root'
2.5.10 加密设置
# 使用OpenSSL加密备份CONFIG_encrypt='no'# 使用密码加密备份#CONFIG_encrypt_password='password0123'
2.5.11 其他设置
# 指定备份的本地文件,如my.cnfCONFIG_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.confchown root.root /var/backup/db* -Rfind /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/