程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL備份還原——AutoMySQLBackup介紹,mysql數據庫備份還原

MySQL備份還原——AutoMySQLBackup介紹,mysql數據庫備份還原

編輯:MySQL綜合教程

MySQL備份還原——AutoMySQLBackup介紹,mysql數據庫備份還原


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個文件。

[root@DB-Server tmp]# tar -zxvf /tmp/automysqlbackup-v3.0_rc6.tar.gz  -C /tmp/automysqlbackup
automysqlbackup
automysqlbackup.conf
CHANGELOG
install.sh
README
LICENSE

automysqlbackup: AutoMySQLBackup的應用程序腳本

automysqlbackup.conf : AutoMySQLBackup的配置文件范本

CHANGELOG: AutoMySQLBackup功能添加、Bug修復歷史記錄

install.sh: AutoMySQLBackup的安裝腳本

README: AutoMySQLBackup的聲明、安裝、使用說明文檔

建議在安裝前看一下README文件,裡面有介紹如何安裝、配置automysqlbackup。AutoMySQLBackup提供了自動和手動安裝配置兩種功能(如下所示)

 

自動安裝配置

 

1:運行腳本install.sh安裝配置AutoMySQLBackup

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

如下所示,你會發現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的參數都是注釋的,你需要取消注釋,給予相關參數配置信息,例如使用那個賬號做備份、賬號密碼、

# Username to access the MySQL server e.g. dbuser
CONFIG_mysql_dump_username='root'    --備份賬號
 
# Password to access the MySQL server e.g. password
CONFIG_mysql_dump_password='123456'
 
# Host name (or IP address) of MySQL server e.g localhost
CONFIG_mysql_dump_host='localhost'
 
# "Friendly" host name of MySQL server to be used in email log
# if unset or empty (default) will use CONFIG_mysql_dump_host instead
#CONFIG_mysql_dump_host_friendly=''
 
# Backup directory location e.g /backups
CONFIG_backup_dir='/u03/mysqlbackup/'
 
....................................................

下面列出了部分主要的參數設置,具體可以參考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裡面關於配置參數的一個參考樣本,一般參數設置應該根據具體情況也業務需求來合理設定。

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

3:運行備份腳本並檢查備份

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

檢查備份目錄,你會發現生成了daily、fullschema、 latest、 monthly、 status、 tmp、 weekly等目錄,剛剛備份的文件位於daily目錄下,如下所示

 

手動安裝配置

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

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

使用AutoMySQLBackup發送郵件時,會有下面告警提示,這個是因為我們將連接數據庫的賬號密碼配置在配置文件中,這樣非常不安全。如何去掉這個告警提示呢? AutoMysqlBackup: Warning: Using a password on the command line interface can be insecure. 這篇博客裡面介紹了一種方法

找到automysqlbackup文件,找到removeIO,然後在其下面加上下面這段腳本後,你就不會收到告警信息。

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

[root@getlnx20 bin]# vi automysqlbackup

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

關於AutoMySQLBackup的介紹到這裡,其實AutoMySQLBackup還有很多細節地方值得我們去學習、研究。限於篇幅,不在此一一贅述。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved