mysql的備份和還原

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)





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章