前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL备份还原——AutoMySQLBackup介绍

MySQL备份还原——AutoMySQLBackup介绍

作者头像
拓荒者
发布2019-03-11 16:00:39
5.2K0
发布2019-03-11 16:00:39
举报
文章被收录于专栏:运维经验分享

AutoMySQLBackup是一个开源的MySQL备份脚本。可以说它是一个轻量级的备份方案,AutoMySQLBackup的安装、配置非常简单、方便。AutoMySQLBackup的sourceforge上介绍有如它本身,也非常的简单:

Description

AutoMySQLBackup with a basic configuration will create Daily, Weekly and Monthly backups of one or more of your MySQL databases from one or more of your MySQL servers.

Other Features include:

- Email notification of backups (备份邮件通知)

- Backup Compression and Encryption(备份压缩与加密)

- Configurable backup rotation (配置备份保留周期)

- Incremental database backups (数据库增量备份)

下载地址

AutoMySQLBackup的下在地址为http://sourceforge.net/projects/automysqlbackup/ 。 目前最新版本为automysqlbackup-v3.0_rc6.tar.gz

安装配置

1:将下载的安装文件automysqlbackup-v3.0_rc6.tar.gz拷贝到/tmp目录下

2:将automysqlbackup-v3.0_rc6.tar.gz解压到新建的目录automysqlbackup下。如下所示,解压后总共有6个文件。

代码语言:javascript
复制
[root@DB-Server tmp]# tar -zxvf /tmp/automysqlbackup-v3.0_rc6.tar.gz  -C /tmp/automysqlbackup
代码语言:javascript
复制
automysqlbackup
代码语言:javascript
复制
automysqlbackup.conf
代码语言:javascript
复制
CHANGELOG
代码语言:javascript
复制
install.sh
代码语言:javascript
复制
README
代码语言:javascript
复制
LICENSE

automysqlbackup: AutoMySQLBackup的应用程序脚本 automysqlbackup.conf : AutoMySQLBackup的配置文件范本 CHANGELOG: AutoMySQLBackup功能添加、Bug修复历史记录 install.sh: AutoMySQLBackup的安装脚本 README: AutoMySQLBackup的声明、安装、使用说明文档

建议在安装前看一下README文件,里面有介绍如何安装、配置automysqlbackup。AutoMySQLBackup提供了自动和手动安装配置两种功能(如下所示)

clip_image001
clip_image001

自动安装配置

1:运行脚本install.sh安装配置AutoMySQLBackup

代码语言:javascript
复制
[root@DB-Server tmp]# cd automysqlbackup
代码语言:javascript
复制
[root@DB-Server automysqlbackup]# ./install.sh
代码语言:javascript
复制
### Checking archive files for existence, readability and integrity.
代码语言:javascript
复制
代码语言:javascript
复制
automysqlbackup ... exists and is readable ... md5sum okay :)
代码语言:javascript
复制
automysqlbackup.conf ... exists and is readable ... md5sum okay :)
代码语言:javascript
复制
README ... exists and is readable ... md5sum okay :)
代码语言:javascript
复制
LICENSE ... exists and is readable ... md5sum okay :)
代码语言:javascript
复制
代码语言:javascript
复制
Select the global configuration directory [/etc/automysqlbackup]:
代码语言:javascript
复制
Select directory for the executable [/usr/local/bin]: /usr/bin
代码语言:javascript
复制
### Creating global configuration directory /etc/automysqlbackup:
代码语言:javascript
复制
代码语言:javascript
复制
success
代码语言:javascript
复制
代码语言:javascript
复制
### Copying files.
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
if you are running automysqlbackup under the same user as you run this install script,
代码语言:javascript
复制
you should be able to access it by running 'automysqlbackup' from the command line.
代码语言:javascript
复制
if not, you have to check if 'echo $PATH' has /usr/bin in it
代码语言:javascript
复制
代码语言:javascript
复制
Setup Complete!
代码语言:javascript
复制
[root@DB-Server automysqlbackup]#
clip_image002
clip_image002

如下所示,你会发现install.sh脚本将automysqlbackup.conf、 LICENSE、 README三个文件拷贝到/etc/automysqlbackup/目录下,并复制了

automysqlbackup.conf文件生成了myserver.conf

[root@DB-Server ~]# cd /etc/automysqlbackup/

[root@DB-Server automysqlbackup]# ls

automysqlbackup.conf LICENSE myserver.conf README

[root@DB-Server automysqlbackup]#

2:配置自己的AutoMySQLBackup的配置文件myserver.conf

默认情况下,这些AutoMySQLBackup的参数都是注释的,你需要取消注释,给予相关参数配置信息,例如使用那个账号做备份、账号密码、

代码语言:javascript
复制
# Username to access the MySQL server e.g. dbuser
代码语言:javascript
复制
CONFIG_mysql_dump_username='root'    --备份账号
代码语言:javascript
复制
代码语言:javascript
复制
# Password to access the MySQL server e.g. password
代码语言:javascript
复制
CONFIG_mysql_dump_password='123456'
代码语言:javascript
复制
代码语言:javascript
复制
# Host name (or IP address) of MySQL server e.g localhost
代码语言:javascript
复制
CONFIG_mysql_dump_host='localhost'
代码语言:javascript
复制
代码语言:javascript
复制
# "Friendly" host name of MySQL server to be used in email log
代码语言:javascript
复制
# if unset or empty (default) will use CONFIG_mysql_dump_host instead
代码语言:javascript
复制
#CONFIG_mysql_dump_host_friendly=''
代码语言:javascript
复制
代码语言:javascript
复制
# Backup directory location e.g /backups
代码语言:javascript
复制
CONFIG_backup_dir='/u03/mysqlbackup/'
代码语言:javascript
复制
代码语言:javascript
复制
....................................................
clip_image003
clip_image003

下面列出了部分主要的参数设置,具体可以参考automysqlbackup.conf 或 myserver.conf里面的参数的描述

参数设置

参数功能

样例

CONFIG_mysql_dump_username

备份时连接数据库的账号

CONFIG_mysql_dump_username='root'

CONFIG_mysql_dump_password

备份账号的密码

CONFIG_mysql_dump_password='******'

CONFIG_mysql_dump_host

备份服务器名称或IP,一般用'localhost'

CONFIG_mysql_dump_host='localhost'

CONFIG_mysql_dump_host_friendly

设置服务器别名,如果不设置或为空,则使用CONFIG_mysql_dump_host替换

CONFIG_backup_dir

数据库备份路径

CONFIG_backup_dir='/mysqldata/db_backup/mysqlbackup'

CONFIG_multicore

压缩数据时是否启用多核,具体参考文档解释

CONFIG_multicore_threads

多线程数量

CONFIG_db_names

要备份的数据库

CONFIG_db_month_names

要做月备份的数据库

CONFIG_table_exclude

备份时要排除那些表

CONFIG_db_exclude

备份时要排除那些db

CONFIG_do_monthly

在每个月的第几天做月备份

CONFIG_do_weekly

星期几做周备份

CONFIG_rotation_daily

日备的保留周期

CONFIG_rotation_weekly

周备的保留周期

CONFIG_rotation_monthly

月被的保留周期

CONFIG_mysql_dump_port

MySQL的端口号

CONFIG_mysql_dump_compression

备份文件采用的压缩格式

CONFIG_mysql_dump_compression='gzip'

CONFIG_mysql_dump_differential

是否做差异备份

CONFIG_mysql_dump_differential='yes'

CONFIG_encrypt

备份是否加密

CONFIG_encrypt_password

备份加密的密码

README里面关于配置参数的一个参考样本,一般参数设置应该根据具体情况也业务需求来合理设定。

