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

溫馨提示×

溫馨提示×

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

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

學會用各種方式備份MySQL數據庫

發布時間:2020-08-08 18:48:38 來源:ITPUB博客 閱讀:153 作者:luashin 欄目:MySQL數據庫
  • 前言

  • 為什么需要備份數據?

  • 數據的備份類型

  • MySQL備份數據的方式

  • 備份需要考慮的問題

  • 設計合適的備份策略

    • 使用cp進行備份

    • 使用mysqldump+復制BINARY LOG備份

    • 使用lvm2快照備份數據

    • 使用Xtrabackup備份


前言

   試著想一想, 在生產環境中什么最重要?如果我們服務器的硬件壞了可以維修或者換新, 軟件問題可以修復或重新安裝, 但是如果數據沒了呢?這可能是最恐怖的事情了吧, 我感覺在生產環境中應該沒有什么比數據跟更為重要. 那么我們該如何保證數據不丟失、或者丟失后可以快速恢復呢?只要看完這篇, 大家應該就能對MySQL中實現數據備份和恢復能有一定的了解。

為什么需要備份數據?

其實在前言中也大概說明了為什么要備份數據, 但是我們還是應該具體了解一下為什么要備份數據

在生產環境中我們數據庫可能會遭遇各種各樣的不測從而導致數據丟失, 大概分為以下幾種.

  • 硬件故障

  • 軟件故障

  • 自然災害

  • 黑客攻擊

  • 誤操作 (占比最大)

所以, 為了在數據丟失之后能夠恢復數據, 我們就需要定期的備份數據, 備份數據的策略要根據不同的應用場景進行定制, 大致有幾個參考數值, 我們可以根據這些數值從而定制符合特定環境中的數據備份策略

  • 能夠容忍丟失多少數據

  • 恢復數據需要多長時間

  • 需要恢復哪一些數據

數據的備份類型

數據的備份類型根據其自身的特性主要分為以下幾組

  • 完全備份

  • 部分備份

    完全備份指的是備份整個數據集( 即整個數據庫 )、部分備份指的是備份部分數據集(例如: 只備份一個表)

而部分備份又分為以下兩種

  • 增量備份

  • 差異備份

    增量備份指的是備份自上一次備份以來(增量或完全)以來變化的數據; 特點: 節約空間、還原麻煩 
    差異備份指的是備份自上一次完全備份以來變化的數據 特點: 浪費空間、還原比增量備份簡單

示意圖

學會用各種方式備份MySQL數據庫

MySQL備份數據的方式

MySQl中我們備份數據一般有幾種方式

  • 熱備份

  • 溫備份

  • 冷備份

    熱備份指的是當數據庫進行備份時, 數據庫的讀寫操作均不是受影響 
    溫備份指的是當數據庫進行備份時, 數據庫的讀操作可以執行, 但是不能執行寫操作 
    冷備份指的是當數據庫進行備份時, 數據庫不能進行讀寫操作, 即數據庫要下線

MySQL中進行不同方式的備份還要考慮存儲引擎是否支持

  • MyISAM 

     熱備 ×

     溫備 √

     冷備 √

  • InnoDB

     熱備 √

     溫備 √

     冷備 √

    我們在考慮完數據在備份時, 數據庫的運行狀態之后還需要考慮對于MySQL數據庫中數據的備份方式

    物理備份一般就是通過tar,cp等命令直接打包復制數據庫的數據文件達到備份的效果 
    邏輯備份一般就是通過特定工具從數據庫中導出數據并另存備份(邏輯備份會丟失數據精度)

    • 物理備份

    • 邏輯備份

備份需要考慮的問題

定制備份策略前, 我們還需要考慮一些問題

我們要備份什么?

一般情況下, 我們需要備份的數據分為以下幾種

  • 數據

  • 二進制日志, InnoDB事務日志

  • 代碼(存儲過程、存儲函數、觸發器、事件調度器)

  • 服務器配置文件

備份工具

