mysql的備份和還原
備份:副本
RAID1,RAID10:保證硬件損壞而不會業務終止,不能保證邏輯上的破壞
備份類型:
熱備份,溫備份和冷備份
熱備份:讀,寫都不受影像
溫備份:僅可以執行讀操作
冷備份:離線備份;讀寫操作均中止
物理備份和邏輯備份
物理備份:複製數據文件;
邏輯備份:將數據導出至文本文件中;
完全備份,增量備份和差異備份:
完全備份:備份全部數據;
增量備份:僅備份上次完全備份或增量備份後變化的數據:
差異備份:僅備份上次完全備份以來變化的數據
在線:物理完全備份
還原:
備份什麼:
數據
配置文件
二進制日誌
事務日誌
熱備份:
MyISAM:溫備份
Innodb:可以直接進行熱備份 xtrabackp,mysqldump
物理備份:速度塊,
邏輯備份:速度慢,丟失浮點數精度;方便使用文本處理工具進行處理,可移植性強;
備份策略:完全+增量;完全+差異
MySQL備份工具
mysqldump 邏輯備份工具,MyISAM溫備份,InnoDB熱備份
mysqlhotcopy 物理備份工具,溫備份
文件系統工具:
cp:冷備份
lv:邏輯卷的快功能,幾乎熱備;
mysql> flush tables;
mysql> lock tables;
創建快照:釋放鎖,而後複製數據
InnoDB:
第三組工具:
ibbackup 商業工具
xtrabackup 開源工具
mysqldump:邏輯備份
mysqldump(完全備份)+二進制日誌
完全+增量:
mysqldump db_NAME [tb1][tb2]
--master-data=n (n={0|1|2})
0:不記錄二進制日誌文件及路徑位置
1:以chnage master to 的方式記錄位置,可用於恢復後直接啓動從服務器;
2:以chnage master to 的方式記錄位置,但默認爲被註釋;
--lock-all-tables:鎖定所有表
--flush-logs:執行日誌flush;
如果指定庫中的表類型均爲InoDB,可使用(不要和--lock-all-tables同時使用)
--single-transaction啓動熱備份
備份多個數據庫:
--all-databases;備份所有庫
--databases DB_NAME,DB_NAME,...:備份指定庫
--events
--routines
--triggers
備份多個數據庫:
[root@localhost ~]# mysqldump -uroot -p --lock-all-tables --flush-logs --all-databases --master-data=2 > /root/all.sql
[root@localhost ~]# less all.sql 可以查看備份到第幾個二進制日誌了
mysql> purge binary logs to 'mysql-bin.000011'; 刪除備份之前的二進制日誌
mysql> show binary logs;
增量備份:
mysql> flush logs;
cp mysql-bin.000011 /root/
或者
mysql> mysqlbinlog mysql-bin.000011 > /root/mon-incremental.sql;
使用二進制日誌還原數據庫
先初始化數據庫
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql --datadir=/mydata/data/
service mysqld start
mysql -uroot -p < all.sql 導入數據庫
mysql -uroot -p < mon-incremental.sql 導入增量備份
mysqlbinlog mysql-bin.000012 > temp.sql
mysql -uroot -p < temp.sql
備份單個數據庫或表:
mysql> flush tables with read lock;先刷新表,並且以讀的方式鎖表
mysql> flush logs;刷新日誌
mysql> show binary logs; 查看是從第幾個二進制日誌開始備份的
[root@localhost ~]# mysqldump -uroot -p students >/root/students.sql 開始備份
可以用vim查看備份文件
mysql> unlock tables; 釋放鎖
還原單個數據庫或表:
mysql> create database studb;還原時需要先創建數據庫,再導入數據
[root@localhost ~]# mysql studb< studenst.sql
備份策略:周完成+每日增量
完全備份:mysqldump
增量備份:備份二進制日誌文件(flush logs)