代码语言:javascript
复制
Default configuration
代码语言:javascript
复制
CONFIG_configfile="/etc/automysqlbackup/automysqlbackup.conf"
代码语言:javascript
复制
CONFIG_backup_dir='/var/backup/db'
代码语言:javascript
复制
CONFIG_do_monthly="01"
代码语言:javascript
复制
CONFIG_do_weekly="5"
代码语言:javascript
复制
CONFIG_rotation_daily=6
代码语言:javascript
复制
CONFIG_rotation_weekly=35
代码语言:javascript
复制
CONFIG_rotation_monthly=150
代码语言:javascript
复制
CONFIG_mysql_dump_usessl='yes'
代码语言:javascript
复制
CONFIG_mysql_dump_username='root'
代码语言:javascript
复制
CONFIG_mysql_dump_password=''
代码语言:javascript
复制
CONFIG_mysql_dump_host='localhost'
代码语言:javascript
复制
CONFIG_mysql_dump_socket=''
代码语言:javascript
复制
CONFIG_mysql_dump_create_database='no'
代码语言:javascript
复制
CONFIG_mysql_dump_use_separate_dirs='yes'
代码语言:javascript
复制
CONFIG_mysql_dump_compression='gzip'
代码语言:javascript
复制
CONFIG_mysql_dump_commcomp='no'
代码语言:javascript
复制
CONFIG_mysql_dump_latest='no'
代码语言:javascript
复制
CONFIG_mysql_dump_max_allowed_packet=''
代码语言:javascript
复制
CONFIG_db_names=()
代码语言:javascript
复制
CONFIG_db_month_names=()
代码语言:javascript
复制
CONFIG_db_exclude=( 'information_schema' )
代码语言:javascript
复制
CONFIG_mailcontent='log'
代码语言:javascript
复制
CONFIG_mail_maxattsize=4000
代码语言:javascript
复制
CONFIG_mail_address='root'
代码语言:javascript
复制
CONFIG_encrypt='no'
代码语言:javascript
复制
CONFIG_encrypt_password='password0123'

3:运行备份脚本并检查备份

代码语言:javascript
复制
[root@DB-Server ~]# /usr/bin/automysqlbackup /etc/automysqlbackup/myserver.conf
代码语言:javascript
复制
Parsed config file "/etc/automysqlbackup/automysqlbackup.conf"
代码语言:javascript
复制
代码语言:javascript
复制
# Checking for permissions to write to folders:
代码语言:javascript
复制
base folder /u03 ... exists ... ok.
代码语言:javascript
复制
backup folder /u03/mysqlbackup/ ... exists ... writable? yes. Proceeding.
代码语言:javascript
复制
checking directory "/u03/mysqlbackup//daily" ... exists.
代码语言:javascript
复制
checking directory "/u03/mysqlbackup//weekly" ... exists.
代码语言:javascript
复制
checking directory "/u03/mysqlbackup//monthly" ... exists.
代码语言:javascript
复制
checking directory "/u03/mysqlbackup//latest" ... exists.
代码语言:javascript
复制
checking directory "/u03/mysqlbackup//tmp" ... exists.
代码语言:javascript
复制
checking directory "/u03/mysqlbackup//fullschema" ... exists.
代码语言:javascript
复制
checking directory "/u03/mysqlbackup//status" ... exists.
代码语言:javascript
复制
代码语言:javascript
复制
# Testing for installed programs
代码语言:javascript
复制
mysql ... found.
代码语言:javascript
复制
mysqldump ... found.
代码语言:javascript
复制
gzip ... found.
代码语言:javascript
复制
代码语言:javascript
复制
# Parsing databases ... done.
代码语言:javascript
复制
======================================================================
代码语言:javascript
复制
AutoMySQLBackup version 3.0
代码语言:javascript
复制
http://sourceforge.net/projects/automysqlbackup/
代码语言:javascript
复制
代码语言:javascript
复制
Backup of Database Server - localhost
代码语言:javascript
复制
Databases - mysql,performance_schema,test
代码语言:javascript
复制
Databases (monthly) - mysql,performance_schema,test
代码语言:javascript
复制
======================================================================
代码语言:javascript
复制
======================================================================
代码语言:javascript
复制
Dump full schema.
代码语言:javascript
复制
代码语言:javascript
复制
Rotating 4 month backups for 
代码语言:javascript
复制
代码语言:javascript
复制
======================================================================
代码语言:javascript
复制
代码语言:javascript
复制
======================================================================
代码语言:javascript
复制
Dump status.
代码语言:javascript
复制
代码语言:javascript
复制
Rotating 4 month backups for 
代码语言:javascript
复制
代码语言:javascript
复制
======================================================================
代码语言:javascript
复制
代码语言:javascript
复制
Backup Start Time Sat Jul 11 22:16:32 CST 2015
代码语言:javascript
复制
======================================================================
代码语言:javascript
复制
Daily Backup ...
代码语言:javascript
复制
代码语言:javascript
复制
Daily Backup of Database ( mysql )
代码语言:javascript
复制
Rotating 6 day backups for mysql
代码语言:javascript
复制
----------------------------------------------------------------------
代码语言:javascript
复制
Daily Backup of Database ( performance_schema )
代码语言:javascript
复制
Rotating 6 day backups for performance_schema
代码语言:javascript
复制
----------------------------------------------------------------------
代码语言:javascript
复制
Daily Backup of Database ( test )
代码语言:javascript
复制
Rotating 6 day backups for test
代码语言:javascript
复制
----------------------------------------------------------------------
代码语言:javascript
复制
代码语言:javascript
复制
Backup End Time Sat Jul 11 22:16:33 CST 2015
代码语言:javascript
复制
======================================================================
代码语言:javascript
复制
Total disk space used for backup storage...
代码语言:javascript
复制
Size - Location
代码语言:javascript
复制
750k /u03/mysqlbackup/
代码语言:javascript
复制
代码语言:javascript
复制
======================================================================
代码语言:javascript
复制
代码语言:javascript
复制
###### WARNING ######
代码语言:javascript
复制
Errors reported during AutoMySQLBackup execution.. Backup failed
代码语言:javascript
复制
Error log below..
代码语言:javascript
复制
Warning: Using a password on the command line interface can be insecure.
代码语言:javascript
复制
Warning: Using a password on the command line interface can be insecure.
代码语言:javascript
复制
Warning: Using a password on the command line interface can be insecure.
代码语言:javascript
复制
Warning: Using a password on the command line interface can be insecure.
代码语言:javascript
复制
Warning: Using a password on the command line interface can be insecure.
代码语言:javascript
复制
Warning: Using a password on the command line interface can be insecure.