這里我們列舉出常用的幾種備份工具 
mysqldump : 邏輯備份工具, 適用于所有的存儲引擎, 支持溫備、完全備份、部分備份、對于InnoDB存儲引擎支持熱備 
cp, tar 等歸檔復制工具: 物理備份工具, 適用于所有的存儲引擎, 冷備、完全備份、部分備份 
lvm2 snapshot: 幾乎熱備, 借助文件系統管理工具進行備份 
mysqlhotcopy: 名不副實的的一個工具, 幾乎冷備, 僅支持MyISAM存儲引擎 
xtrabackup: 一款非常強大的InnoDB/XtraDB熱備工具, 支持完全備份、增量備份, 由percona提供

設計合適的備份策略

針對不同的場景下, 我們應該制定不同的備份策略對數據庫進行備份, 一般情況下, 備份策略一般為以下三種

  • 直接cp,tar復制數據庫文件

  • mysqldump+復制BIN LOGS

  • lvm2快照+復制BIN LOGS

  • xtrabackup

以上的幾種解決方案分別針對于不同的場景

  1. 如果數據量較小, 可以使用第一種方式, 直接復制數據庫文件

  2. 如果數據量還行, 可以使用第二種方式, 先使用mysqldump對數據庫進行完全備份, 然后定期備份BINARY LOG達到增量備份的效果

  3. 如果數據量一般, 而又不過分影響業務運行, 可以使用第三種方式, 使用lvm2的快照對數據文件進行備份, 而后定期備份BINARY LOG達到增量備份的效果

  4. 如果數據量很大, 而又不過分影響業務運行, 可以使用第四種方式, 使用xtrabackup進行完全備份后, 定期使用xtrabackup進行增量備份或差異備份

實戰演練

使用cp進行備份

我們這里使用的是使用yum安裝的mysql-5.1的版本, 使用的數據集為從網絡上找到的一個員工數據庫

查看數據庫的信息

