mysql進階(一) mysql備份
阿新 • • 發佈:2017-06-11
mysql
備份的目的: 實現災難恢復:誤操作、硬件故障、軟件故障、自然災害、黑客攻擊 註意的要點: 1、能夠容忍丟失多少數據 2、恢復數據所用的時間 3、備份需要的時間 4、是否對業務有影響 5、備份時服務器負載 備份類型 完全備份:備份整個數據庫的數據 部分備份:備份指定的一部分數據 增量備份:備份上一次備份後增加的數據 差異備份:備份從最後一次完全備份後起發生改變的數據 熱備份:讀寫操作均可以進行 溫備份:只讀 冷備份:不可寫,不可讀 邏輯備份:從數據庫中導出數據,與存儲引擎無關 物理備份:直接復制數據文件 備份需要: 數據 二進制日誌,事務日誌 配置文件 備份的設計方案: 數據:完全+增量、完全+部分 備份手段:邏輯或物理 常用的備份工具: mysqldump:mysql自帶的備份工具,邏輯備份、完全備份、部分備份、溫備 lvm2快照:幾乎熱備,需要借助cp,tar等工具完成,lvm2只負責生成快照 xtrabackup:支持對InnoDB的熱備份(物理備份 tar,cp:冷備份 mysqldump工具使用:邏輯備份工具,在數據小於1G時可以使用,數據大於1G之後則不建議使用 mysqldump [OPTIONS] database [tables] #不會自動創建數據庫 mysqldump [OPTIONS] --databases DB1 [DB2 ...] #備份指定數據庫,會自動創建數據庫 mysqldump [OPTIONS] --all-databases #備份所有數據庫,會自動創建數據庫 常用選項: -u #用戶 -p #密碼 --flush-logs #執行二進制日誌文件滾動 --single-transaction #對InnoDB存儲引擎進行熱備份(只有InnoDB支持) --master-data=2 #在數據文件中,記錄備份那一刻二進制日誌文件的位置, 並註釋主要用於參考,多用於進行基於時間點還原 --lock-all-tables #在執行備份時鎖定所有庫的所有表(二選一,必須) --lock-tables #對單個數據庫在備份時鎖定所有表(二選一,必須) 例:mysqldump -uroot -p123.com --databases --lock-tables --flush-logs --master-data=2 test > /tmp/mysql.back.`date "+%F__%R"` LVM2快照實現數據幾乎熱備 實現條件:mysql數據存儲在LVM邏輯卷中,需要有足夠的空間做快照 備份策略: 1、創建全局鎖 mysql> FLUSH TABLES WITH READ LOCK; 2、記錄二進制日誌文件及事件位置 mysql -uroot -p123.com -e ‘FLUSH LOGS;‘ #進行日誌滾動 mysql -uroot -p123.com -e ‘SHOW MASTER STATUS;‘>/tmp/test.`date +%F` #記錄二進制日誌位置 3、創建LVM快照 lvcreate -L 1GB -s -n test_snap /dev/vg_test/lv_test -L 1G #快照大小,一般和數據文件差不多 -s #表示創建快照 -n test_snap #快照名 /dev/vg_test/lv_test #要創建快照的邏輯卷 4、釋放全局鎖 mysql> UNLOCK TABLES; 5、掛載快照卷 mount /dev/vg_test/test_snap /mnt 6、備份數據並刪除快照卷 cp -a /mnt/date/mysql /tmp #復制數據文件 umount /mnt #卸載快照卷 lvremove /dev/vg_test/test_snap #刪除快照 7、制定好備份計劃,每隔一段時間對二進制文件進行備份 每隔一段時間對mysql的二進制文件進行備份,以實現將來的基於時間點還原數據 例:cp -p /data/mysql-bin.000007 /tmp/mysql_7.sql #備份二進制日誌 8、還原 還原時只需要將數據文件復制到mysql的數據目錄中,在使用二進制日誌對數據進行時間點還原 例:cp -a /tmp/mysql /data/mysql #還原數據 mysql> source /tmp/mysql_7.sql; #進行基於時間點的還原 xtrabackup實現mysql熱備: 註意:xtrabackup只能對InnoDB實現熱備和增量備份 https://www.percona.com/downloads/XtraBackup/LATEST/ #下載地址 安裝: 1、配置好epel源 2、yum -y localinstall percona-xtrabackup-2.3.2-1.el6.x86_64.rpm #安裝 備份工具: xtrabackup包含兩個主要的工具,即xtrabackup和innobackupex innobackupex:是xtrabackup重封裝的Perl腳本,能對innodb和myisam備份, 對myisam不能實現熱備和增量備份 xtrabackup:xtrabackup只能備份innodb和xtradb兩種引擎的表, 而不能備份myisam引擎的表 innobackupex基本使用 常用參數: --help #查看幫助信息 --backup #進行備份操作,可省,默認為執行備份操作 --apply-log #恢復前必須的整理工作 --defaults-file #指定配置文件路徑,可省,會自動到數據庫中讀取 --redo-only #在做整理操作時,未提交的數據不進行回滾,做增量備份恢復時必須加的選項 --copy-back #執行還原操作 --incremental #執行增量備份 --user=name #指定用戶名,默認為root --host=name #指定主機名,默認為host --port= #指定端口,默認為3306 --password=name #指定密碼,默認為空 --databases=‘db1 bd2‘ #備份指定的數據庫, --defaults-file= #指定配置文件,可省 --no-timestamp= #自定義備份目錄名 incremental-basedir= #基於那一次備份做增量備份 使用實例: innodb_file_per_table=1 #在mysql配置文件中添加,表示每個表使用單獨的表空間文件 datadir=/usr/local/mysql/data #在mysql配置文件中添加,表示指定數據文件位置 mkdir /backups #創建備份文件存放目錄 全庫完全備份: innobackupex --user=root --password=123.com /backups/ /backups/ #備份文件存放目錄 註意:結尾出現completed OK!則為成功,否則則為錯誤 還原一個完全備份: innobackupex --apply-log /backups/2017-02-20_04-40-44/ #對備份文件進行整理 innobackupex --copy-back /backups/2017-02-20_04-40-44/ #還原數據 chown mysql:mysql /usr/local/mysql/* #修改權限 增量備份: innobackupex --user=root --password=123.com --incremental /backups/ --incremental-basedir=/backups/2017-02-20_04-40-44/ /backups/ #增量備份存儲位置 --incremental-basedir #指定基於哪一個備份文件進行增量備份,通常都是上一個增量備份 增量備份還原: innobackupex --apply-log --redo-only /backups/2017-02-20_05-01-49/ #整理完全備份 innobackupex --apply-log --redo-only /backups/2017-02-20_05-01-49 --incremental-dir=/backups/2017-02-20_05-04-34 #整理第一個增量備份 innobackupex --copy-back /backups/2017-02-20_05-01-49/ #還原數據 部分備份: innobackupex --databases="testdb mysql" /backups/ --user=root --password=123.com #備份testdb和mysql數據庫,不管備份那個數據庫都應該備份mysql數據庫 還原部分備份: innobackupex --apply-log /backups/2017-02-20_05-24-07/ #準備 innobackupex --copy-back /backups/2017-02-20_05-24-07/ #還原 chown mysql:mysql /usr/local/mysql/* #修改權限
本文出自 “自動化運維” 博客,請務必保留此出處http://hongchen99.blog.51cto.com/12534281/1934238
mysql進階(一) mysql備份