mysqlDatabase Backup與恢複

來源:互聯網
上載者:User

標籤:sql   記錄檔   物理   pass   支援   oca   backup   事物   passwd   

Database Backup方式
熱備份:不影響業務的正常讀寫溫備份:對錶加鎖,只允許對資料庫進行讀操作冷備份:業務暫停物理備份:備份mysql相關的資料檔案邏輯備份:將資料從mysql中匯出來,一般是一個sql檔案(無索引資料)全備份:完全備份增量備份:針對上一次備份進行疊加差異備份:針對上一次完全備份,選擇差異進行備份
使用mysqldump備份

邏輯備份、單進程(速度慢)、鎖表(一般在從庫進行備份);
可以使用mysqldumper工具,進行多進程備份。

備份執行個體:
# mysqldump --flush-logs cacti plugin_thold_contacts plugin_thold_log plugin_thold_template_contact plugin_thold_threshold_contact thold_data thold_template >cacti_thold.sql           //cacti庫多表備份# mysqldump -h rds.amazonaws.com -u root -p production_sts pubkey_change_logs --where="created<‘2016-05-04‘" > pubkey_change_logs_0312to0503.sql        //指定備份部分內容(歸檔時使用)# mysqldump -u root -p -d --databases treasure treasure_admin treasure_logs treasure_sts >duobao.sql      //多庫備份,及只備份表結構,不備份資料-d# mysqldump  -u root -pxxxx -B ehr --single-transaction --master-data=2 --routines |/usr/bin/bzip2 > /data1/mysql_backup/ehr-db01/ehr_inc.sql.bz        //線上使用的大庫備份
恢複方法:
mysql命令直接匯入、source命令、load命令
使用xtrabackup進行增量備份

熱備份、物理備份,安裝及介紹:https://www.percona.com/doc/percona-server/LATEST/index.html
安裝後含有xtrabackup和innobackup兩個工具,此處使用用後者;
需要掃描mysql相關資料檔案、設定檔,不支援遠程備份(如:雲資料庫執行個體)。

備份執行個體:
# innobackupex --user=root -pxxxxx  /data/backup/innodbbackup/     //最簡單的完全備份# innobackupex --user=root -pxxxxx --incremental --incremental_basedir=/data/backup/innodbbackup/2018-02-07_17-08-31/ /data/backup/innodbbackup/      //增量備份,需要指定上次的備份位置(lsn資訊)# innobackupex -u root -pxxxxx --no-timestamp --extra-lsndir=/data1/innobackup/0207/lsn_17/ --stream=tar /data1/innobackup/ |gzip  > /data1/innobackup/0207-1737.tgz    //打包壓縮# innobackupex --user=root -pxxxxx  /data/backup/innodbbackup/ --stream=tar |gzip|sshpass -p "sshpass" ssh -p 18122 [email protected] "cat - > /data1/xtrabackup/zabbix/0207_1737.tgz"      //備份並發送到遠程伺服器
資料恢複:

1.伺服器準備:安裝同版本mysql,初始化後,關閉mysql服務,清空mysql的資料目錄
2.擷取備份:也可以直接在備份的時候遠程儲存
3.恢複命令:

# tar  -i  -xf   0207_1737.tgz        //如果打包了,先解包記錄檔恢複(完全備份):完成事務、同步資料等操作,使資料檔案達到一致性# innobackupex --defaults-file=/usr/local/mysql/my.cnf  --apply-log --redo-only  --u root  -pxxxx  /tmp/mysql/fullbackup增量記錄檔恢複(如果是多個增量,按順序依次恢複),需要指定lsn# innobackupex --defaults-file=/usr/local/mysql/my.cnf  --apply-log --redo-only -u root  -pxxxxx  /tmp/mysql/incre-1337 --incremental-dir=/tmp/mysql/incre/1337# innobackupex --defaults-file=/usr/local/mysql/my.cnf  --apply-log -u root -pxxxx  /tmp/mysql/2016-04-26_13-48-39      //最後一次將增量和完全備份合并,將未提交的事物復原,但不需要--redo-only參數。資料恢複:要保證原來的資料目錄為空白(如果有其他庫,先移動在其他目錄,後期移回來即可)# innobackupex --defaults-file=/usr/local/mysql/my.cnf  --copy-back -u root -pxxxxx  /tmp/mysql/2016-04-26_13-48-39
  1. 最後重新對mysql_data目錄授權,並啟動mysql服務即可。
線上使用增量備份指令碼
#!/bin/bashhour=`date +%H`day=`date +%F`now=`date +%F_%H`passwd="mysqlpass"function backup(){case $1 infull)    /usr/bin/innobackupex -u root -p${passwd} --no-timestamp --extra-lsndir=/data1/innobackup/${day}/lsn_${now}/ --stream=tar /data1/innobackup/${day}/ |gzip > /data1/innobackup/${day}/${now}.tgz        ;;incre)    if [ -d /data1/innobackup/${day}/lsn_${last}/xtrabackup_checkpoints ];then        /usr/bin/innobackupex -u root -p${passwd} --no-timestamp --incremental --incremental_basedir=/data1/innobackup/${day}/lsn_${last}/ --extra-lsndir=/data1/innobackup/${day}/lsn_${now}/ --stream=tar /data1/innobackup/${day} |gzip > /data1/innobackup/${day}/${now}.tgz    else        echo "incremental_basedir not found,do a full backup"        /usr/bin/innobackupex -u root -p${passwd} --no-timestamp --extra-lsndir=/data1/innobackup/${day}/lsn_${now}/ --stream=tar /data1/innobackup/${day}/ |gzip > /data1/innobackup/${day}/${now}.tgz    fi        ;;*)    echo "nothing todo"            ;;esac}case $hour in01)        last=`date +%F -d -yesterday`        find /data1/innobackup/ -name "${last}*" -type d -exec rm -r "{}" \;        backup full        ;;10)        last=`date +%F_%H -d -9hours`        backup incre        ;;14|18|22)        last=`date +%F_%H -d -4hours`        backup incre        ;;*)        echo "not backup time"esac

mysqlDatabase Backup與恢複

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.