Mysql
目前 mysqldump(22 分鐘執行時間,5 GB 轉儲),何時使用 xtrabackup?
我們使用Puppet 程式碼來部署 MariaDB。這些是備份選項。
- mysql::backup::mysqldump:實現 mysqldump 備份。
- mysql::backup::mysqlbackup:使用 Oracle MySQL
Enterprise Backup 實施備份。
- mysql::backup::xtrabackup:使用 Percona 的 XtraBackup 實現備份。
我們不擁有 MySQL Enterprise Backup 許可證。
這裡是備份腳本。目前最大的問題是,我們沒有註意到備份何時失敗。
#!/bin/bash # # MySQL Backup Script # Dumps mysql databases to a file for another backup tool to pick up. # # MySQL code: # GRANT SELECT, RELOAD, LOCK TABLES ON *.* TO 'user'@'localhost' # IDENTIFIED BY 'password'; # FLUSH PRIVILEGES; # ##### START CONFIG ################################################### USER=backup DIR=/var/lib/mysql/backup ROTATE=6 # Use a pwd file. See https://dev.mysql.com/doc/refman/5.1/en/password-security-user.html PWD_FILE=$(mktemp ${DIR}/backup.cnf.XXXX) echo " [client] password=sirugrwiuwiuwguisrkogos " >> $PWD_FILE PREFIX=mysql_backup_ ADDITIONAL_OPTIONS="--ignore-table=mysql.event" ##### STOP CONFIG #################################################### PATH=/usr/bin:/usr/sbin:/bin:/sbin set -o pipefail cleanup() { find "${DIR}/" -maxdepth 1 -type f -name "${PREFIX}*.sql*" -mtime +${ROTATE} -print0 | xargs -0 -r rm -f } mysqldump --defaults-file=${PWD_FILE} -u${USER} --opt --flush-logs --single-transaction \ ${ADDITIONAL_OPTIONS} \ --all-databases | bzcat -zc > ${DIR}/${PREFIX}`date +%Y%m%d-%H%M%S`.sql.bz2 if [ $? -eq 0 ] ; then cleanup fi rm -rf $PWD_FILE
備份時間
# time /usr/local/sbin/mysqlbackup.sh real 21m35.647s user 20m47.059s sys 0m7.843s
備份大小
# du -sh mysql_backup_20160223-123920.sql 4.9G mysql_backup_20160223-123920.sql
在我們的案例中更好用
xtrabackup
嗎?何時使用xtrabackup
?
有兩種方法可以檢測您的 mysqldump 何時失敗:您已經使用的一種:
if [ $? -eq 0 ] ; then cleanup fi
如果這種情況失敗,您可以斷定您的備份失敗……另一種模式是使用
tail -1 backup.sql
它應該告訴您“備份成功完成”所以如果只擔心是否成功,那麼你可以使用上面的方法來確定。
Xtrabackup 是物理的,而 mysqldump 是邏輯的,這主要是選擇一個而不是另一個的決定性因素。如果您需要恢復單個表/數據庫,可以使用 mysqldump 但不能使用 xtrabackup (除非您進行完全恢復)。物理備份相對較快,但也需要頻繁的恢復測試,例如熱備份不容易辨識數據損壞(我認為是這樣)。您可以考慮查看更多優點和缺點,但如果您認為這個時間太多,並且您已經確定您的恢復要求適合 Xtrabackup,那就去吧。如果您想以這種方式配置,這裡是holland-xtrabackup 設置步驟。
如果您擔心速度並且仍然需要邏輯備份,請使用mydumper。
如果您對物理備份沒問題,請使用 Xtrabackup。