mysql> SHOW DATABASES;    #查看當前的數據庫, 我們的數據庫為employees
+set (USE employees; Database changed
mysql> SHOW TABLES;         #查看當前庫中的表
+set (SELECT COUNT(*) FROM employees;   #由于篇幅原因, 我們這里只看一下employees的行數為300024
+set (FLUSH TABLES WITH READ LOCK;    #向所有表施加讀鎖
Query OK, 0 rows affected (0.00 sec) 

備份數據文件

[root/*    #這一步可以不做
[root@node1 ~]# cp -a /backup/* /var/lib/mysql/    #將備份的數據文件拷貝回去
[root@node1 ~]# service mysqld restart  #重啟MySQL


#重新連接數據并查看

mysql> SHOW DATABASES;    #數據庫已恢復
+--------------------+
| Database           |
+--------------------+
| information_schema |
| employees          |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> USE employees;      

mysql> SELECT COUNT(*) FROM employees;    #表的行數沒有變化
+----------+
| COUNT(*) |
+----------+
|   300024 |
+----------+
1 row in set (0.06 sec)


##完成 

使用mysqldump+復制BINARY LOG備份

我們這里使用的是使用yum安裝的mysql-5.1的版本, 使用的數據集為從網絡上找到的一個員工數據庫

我們通過mysqldump進行一次完全備份, 再修改表中的數據, 然后再通過binary log進行恢復 二進制日志需要在mysql配置文件中添加 log_bin=on 開啟

mysqldump命令介紹

mysqldump是一個客戶端的邏輯備份工具, 可以生成一個重現創建原始數據庫和表的SQL語句, 可以支持所有的存儲引擎, 對于InnoDB支持熱備

官方文檔介紹

shell> mysqldump [options] db_name [tbl_name ...]    恢復需要手動CRATE DATABASES shell> mysqldump [options] shell> mysqldump [options] SHOW DATABASES;    #查看當前的數據庫, 我們的數據庫為employees
+set (USE employees; Database changed
mysql> SHOW TABLES;         #查看當前庫中的表
+set (SELECT COUNT(*) FROM employees;   #由于篇幅原因, 我們這里只看一下employees的行數為300024
+set (SHOW MASTER STATUS@node1 ~]@node1 ~]@node1 ~]@node1 ~]@node1 ~]@node1 ~]or OSF disklabel
Building a new DOS disklabel with disk identifier in memory only, until you decide to write them.
After of course, the previous content wonto         switch and change display units to         sectors (command for help): n
Command action
   e   extended
   p   primary partition (default default value or +size{K,M,G} (default for help): t
Selected partition to list codes): of partition to for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
You have new mail in /var/spool/mail/root
[root@node1 ~]BLKPG: Device or resource busy
error adding partition @node1 ~]@node1 ~]@node1 ~]@node1 ~]@node1 ~]@node1 ~]@node1 ~]@node1 ~]SHOW DATABASES;    #查看當前的數據庫, 我們的數據庫為employees
+set (USE employees; Database changed
mysql> SHOW TABLES;         #查看當前庫中的表
+set (SELECT COUNT(*) FROM employees;   #由于篇幅原因, 我們這里只看一下employees的行數為300024
+set (@node1 lvm_data]@node1 lvm_data]@node1 lvm_data]write-protected, mounting read-only

[root@node1 lvm_data]@node1 lvm_snap]index  test
[root@node1 lvm_snap]@node1 ~]@node1 ~]
		
  • 備份過程快速、可靠;

  • 備份過程不會打斷正在執行的事務;

  • 能夠基于壓縮等功能節約磁盤空間和流量;

  • 自動實現備份檢驗;

  • 還原速度快;

  • 摘自馬哥的文檔

    xtrabackup實現完全備份

    我們這里使用xtrabackup的前端配置工具innobackupex來實現對數據庫的完全備份

    使用innobackupex備份時, 會調用xtrabackup備份所有的InnoDB表, 復制所有關于表結構定義的相關文件(.frm)、以及MyISAMMERGECSVARCHIVE表的相關文件, 同時還會備份觸發器和數據庫配置文件信息相關的文件, 這些文件會被保存至一個以時間命名的目錄.

    備份過程

    [rootlog sequence number ***不用啟動數據庫也可以還原************* [rootdata/*   #刪除數據 [root@node1 ~]# innobackupex R mysql.mysql /data/ [root@node1 ~]# ls /data/ -l MariaDB [(none)]> SHOW DATABASES;  #數據還原
    +Database           |
    +TEST1              |
    | TEST2              |
    | employees          |
    | mysql              |
    | performance_schema |
    | test               |
    +in set (0.00 sec) #關于xtrabackup還有很多強大的功能沒有敘述、有興趣可以去看官方文檔 

    總結


    備份方法 備份速度 恢復速度 便捷性 功能 一般用于
    cp 一般、靈活性低 很弱 少量數據備份
    mysqldump 一般、可無視存儲引擎的差異 一般 中小型數據量的備份
    lvm2快照 一般、支持幾乎熱備、速度快 一般 中小型數據量的備份
    xtrabackup 較快 較快 實現innodb熱備、對存儲引擎有要求 強大 較大規模的備份

    其實我們還可以通過Master-Slave Replication 進行數據備份

    向AI問一下細節

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

    AI

    冷水江市| 团风县| 凤山市| 郴州市| 灵武市| 颍上县| 永和县| 巴塘县| 湘阴县| 施甸县| 平阴县| 六枝特区| 德化县| 攀枝花市| 石河子市| 洮南市| 昌宁县| 英吉沙县| 抚顺县| 应城市| 北流市| 海丰县| 城市| 黄龙县| 忻城县| 赣州市| 揭东县| 信丰县| 新竹县| 韩城市| 栖霞市| 宁国市| 阿瓦提县| 姚安县| 右玉县| 德钦县| 庐江县| 会东县| 历史| 嘉兴市| 湖南省|