亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

應該怎么樣備份與恢復mysql數據庫

發布時間:2020-05-15 15:58:25 來源:網絡 閱讀:181 作者:三月 欄目:MySQL數據庫

下文主要給大家帶來應該怎么樣備份與恢復mysql數據庫,希望這些內容能夠帶給大家實際用處,這也是我編輯應該怎么樣備份與恢復mysql數據庫這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。

數據庫備份方式

熱備份:不影響業務的正常讀寫
溫備份:對表加鎖,只允許對數據庫進行讀操作
冷備份:業務暫停
物理備份:備份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-xtrabackup/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 root@10.10.166.176 "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/bash
hour=`date +%H`
day=`date +%F`
now=`date +%F_%H`
passwd="mysqlpass"

function backup()
{
case $1 in
full)
    /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 [ -f /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 in
01)
        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
復雜應用實例:打包(tar、xbstream)、壓縮、遠程備份、增量備份、恢復
備份:
# innobackupex --no-timestamp --extra-lsndir=/backup/lsn/2304 /backup/2304_full_remot --stream=tar |gzip |sshpass -p "sshpass" ssh root@192.168.183.130 "cat - >/backup/remote/2304_full.tgz"
# innobackupex --no-timestamp --extra-lsndir=/backup/lsn/0000 --incremental --incremental_basedir=/backup/lsn/2304  /backup/0000_full_remot --stream=xbstream |gzip |sshpass -p "sshpass" ssh root@192.168.183.130 "cat - >/backup/remote/0000_incr.xbstream.gz"
# innobackupex --no-timestamp --extra-lsndir=/backup/lsn/0006 --incremental --incremental_basedir=/backup/lsn/0000  /backup/0006_full_remot --stream=xbstream |gzip |sshpass -p "sshpass" ssh root@192.168.183.130 "cat - >/backup/remote/0006_incr.xbstream.gz"
恢復:
# cd /backup/remote/
# tar -i -xf 2304_full.tgz
# innobackupex --apply-log --redo-only /backup/remote/
# gunzip -c 0000_incr.xbstream.gz > 0000_incr/0000_incr.xbstream
# xbstream -x -C 0000_incr/< 0000_incr/0000_incr.xbstream
# innobackupex --apply-log --redo-only --incremental /backup/remote/ --incremental-dir=/backup/remote/0000_incr/
# gunzip -c 0006_incr.xbstream.gz > 0006_incr/0006_incr.xbstream
# xbstream -x -C 0006_incr/< 0006_incr/0006_incr.xbstream
# innobackupex --apply-log --redo-only --incremental /backup/remote/ --incremental-dir=/backup/remote/0006_incr/

# innobackupex --copy-back /backup/remote/

對于以上關于應該怎么樣備份與恢復mysql數據庫,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴林右旗| 新余市| 淮南市| 高雄县| 外汇| 洛扎县| 新源县| 大兴区| 安西县| 宜君县| 肥城市| 蛟河市| 洛扎县| 江阴市| 石棉县| 林甸县| 万源市| 友谊县| 内黄县| 彩票| 台安县| 巴南区| 都安| 获嘉县| 龙州县| 新龙县| 工布江达县| 乐东| 涿州市| 沭阳县| 四平市| 宁化县| 额济纳旗| 崇礼县| 山阳县| 巴塘县| 鄱阳县| 岢岚县| 新龙县| 静安区| 清镇市|