检查备份目录,你会发现生成了daily、fullschema、 latest、 monthly、 status、 tmp、 weekly等目录,刚刚备份的文件位于daily目录下,如下所示

clip_image004
clip_image004

手动安装配置

AutoMySQLBackup也可以手动配置,在文档README里面有介绍如何手工配置,也非常的简单

1. Create the /etc/automysqlbackup directory.

2. Copy in the automysqlbackup.conf file.

3. Copy the automysqlbackup file to /usr/local/bin and make executable.

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

5. Edit the /etc/automysqlbackup/myserver.conf file to customise your settings.

6. See usage section.

AutoMySQLBackup的使用

AutoMySQLBackup使用mutt发送邮件,它是linux下的一个email程序,由于我们一般都使用sendmail发送邮件,所以一般在配置文件里面不启用改参数。所以使用AutoMySQLBackup时,一般自己写shell脚本,调用AutoMySQLBackup来备份数据,如下所示automysqlbackup.sh

代码语言:javascript
复制
#REM backup script
代码语言:javascript
复制
#REM ----------------------------------------
代码语言:javascript
复制
#REM  Backup script for EEL Mysql
代码语言:javascript
复制
#REM  Tommy Wang -  08-14-2012
代码语言:javascript
复制
#REM  Kerry Kong -  07-12-2015 Modify this Script
代码语言:javascript
复制
#REM ----------------------------------------
代码语言:javascript
复制
#REM - USER DEFINED VARIABLES -
代码语言:javascript
复制
export DATESTAMP=`date '+%F'`
代码语言:javascript
复制
代码语言:javascript
复制
#REM - Logfiles -
代码语言:javascript
复制
export BACKUP_FULL_LOG=/mysqldata/db_backup/logs/auto_backup_$DATESTAMP.log
代码语言:javascript
复制
代码语言:javascript
复制
/usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf >>$BACKUP_FULL_LOG
代码语言:javascript
复制
chown mysql.mysql /mysqldata/db_backup -R >>$BACKUP_FULL_LOG
代码语言:javascript
复制
find  /mysqldata/db_backup -type f -exec chmod 400 {} \; >>$BACKUP_FULL_LOG
代码语言:javascript
复制
find  /mysqldata/db_backup -type d -exec chmod 700 {} \; >>$BACKUP_FULL_LOG
代码语言:javascript
复制
代码语言:javascript
复制
EMAILTMP=/mysqldata/db_backup/logs/auto_backup_db_$DATESTAMP.TMP
代码语言:javascript
复制
代码语言:javascript
复制
##################################### config email parameters ####################################
代码语言:javascript
复制
echo 'Content-Type: text/html' > $EMAILTMP
代码语言:javascript
复制
echo 'To: dba@xxxx.com' >> $EMAILTMP
代码语言:javascript
复制
echo 'Subject: Backup Status - The server xxxx  MYSQL (dump backup)' >> $EMAILTMP
代码语言:javascript
复制
echo '<pre style="font-family: courier; font-size: 9pt">' >> $EMAILTMP
代码语言:javascript
复制
#################################################################################################
代码语言:javascript
复制
代码语言:javascript
复制
echo "==============================================================================" >> $EMAILTMP
代码语言:javascript
复制
echo "======================== Daily Backup for Mysql Database =====================" >> $EMAILTMP
代码语言:javascript
复制
echo "==============================================================================" >> $EMAILTMP
代码语言:javascript
复制
echo " " >> $EMAILTMP
代码语言:javascript
复制
代码语言:javascript
复制
cat $BACKUP_FULL_LOG >> $EMAILTMP 2>&1
代码语言:javascript
复制
echo " " >> $EMAILTMP
代码语言:javascript
复制
echo "================================== End of Backup =============================" >> $EMAILTMP
代码语言:javascript
复制
echo "==============================================================================" >> $EMAILTMP
代码语言:javascript
复制
代码语言:javascript
复制
/usr/sbin/sendmail -t -f "BackupAdmin" < $EMAILTMP
代码语言:javascript
复制
rm $EMAILTMP
代码语言:javascript
复制
代码语言:javascript
复制
chown mysql.mysql $BACKUP_FULL_LOG

