mysql數據庫現在應用越來(lái)越廣了,所以mysql數據庫的數據也是一個(gè)企業(yè)中相當重要的,對于mysql的備份與恢復就成為了一項很關(guān)鍵的任務(wù)。蚊子再一次mysql經(jīng)銷(xiāo)商過(guò)來(lái)做售前咨詢(xún)的時(shí)候認識了Zmanda這款軟件,這里要介紹的是ZRM for MySQL,這款軟件業(yè)分為商業(yè)版和free版,free的版本是ZRM for MySQL Community Edition這個(gè),下載地址http://www.zmanda.com/download-zrm.php。
這款軟件的主要功能包括:
根據需要設定備份計劃
從ZRM server集中的備份管理
獲得mysql數據庫備份的報告
在本地備份數據庫同時(shí)也在遠程服務(wù)器上備份
可以直接把備份存儲在NAS/SAN的存儲上
下面的圖顯示了在本機運行的ZRM for MySQL備份兩臺mysql-server上多個(gè)mysql數據庫
備份的功能
ZRM for MySQL可以備份被mysql服務(wù)器管理的多個(gè)數據庫
可以備份多臺mysql服務(wù)器上的多個(gè)數據庫
可以備份單個(gè)數據庫中的表
可以對數據庫進(jìn)行熱備
根據MySQL表使用的不同的存儲引擎支持多種不同的備份方式
具有兩種級別的備份:全備份和對數據庫的增量備份
可以使用mysqldump,mysqlhotcopy,snapshots(Linux LVM/Solaris ZFS)和MySQL replication作為不同的備份方式
它可以創(chuàng )建保持一致的數據庫備份而不管數據庫表使用的哪種存儲引擎
它支持本機ZRM for MySQL端和遠端MySQL服務(wù)器之間的SSL認證連接,從而允許通過(guò)網(wǎng)絡(luò )或穿過(guò)防火墻進(jìn)行安全的備份。
它還能夠驗證備份數據鏡像
使用標準的工具如gzip,GPG等可以對備份鏡像進(jìn)行壓縮或者加密
系統管理員可以終止備份任務(wù)
把snapshots當做備份鏡像來(lái)看待,并在之后把這種備份轉化成真實(shí)的備份
恢復的功能
ZRM for MySQL使得恢復備份的數據變得很容易
它支持使用備份的檢索,這個(gè)檢索存儲了每個(gè)備份運行的信息
它還有一個(gè)reporting工具用來(lái)瀏覽備份的索引
它還可以恢復全備份和增量備份
它選擇做增量恢復是根據binary日志的位置或者時(shí)間點(diǎn)。這個(gè)允許回復數據庫操作失誤
這個(gè)點(diǎn)可以是一個(gè)時(shí)間點(diǎn)或者數據庫binary日志中的一個(gè)點(diǎn)
ZRM for MySQL提供了一個(gè)很容易的方法來(lái)慮進(jìn)/濾出binary日志中的數據庫事件
這個(gè)可以幫助決定哪些被恢復,哪些不被恢復
根據你所做的備份的類(lèi)型,可以使用備份在本機恢復或者在不同的機器上進(jìn)行恢復
報告和計劃任務(wù)能力
ZRM for MySQL可以立即執行備份計劃或者按天/按周/按月做備份計劃任務(wù)
它可以自動(dòng)生成備份報告
它具有預先設定的備份報告也有用戶(hù)自定義的備份報告
它可以報告任何備份的統計或者這些統計的合并
它支持HTML或者Text格式的報告
它可以發(fā)送email告知備份的運行狀態(tài)
它還可以通過(guò)RSS feed的方式提供備份報告
插件
ZRM for MySQL提供了一套plugins擴展
Plugins允許管理員根據自己的環(huán)境調整備份進(jìn)程
它提供了模板使得創(chuàng )建plugins更容易
預先日程plugin
預先備份plugin
在備份之后plugin
拷貝plugin
binary日志解析plugin
快照plugin
ZRM for MySQL套件是使用perl寫(xiě)的,所以使用環(huán)境必須支持perl,這個(gè)套件支持MySQL的版本有4.0.x(4.0.24或以上版本),4.1.x,5.0.x和5.1.x
在安裝ZRM for MySQL時(shí)首先需要檢查下列事項:
1,MySQL的版本是否是被ZRM for MySQL支持的
2,確認ZRM服務(wù)器和mysql服務(wù)器上存在mysql用戶(hù)和組。同時(shí)MySQL服務(wù)進(jìn)程是使用相同的用戶(hù)和組啟動(dòng)的
3,在MySQL服務(wù)器和ZRM服務(wù)器上的mysql用戶(hù)的uid和gid要相同
4,ZRM for MySQL需要用到MySql客戶(hù)端的命令列在了下面,這些命令需要安裝在ZRM for MySQL運行的服務(wù)器上
5,這些命令被ZRM服務(wù)器需要,盡管ZRM for MySQL是備份遠程的mysql服務(wù)器
mysqladmin
mysqlhotcopy
mysqldump
mysqlbinlog
mysql
6,MySQL ZRM必須的perl模塊
perl-DBI
MySQL-perl-DBD
perl-XML-Parser
以上基本準備完畢就可以安裝ZRM for MySQL了,安裝方法超級簡(jiǎn)單,下載完rpm包之后直接用
| rpm -ivh MySQL-zrm-2.1-1.noarch.rpm |
安裝即可,如果過(guò)程中有報錯,請查看相應提示。
包安裝好后會(huì )在本機的/etc目錄下生成mysql-zrm目錄,這下面就保存著(zhù)zrm的配置文件
我的環(huán)境vmware6.0,centos5.3,mysql5.1.24,因為是本機測試,我就直接使用mysql的root用戶(hù),備份需要的數據300MB左右。下面看我的配置
1,編輯/etc/mysql-zrm/mysql-zrm.conf,請確保這個(gè)文件的權限,因為這個(gè)文件保存了數據庫用戶(hù)名密碼
| # Backup level. It can be full or incremental # Use 0 for full and 1 for incremental backups # This parameter is optional and default value is full backup. # backup-level=0 //我們進(jìn)行全備份# Backup method # Values can be "raw" or "logical". Logical backup are backups using # mysqldump(1) tool # This parameter is optional and default value is "raw". # backup-mode=logical //備份方式使用logical
# Specifies the type of backup # Directory to which backups are done. All backups are stored under this # Specifies how long the backup should be retained. The value can be # This parameter should be set to 1 if backups should be compressed. If this # This specifies the program to be used for compression. The "compression" # Databases/Tables in the backup set # This parameter should be set to 1 if all databases are part of this backup set # List of databases that are part of this backup set. Multiple database # List of specific tables that are part of this backup set. This parameter # # MySQL database user used for backup and recovery of the backup set. # MySQL database user password. #Name of Socket file that can be used for connecting to MySQL # Directory where MySQL commands can be found. The parameter is optional. # Directory where MySQL binary logs can be found. The parameter is optional. |
以上更改做完后保存退出,接下來(lái)就來(lái)進(jìn)行備份等相應工作
現在來(lái)執行mysql備份操作
| mysql-zrm-scheduler --now --backup-set dailyrun |
可以看到如下返回結果
| schedule:INFO: ZRM for MySQL Community Edition - version 2.1 Logging to /var/log/mysql-zrm/mysql-zrm-scheduler.log backup:INFO: ZRM for MySQL Community Edition - version 2.1 dailyrun:backup:INFO: START OF BACKUP dailyrun:backup:INFO: PHASE START: Initialization dailyrun:backup:INFO: The quick backup-type is supported only for snapshot backups. Setting backup-type to 'regular' dailyrun:backup:INFO: backup-set=dailyrun dailyrun:backup:INFO: backup-date=20090728191102 dailyrun:backup:INFO: mysql-server-os=Linux/Unix dailyrun:backup:INFO: backup-type=regular dailyrun:backup:INFO: host=localhost dailyrun:backup:INFO: backup-date-epoch=1248779462 dailyrun:backup:INFO: retention-policy=10D dailyrun:backup:INFO: mysql-zrm-version=ZRM for MySQL Community Edition - version 2.1 dailyrun:backup:INFO: mysql-version=5.1.30-log dailyrun:backup:INFO: backup-directory=/data/backup/daily/dailyrun/20090728191102 dailyrun:backup:INFO: backup-level=0 dailyrun:backup:INFO: backup-mode=logical dailyrun:backup:INFO: PHASE END: Initialization dailyrun:backup:INFO: PHASE START: Running pre backup plugin dailyrun:backup:INFO: PHASE END: Running pre backup plugin dailyrun:backup:INFO: PHASE START: Flushing logs dailyrun:backup:INFO: PHASE END: Flushing logs dailyrun:backup:INFO: PHASE START: Creating logical backup dailyrun:backup:INFO: logical-databases=SNS dailyrun:backup:INFO: PHASE END: Creating logical backup dailyrun:backup:INFO: PHASE START: Calculating backup size & checksums dailyrun:backup:INFO: next-binlog=mysql-bin.000041 dailyrun:backup:INFO: last-backup=/data/backup/daily/dailyrun/20090726230115 dailyrun:backup:INFO: backup-size=346.16 MB dailyrun:backup:INFO: PHASE END: Calculating backup size & checksums dailyrun:backup:INFO: PHASE START: Compression/Encryption dailyrun:backup:INFO: compress=/usr/bin/gzip dailyrun:backup:INFO: backup-size-compressed=11.49 MB dailyrun:backup:INFO: PHASE END: Compression/Encryption dailyrun:backup:INFO: read-locks-time=00:00:40 dailyrun:backup:INFO: flush-logs-time=00:00:00 dailyrun:backup:INFO: compress-encrypt-time=00:27:20 dailyrun:backup:INFO: backup-time=00:00:58 dailyrun:backup:INFO: backup-status=Backup succeeded dailyrun:backup:INFO: Backup succeeded dailyrun:backup:INFO: PHASE START: Running post backup plugin dailyrun:backup:INFO: PHASE END: Running post backup plugin dailyrun:backup:INFO: PHASE START: Cleanup dailyrun:backup:INFO: PHASE END: Cleanup dailyrun:backup:INFO: END OF BACKUP /usr/bin/mysql-zrm started successfully |
這里我們運行了一個(gè)即時(shí)的備份,使用這個(gè)命令還可以制作備份計劃任務(wù),如
| # mysql-zrm-scheduler --add --interval weekly --start-time 00:00 --day-of-week 0 schedule:INFO: ZRM for MySQL Community Edition - version 2.1 Logging to /var/log/mysql-zrm/mysql-zrm-scheduler.log DONE |
通過(guò)這個(gè)命令我們建立了一個(gè)每周的周日的午夜0點(diǎn)執行的計劃,使用下面的命令我們可以查詢(xún)我們創(chuàng )建的備份計劃
| #mysql-zrm-scheduler --query schedule:INFO: ZRM for MySQL Community Edition - version 2.1 Logging to /var/log/mysql-zrm/mysql-zrm-scheduler.log 0 0 * * 0 /usr/bin/zrm-pre-scheduler --action backup --backup-set BackupSet1 --backup-level 0 --interval weekly |
接下來(lái)我們查看一下備份的報告
| # mysql-zrm-reporter --where backup-set=dailyrun backup-status-info
REPORT TYPE : backup-status-info backup_set backup_date backup_level backup_status backup_type comment |
從這個(gè)報告中我們可以看到備份的名字,備份時(shí)間,備份級別,備份的狀態(tài),再來(lái)看下面一個(gè)報告
| # mysql-zrm-reporter --where backup-set=dailyrun --show backup-performance-info
REPORT TYPE : backup-performance-info backup_set backup_date backup_level backup_size backup_size_compressed backup_time backup_type compress_encrypt_time |
在這份報告中我們能看到備份的大小,壓縮后的大小,備份所用時(shí)常等等
下面我們來(lái)做一下恢復操作,首先進(jìn)入到數據庫,然后刪除SNS這個(gè)庫
| mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | HAtest | | SNS | | ldirectordb | | mysql | | test | | wordpress | +--------------------+ 7 rows in set (0.18 sec)
mysql> drop database SNS; mysql> show databases; |
現在可以看到SNS庫已經(jīng)被蚊子我刪掉了,下面我們就來(lái)恢復,首先來(lái)決定一下用哪個(gè)備份來(lái)恢復
| # mysql-zrm-reporter --show restore-info --where backup-set=dailyrun
REPORT TYPE : restore-info backup_set backup_date backup_level backup_directory backup_status comment |
這個(gè)就是我們剛才備份的,下面來(lái)從這個(gè)恢復我們剛剛刪除的庫
| # mysql-zrm --action restore --backup-set dailyrun --source-directory /data/backup/daily/dailyrun/20090728191102/ restore:INFO: ZRM for MySQL Community Edition - version 2.1 dailyrun:restore:INFO: The quick backup-type is supported only for snapshot backups. Setting backup-type to 'regular' dailyrun:restore:INFO: Restored database(s) from logical backup: SNS dailyrun:restore:INFO: Restore done in 217 seconds. |
恢復完畢再來(lái)看下數據庫中是否有了這個(gè)庫了
| mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | HAtest | | SNS | | ldirectordb | | mysql | | test | | wordpress | +--------------------+ 7 rows in set (0.08 sec)
mysql> use SNS +-------------------------------+ |
到此,這一篇的ZRM for mysql蚊子就介紹到這里,這個(gè)軟件功能還是很強大的,蚊子會(huì )在后續繼續深入的研究
聯(lián)系客服