(參考書籍:《深刻淺出MySQL》)mysql
1、備份恢復策略c++
a) 肯定要備份的表的存儲引擎是事務型仍是非事務型sql
b) 肯定使用全備份仍是增量備份數據庫
c) 按期作備份,備份的週期須要充分考慮系統可承受恢復時間bootstrap
d) 確保MySQL打開log-bin選項,有了BINLOG,MySQL才能夠在必要的時候作完整恢復,或基於時間點的恢復,或基於位置的恢復工具
2、備份es5
a) 備份指定的數據庫或者此數據庫中的某些表插件
i. mysqldump [options] db_name [tables]rest
b) 備份指定的一個或多個數據庫日誌
i. mysqldump [options] --databases DB1 [DB2 DB3 ...]
c) 備份全部數據庫
i. mysqldump [options] --all-database
3、恢復
一、 徹底恢復
mysql -uroot -p dbname<bakfile
mysqlbinlog binlog-file|mysql -u root -p***(備份後數據不完整將備份後執行的日誌進行重作)
二、 基於時間點恢復(不徹底恢復)
a) 上午10點發生誤操做,用備份和binlog將數據恢復到故障前
mysqlbinlog –stop-date=」2005-04-20 9:59:59」 /var/log/mysql/bin.123456 | mysql -uroot -pmypwd
b) 跳過故障時的時間點,繼續執行後面的BINLOG,完成恢復
mysqlbinlog --start-date=」2015-04-20 10:01:00」 /var/log/mysql/bin.123456 | mysql -uroot -pmypwd
三、 基於位置恢復
a) 在/tmp目錄建立小的文本文件,編輯此文件,找到出錯語句先後的位置號,例如先後位置號分別是368312和368315
mysqldump --start-date=」2005-04-20 9:55:00」 --stop-date=」2005-04-20 10:05:00」 /var/log/bin.123456 > /tmp/mysql_restore.sql
b) mysqlbinlog --stop-position=」368312」 /var/log/mysql/bin.123456 | mysql -uroot -pmypwd
mysqlbinlog --start-position=」368315」 /var/log/mysql/bin.123456 | mysql -uroot -pmypwd
4、Xtrabackup熱備工具
InnoDB在線熱備工具,具備開源、免費、支持在線熱備、備份恢復速度快、佔用磁盤空間小等特色,支持不一樣狀況下的多種備份形式。
包含兩個主要的工具,即xtrabackup和innobackupex,主要區別:
xtrabackup只能備份InnoDB和XtraDB兩種數據表,而不能備份MyISAM數據表;innobackupex是一個封裝了xtrabackup的Perl腳本,支持同時備份InnoDB和MyISAM,但在對MyISAM備份時須要加一個全局的讀鎖。
5、備份操做記錄
--xtrabackup安裝
--下載安裝xtrabackup(2.4.4)(/usr/local/software/ percona-xtrabackup-2.4.4.tar.gz)
wget http://...
--解壓縮xtrabackup安裝包
tar zxvf percona-xtrabackup-2.4.4.tar.gz
--移動重命名
mv percona-xtrabackup-2.4.4 /usr/local/xtrabackup
--安裝依賴插件
yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses5-devel
--cmake編譯
cmake -DBUILD_CONFIG=xtrabackup_release && make -j4
--安裝
make install
--連接bin到系統目錄
ln -sf /usr/local/xtrabackup/bin/innobackupex /usr/bin/
ln -sf /usr/local/xtrabackup/bin/xtrabackup /usr/bin/
========================================
--cmake編譯過程當中錯誤:
--安裝boost(/usr/local/software/boost_1_59_0.tar.gz)
wget http://...
tar zxvf boost_1_59_0.tar.gz
mv boost_1_59_0 /usr/local/boost
cd /usr/local/boost
./bootstrap.sh
./b2 install --perfix=dir
--安裝libev(/usr/local/software/libev-4.24.tar.gz)
wget http://...
tar zxvf libev-4.24.tar.gz
mv libev-4.24 /usr/local/libev
./configure
make
make install
--安裝crypt
yum install crypt*
yum install libgcrypt*
==========================================
--mysql啓動bin-log
--/etc/my.cnf配置文件中
log_bin=mysql-bin
server-id=1