1 前言
公司的前辈使用AutoMySQLbackup脚本备份数据库,去官方学习一番,发现确实是个不错的东西,可以简化MySQL备份,然后自己整理出来分享。
由于是个人整理,以下不保证完全正确,所以英文好的还是建议看官方文档,本文仅当参考。当然,有指正的非常欢迎。
2 实践部分
2.1 下载并解压备份程序
1
2
|
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 创建程序目录
1
|
mkdir
/etc/automysqlbackup
|
2.3 部署自动备份软件的配置文件
1
2
|
cp
automysqlbackup.conf
/etc/automysqlbackup/
cp
/etc/automysqlbackup/automysqlbackup
.conf
/etc/automysqlbackup/myserver
.conf
|
2.4 部署自动备份可执行文件
1
|
cp
automysqlbackup
/usr/local/bin/
|
2.5 定义配置任务
2.5.1 配置文件位置
1
|
vim
/etc/automysqlbackup/myserver
.conf
|
2.5.2 MySQL与MySQLDump可执行程序位置(可选)
查询MySQL与MySQLDump程序路径
1
|
whereis
mysql;
whereis
mysqldump
|
显示如下:
1
2
|
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
|
故参数配置如下:
1
|
PATH=${PATH}:
/usr/bin
|
注:如果使用whereis查询不到,说明没有环境变量,则需要指定程序的真实位置。
2.5.3 基本配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# 数据库备份用户
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 配置要备份的数据库
1
2
3
4
5
6
7
8
|
# 配置备份的数据库,默认是所有,特定数据库请写成 ( 'DB1' 'DB2' 'DB3' ... )
CONFIG_db_names=()
# 月备份的数据库列表,为空则自动从information_schema数据库读取
CONFIG_db_month_names=()
# 排除的数据库,可使用通配符方式,如'mydb.a*'
#CONFIG_table_exclude=()
|
2.5.5 高级配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 定义每月的那一天备份,使用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 服务器连接设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 定义每月的那一天备份,使用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 服务器连接配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# 数据库连接的端口
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 备份转储设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 备份中包括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 通知设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# 配置邮件的内容
# - log : 发送日志文件
# - files :发送日志文件和sql作为附件
# - stdout : 如果手动运行,将简单地把日志输出到屏幕
# - quiet : 只有邮件地址发生错误时才发送日志
CONFIG_mailcontent=
'stdout'
# 设置最大邮件大小(单位k)
#CONFIG_mail_maxattsize=4000
# 允许使用tar拆分打包
CONFIG_mail_splitandtar=
'yes'
# 使用uuencoded发送邮件
CONFIG_mail_use_uuencoded_attachments=
'no'
# 接收邮件的邮箱 (user@domain.com)
#CONFIG_mail_address='root'
|
2.5.10 加密设置
1
2
3
4
5
|
# 使用OpenSSL加密备份
CONFIG_encrypt=
'no'
# 使用密码加密备份
#CONFIG_encrypt_password='password0123'
|
2.5.11 其他设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 指定备份的本地文件,如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 创建调用的计划任务
1
|
vim
/etc/cron
.daily
/runmysqlbackup
|
输入如下内容:
1
2
3
4
5
6
7
|
#!/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 授权计划任务脚本
1
|
chmod
+x
/etc/cron
.daily
/runmysqlbackup
|
2.6.3 创建备份目录
1
|
mkdir
-p
/var/backup/db
|
2.6.4 手动执行测试
1
|
automysqlbackup
/etc/automysqlbackup/myserver
.conf
|
2.6.5 确认备份
1
|
gunzip
/var/backup/db/daily/mysql/daily_mysql_2017-02-28_19h27m_Tuesday
.sql.gz
|
本文转自 tanzhenchao 51CTO博客,原文链接:http://blog.51cto.com/cmdschool/1902311,如需转载请自行联系原作者