使用AutoMySQLBackup发送邮件时,会有下面告警提示,这个是因为我们将连接数据库的账号密码配置在配置文件中,这样非常不安全。如何去掉这个告警提示呢?AutoMysqlBackup: Warning: Using a password on the command line interface can be insecure. 这篇博客里面介绍了一种方法

clip_image005
clip_image005

找到automysqlbackup文件,找到removeIO,然后在其下面加上下面这段脚本后,你就不会收到告警信息。

[root@getlnx20 ~]# cd /usr/local/bin

[root@getlnx20 bin]# vi automysqlbackup

代码语言:javascript
复制
removeIO
代码语言:javascript
复制
代码语言:javascript
复制
Add this after removeIO:
代码语言:javascript
复制
代码语言:javascript
复制
# Remove annoying warning message since MySQL 5.6
代码语言:javascript
复制
代码语言:javascript
复制
if [[ -s "$log_errfile" ]]; then
代码语言:javascript
复制
代码语言:javascript
复制
sedtmpfile="/tmp/$(basename $0).$$.tmp"
代码语言:javascript
复制
代码语言:javascript
复制
grep -v "Warning: Using a password on the command line interface can be insecure." "$log_errfile" > $sedtmpfile
代码语言:javascript
复制
代码语言:javascript
复制
mv $sedtmpfile $log_errfile
代码语言:javascript
复制
代码语言:javascript
复制
fi

关于AutoMySQLBackup的介绍到这里,其实AutoMySQLBackup还有很多细节地方值得我们去学习、研究。限于篇幅,不在此一一赘述。

作者:潇湘隐者

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/03/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档