Mysql

目前 mysqldump(22 分鐘執行時間,5 GB 轉儲),何時使用 xtrabackup?

  • February 25, 2016

我們使用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。

引用自:https://dba.stackexchange.com/questions/130309