王婷誼
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee
    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee
  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    1
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    ###### tags: `LSA` # 資料備份、容錯與災害還原 [TOC] > 開始就可以講 > - 各種災害: 天災人禍 系統爆掉 -> 災害還原 > - 資料容錯 -> RAID > - 資料消失、被修改 -> 資料備份 ## 資料備份 ### 為什麼要備份? :::info 天災小故事 : 法國巴黎聖母院在 2019 因為遭遇大火導致屋頂燒毀、尖塔倒塌。因為是世界遺產文化之一,所以就決定要重建。《刺客教條》遊戲的開發商,耗時兩年建立了 1:1 的巴黎聖母院 3D 模型。另外,《國家地理》也曾對巴黎聖母院建模,掃描精準度達 5mm。因為有這些備份資料,聖母院在重建時的參考資料就比較完整。 > [有趣的備份新聞](https://applealmond.com/posts/51134) 人禍小故事 : Nvidia 遭網路攻擊,經過調查發現 Lapsus$ 的駭客組織宣稱駭入 Nvidia,並洩露該公司員工的登入密碼及 NTLM 雜湊,還揚言即將公布竊得的資料。 這個時候故事來個反轉,Nivida 出手回擊,在駭客系統內植入勒索軟體,把資料加密。 Lapsus$ 駭客說 Nvidia這招成功加密了他們資料,不過他們有備份,躲過一劫。 > [故事來源](https://www.ithome.com.tw/news/149576) 就算你什麼都不做,宇宙射線也會破壞你的資料 世界備份日 : 3/31 跟大家推廣 3-2-1 備份原則 因為實在是太太太多人手機被偷走,因為自己耍蠢刪掉檔案(29% of data loss cases are caused by accident) ::: > 備份原因 : 避免系統或是資料損毀、遺失,應在平時做好檔案備份工作,萬一不幸發生硬體故障或遭遇勒索軟體攻擊等情況時,仍可透過還原備份來降低損耗程度。 ### 怎樣才能算是備份呢? :::danger **要能還原的才算是備份** ::: 1. 可以保留這份檔案先前的版本 2. 至少要有一份異地備份 3. 使用多種備份解決方案,EX:on-site 和 off-site 的 硬體不同 4. 可以進行測試還原,確保能正確還原 5. 還原的時候可以有選擇的還原(為了還原一個檔案,不需要去還原整份備份檔) 6. 備份檔要可以打開並查閱 7. 在備份前要想到所有有可能發生的事故,並且都能有有效處理方案 :::info THESE ARE NOT BACKUPS - 把筆電的資料放到同一台筆電的 SD 卡 - 把存備份資料的硬體放在距離你電腦很近的地方 - 把 gmail 中的資料備份到另一個 gmail 帳號 - 把文件備份到另一個資料夾 - 在相機裡面的照片不是備份 - 不同裝置都有相同的資料才叫作資料備份,只是換個裝置存放不叫做備份 ::: > 備份的定義資料來源 : 去年ㄉ共筆! https://hackmd.io/@ncnu-opensource/book/%2Fqh3eBiEtQj--Zp_piczxgQ ### 3-2-1 規則 - 至少 3 份資料 > 其中一份壞的,倒底是壞的是哪一個不確定 - 2 種不同儲存裝置 - 1 個異地且離線的儲存 > 當然有錢有空間就是越多份越好,所以後來也有人在推廣 4-3-2 規則 ### 備份需考慮 #### 還原時間目標(RTO)(Recovery Time Objective) - 企業的應用程式和營運恢復資料的時間 - 決定還原系統、備份的所需時間 - RTO數值越小,代表容災系統的數據恢復能力越強 - 停機損失 - ex. Amazon 如果資料不見,可能一次就會損失大量的訂單,所以還原時間越小越好 - 保留週期 #### 還原點目標(RPO)(Recovery Point Objective) - 指最多能承受遺失多少資料數量 - 用以決定備份的頻率 - RPO數值越小,代表遺失數據的時間越小 - 多久需備份一次 - 主要是隨著資料更新頻率來加以考量 - 若更新頻率低,備份頻率卻較高,會造成備份空間或資源的浪費 - 若更新頻率高,而備份頻率低,會有遺漏備份更新版本問題 - 如果備份頻率很高,就會想用自動化的方式備份 - 常見備份頻率 > 連續的、每分鐘一次、每隔多分鐘 (例如每15分鐘)、每小時、每天、每週、每月和手動 - 該如何決定備份頻率? - 更新頻率 - ex. 一台在存取網路上重要資料的伺服器,一天更新一次是不夠的 - ex. 一般的家用電腦,每周或每個月更新就很足夠了 - 復原成本 - ex. 如果家用電腦上的作業消失,一周內寫完會來不及,那一周至少要備份一次 :::info ### CDP & Near-CDP > 這兩個都是商業名詞(buzzword) #### CDP(continuous data protection)(持續數據保護) - 傳統的備份作業都是藉由時間點來作為啟動複製或快照動作的機制 - CDP 則是以系統的 I/O 活動來作為啟動機制 - event-based ( 由事件觸發 ) - 基本原理是「寫入時複製並附加時間標記(copy on write + time stamp)」 :::warning COW ( copy on write ) - 不在原本的檔案寫入,而是複製一個檔案出來寫 - 比較佔用空間 ::: - 持續性備份,可將資料回復到任何時間點 - RPO(還原點目標) = 0 #### Near-CDP(near-continuous data protection) - 因為企業創造出 CDP 這種說法,而 CDP 中不包含用快照的方式,於是就產生了 Near-CDP - Near-CDP 就是 time-based ( 由時間觸發 ) 的快照備份 - 和 CDP 比所需儲存空間較小 - RPO = 快照的頻率 ( 常見是一小時 ) ::: #### COST - RTO RPO 數值越小 -> cost 高 #### 備份來源和目標(Source and Destination) ![](https://i.imgur.com/y8yXJkC.png) > [圖片來源](https://www.2brightsparks.com/syncback/help/sourceanddestination.htm) - 備份資料層級 - 磁碟 ( disk ) - 檔案系統( file system ) - 檔案 ( file ) - information - ex. 資料庫、mysql - 備份模式 - ex. 全部備份、增量備份、差異備份 - 備份媒體 - ex. 硬碟、記憶卡、USB、光碟、磁帶、雲端 ## 備份方式 ### Full Backup(全部備份) - 每次儲存都儲存所有資料 - 花費最多記憶空間 - 還原時間最短 ### Incremental Backup(增量備份) - 和 FULL 備份的不同在於,Incremental 只會存更改的部分(上次和這次的差異) - 可以減少要使用的記憶體量,所以可以增加備份次數 - 還原時間比全部備份長 ### Differential Backup(差異備份) - 存和最後一次完整備份的差異 - 第一次的增量備份的資料與差異備份的資料相同 > 講解圖 ![](https://i.imgur.com/K4aYApR.png) | | 全部備份 | 增量備份 | 差異備份 | | -------- | -------- | -------- | -------- | | 備份時間 | 長 | 短 | 中 | | 復原時間 | 短 | 長 | 中 | | COST | 最貴 | 最便宜 | 中間 | | RTO | 數值最小 | 數值最大 | 數值中間 | ### 混合式備份 - 針對不同需求,或是希望達成的目標透過上述的備份方式組合而成的新方法~ #### Reverse incremental(逆向增量備份) - Veeam ( 是提供備份備援和智能數據管理解決方案的公司 ) 的特有方法 - 每周做一次完整備份,每天做差異備份,然後將差異備份合併之前的完整備份,當作今日的備份,其好處是可以反推回幾天前的狀態 - ![](https://i.imgur.com/rjGdnJR.png =400x) > [圖片來源](https://helpcenter.veeam.com/docs/backup/hyperv/reversed_incremental_backup.html?ver=110) :::info 基本上所有的備份軟體都是用上述定義來區分不同的備份方式,不過有少數軟體的名稱可能會有差異,要看你使用的是哪一種備份軟體,去讀它的文件會比較準確 ::: ::: info 依照資料的角度分類 ### 熱備份(hot backup) - 系統處於正常運轉狀態下的備份 - 系統中的資料隨時在更新(同步) - 還原速度快 - 成本高 - ex. ### 冷備份(cold backup) - 系統處於關機或停機狀態 - 資料與系統中此時段的資料完全一致 - 還原速度比較久 - 成本低 - ex. 三個月前的完整備份,用到的機率高不高,就用冷備份 ### 溫備份(warm backup) - 介於冷熱備份之間 ::: ## 保留週期 - 關係著保留的份數和能回復到多久之前的資料 - 保留週期之考量 - 資料回復需求 - 資料備份的空間($) - ex. GFS輪替原則 / 三代輪替原則 Grandfather-Father-Son Rotation - 祖父等級:每個月做一次完整備份,每個備份會被保存一年 - 父親等級:每個禮拜做一次完整備份,每個備份會被保存一個月 - 兒子等級:每天做一次差異或增量備份,每個備份會被保存一週。 > 透過這種階層式的備份模式,我們可以確保過去一段時間內的資料都會被備份,算是一個在可用性和安全性上取得的一個平衡。 ## 備份媒體 ### Online - 最容易訪問的資料儲存類型 - 儲存的資料是屬於 hot backup - 優點:方便快速 - 缺點 - 容易不小心被刪除或覆寫 - 容易遭受資安攻擊 - ex. 本機硬碟、雲端硬碟 ### Offline - 在備份的時候,系統不能使用 - 早期幾乎都是 Offline 備份 - 儲存的資料是屬於 cold backup - 優點 - 是被**網路資安**事件影響的機率較小 > 不代表不會受到資安事件影響歐 ! ex. USB 中毒 - 不太需要用網路 - 缺點 - 備份時,使用者不能使用 #### 離線硬體 :::info - 磁帶 - 泡海水/從101墜落/拿榔頭重擊後, 資料救回機會遠高於硬碟 - 比硬碟更輕盈 - 讀取速度慢 - 回復速度也慢 - 屬於 cold backup ![](https://i.imgur.com/WwtOeFr.png =200x) > [圖片來源] - HDD(傳統硬碟) - 比 SSD 便宜 - 故障前大多會有徵兆(電腦開機變慢、檔案傳輸或檔案開啟較慢),資料救援的機會較大 - 摔太大力就掰了 - 比較大、比較重 - CD / DVD - 不可覆蓋修改或刪除 - 不會感染病毒 - 一片一片燒錄超麻煩 - 搜尋速度很慢 - SSD(固態硬碟) - 比 HDD 不怕碰撞 - 更輕盈(方便攜帶) - 傳輸速率更快 - 故障比較沒有前兆 - USB - 攜帶方便 - 便宜 - 沒有故障前的徵兆 > 比較適合拿來做臨時移動資料用,備份的話不適合 ::: ### Nearline - 介於 online 和 offline - 備份時,會把資料從 Backup Server 再轉到備份其他儲存媒體 - 儲存的資料是屬於 warm backup - 優點:是被**網路資安**事件影響的機率較小(和 Online 比) - 缺點:和 Online 比,多了一些等待時間 - ex. tape library (磁帶櫃) ### DAS(Directly Attached Storage) - 物理性的連接到你的伺服器或主機上的儲存裝置 - 透過 USB、SCSI、SAS 來連接儲存裝置 - ex. 光碟、硬碟、USB 等 ### NAS(Network Attached Storage) - 一台聯網的儲存裝置 - 用戶可在網路環境下透過特定的連線方式,例如 IP 位址、FTP、網路芳鄰等方式登入 NAS 存取放在 NAS 內的數位資料 - 可以自動備份 - 缺點 - 如果停電、淹水裡面的資料就沒了 - 很貴 - 傳輸速度較慢 ### SAN(Storage Area Networks) - 一堆網路存取設備集合成一個網路 - 用光纖連接多台儲存裝置形成網路 - 缺點 - 超貴 - 優點 - 高速讀寫 #### DAS、SAN、NAS 比較 | | DAS | SAN | NAS | | ------------ | ---- | ---- | --- | | 傳輸速度 | 快 | 超快 | 慢 | | 容易共享資料 | X | O | O | | 價格 | 便宜 | 最貴 | 貴 | | 架設容易度 | 簡單 | 難 | 中等 | :::info ## 快照(Snapshot) - 把它用動詞理解,瞬間記住當下的狀態 - 產生出來的檔案就是快照 - 像是把你的資料在特定時間照一張相片 - (n.)忠實呈現某個東西**當下**的狀態的檔案 ### 使用情境 - snapshot VM - 使用情境就是在開發或是測試的時候,一旦發生問題可以立刻回到問題發生前的狀態 - snapshot filesystem - 有很多檔案系統都可以做 snapshot - ex. ZFS (Z file system) - snapshot memory、register - 運算到一半需要關機,可以透過快照先把資料儲存,再次開機時就可以從還沒算完的地方接回去 #### 系統映像檔(System image) - 屬於一種 snapshot - 這裡是針對系統的,如果系統在不同的磁區之下,那就會備份所有包含系統的磁區,並整理出他們的關係 - 使用情境 - 當主伺服器掛掉,會需要一個支援的伺服器暫時代替主伺服器的位置,讓其他人修復。因為主伺服器會更新,所以也要更新支援的伺服器,如果要一個東西一個東西下載比對很容易出錯,最好的方式就是讓整個系統、軟體變成封包或直接建立 image 檔傳送過去直接部屬。 - 建造第二台環境相同的 VM - 工具 : ghost、clonezilla (兩個都是會下載硬碟,並且列出硬碟間的關係) ### 快照優缺點 - 優點 - 十分方便快速 - 可以在運行中產生 - 缺點 - 是沒有經過整理的資料,檔案大小比較大 ::: :::info snapshot 包含 system image 嗎 ? > 要看是對哪種東西做 snapshot > 如果對 filesystem 做快照,根目錄就是掛載在這個 file system 底下,那就包含 system image > 如果做快照的 file system 不是根目錄的,那就不包含 > 如果對 VM 做快照,要看使用哪種快照軟體 > [name=BT] snapshot 和備份之間的關係 > 可以把 snapshot 當成一種備份檔案,這種備份檔案就是完整記錄狀態用的 > 備份檔不一定是快照,可能是經過整理的備份資料 > [name=BT] ::: ## 備份方法 - 按照備份的標的物做分類 - 從最底層的 disk 到最上層的 information ,越上層的資料越少,因為彙整過可能會漏掉細節,相對的不需要的資料也越少,備份出的檔案的 size 也會越小。 ### 磁碟 ( disk ) - 硬碟中一個一個 bit 都備份下來 #### dd ( data duplicator ) > [來源](https://blog.gtwang.org/linux/dd-command-examples/) - 完整備份 - 查看電腦儲存裝置路徑 - `lsblk` - 備份整顆硬碟 - `sudo dd if=<輸入硬碟路徑> of=<輸出硬碟路徑>` > 他也可以拿來備份一般檔案,只需要把硬碟路徑改成檔案路徑,不需要 sudo - 備份部分 - `dd if=/dev/zero of=./bit_zero bs=1M count=10` :::info `bs` ( block size ):bs 越大讀取速度越快,但也比較浪費空間。預設是 512 bytes `count=N`:只處理 N 個輸入區塊 `skip=N`:要跳過前面多少區塊 `/dev/zero` 以 bit 為單位產出一堆 0 的特殊檔案 `/dev/random` 以 bit 為單位產出一堆亂數 0、1 的特殊檔案 ::: - 查看 ./bit_zero 檔 - `hexdump bit_zero | less` :::info `hexdump` : 查看 bit 檔案 `less` : 一次只顯示一個頁面 ::: - 建立映像檔 - `dd if=<輸入檔案路徑> of=<輸出檔案路徑>.img` #### Ubuntu 內建 - 建立磁碟映像檔 - 點選左下角**選單** - 輸入 disk ![](https://i.imgur.com/BSU5voL.png) - 點選右上角三個點點的位置 ![](https://i.imgur.com/mrOOrrv.png) - 建立磁碟映像檔 ![](https://i.imgur.com/3EDS23x.png) > 可以選擇儲存在本機或是掛載的硬碟中 - 也可以選擇不同的分割區 - ![](https://i.imgur.com/RrbTEkG.png) > 點選建立分割區映像檔 - 復原 - 與建立的步驟一樣 - 點選右上角三個點點的位置 - 還原磁碟映像檔 ![](https://i.imgur.com/E7YHATD.png) ### file system - 檔案系統中包含檔案內容、名稱、位置、大小、時間、權限、檔案類型等。 #### dump - 查看檔案系統之總空間以及可用空間的相關資訊 - `df -h` - 查看可 dump 檔案系統 - `dump -W` - `sudo apt install dump` - 建立完整備份 ``` sudo dump -0uf <要備份的位置> <要備份的目錄> > sudo dump -0uf sda5_backup.0 /dev/sda5 ``` :::info `-數字` :表示備份的層級 ( 0 = 完整備份,1 ~ 9 是增量備份) <br/> `-u` :備份完畢後,在 /var/lib/dumpdates 中紀錄備份的文件系統、層級、日期與時間等<br/> `-f` :要使用備份設備<br/> ::: - 查看備份內容 - `restore -tf sda5_backup.0` - 復原完整備份 - `sudo restore -xf sda5_backup.0` - 建立增量備份 - `sudo dump -1uf sda5_backup.1 /dev/sda5` - 復原增量備份 - `sudo restore -xf sda5_backup.1` :::info 用 dd 備份一個磁區和用 dump 備份一個磁區的差別 ? > dd:1 比 1 備份,每個 bit 備份下來,包含它支離破碎的狀態 > dump:只備份已經存下來的檔案(已被使用的空間) ::: ### 檔案 ( file ) #### rsync - 可以用在遠端備份 - `rsync -avzh <本地檔案> <使用者>@<備份地點 IP>:<備份地點 目錄位置>` - `-a` :相當於 -rlptgoD ,所以這個 -a 是最常用的參數! - 連檔案的權限都會複製過去 - 相當於 `scp -r` 的效果,而且由於 rsync 只會傳輸有變動的部份,所以通常在異地備份資料時都會使用這種方式來處理。 :::info **-a** `-r` :備份所有子目錄下的目錄與檔案<br/> `-l` :複製連結檔的屬性,而非連結的目標原始檔案內容;<br/> `-p` :複製時,連同屬性 (permission) 也保存不變!<br/> `-t` :保存原始檔案的時間參數<br/> `-g` :保存原始檔案的擁有群組<br/> `-o` :保存原始檔案的擁有人<br/> `-D` :保存原始檔案的裝置屬性 (device) ::: - `-v` :觀察模式,可以列出更多的資訊,包括鏡像時的檔案檔名等; - `-z` :在資料傳輸時,加上壓縮的參數! - `-h` :把數字以必較合適的單位格式顯示,增加易讀性 #### tar - 完整備份 : 創建一個快照文件,包含已寫入備份的文件和目錄列表。 - 增量備份 : 比對快照文件找出更改了哪些文件和目錄,只存更改的部分。 - 建立環境 - 建立兩個資料夾 backup 和 restore ``` mkdir backup mkdir restore ``` - 在 backup 資料夾中放幾個檔案 ``` vim ritaHW vim 123.txt vim LSA ``` - 創建一個完整備份 ``` tar -czvg snapshot-file -f <要叫的檔名> <要備份的目錄名稱> > tar -czvg snapshot-file -f backup.tar.gz backup ``` - 查看完整備份 ``` tar -tvf <要看的檔名> > tar -tvf backup.tar.gz ``` - 創建增量備份 ``` tar -czvg snapshot-file -f 1-<要叫的檔名> <要備份的目錄名稱> ``` - 復原增量備份 ``` tar -xvf <備份的檔案路徑> -C <要復原的檔案位置> > tar -xvf backup.tar.gz -C /home/rita/restore > tar -xvf 1-backup.tar.gz -C /home/rita/restore ``` :::info - `-c` :建立壓縮檔案 - `-x` :解開壓縮檔案 - `-z` :透過gzip去進行壓縮或解壓縮 - `-v` :顯示所有過程 - `-g` :用來做增量備份 - `-f` :使用檔案名字,切記,這個參數是最後一個參數,後面只能接檔案名 - `-t` :查看內容 ::: #### Déjà Dup - 點選左下角**選單** - 輸入 backup ![](https://i.imgur.com/lE5QT6T.png =400x) ### information #### mysqldump >[來源](https://code.yidas.com/mysqldump/) - 建立環境 - `sudo apt-get install mysql-server` - 以 root 身分進入編輯 - `sudo mysql -u root` - 建立資料庫 - `CREATE DATABASE backup;` - 建立使用者 - `CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';` - 給他所有權限 - `GRANT ALL PRIVILEGES ON backup.* TO "username"@"localhost";` - 更新權限 - `FLUSH PRIVILEGES;` - 進入資料庫 - `use backup;` - 建立資料表 - `CREATE TABLE account(Loginname VARCHAR(20));` - 增加欄位 - `INSERT INTO account (Loginname) VALUES ("rita");` - 退出編輯 - `EXIT;` - 備份單一資料庫 - `mysqldump --no-tablespaces -u username -h localhost -p backup > backup.sql` - 刪掉資料庫 - `drop database backup;` - 建立要備份到的資料庫 - `CREATE DATABASE backup;` - 復原資料庫 - `mysql -u username -p backup < backup.sql` - 查看 - `SELECT * FROM account;` :::info 其他指令 `--all-databases` = 所有資料庫 `database_name table_name` = 單一資料表 `--databases db1 db2` = 多個資料庫 `-p` : 後面要接密碼,如果沒接就是下完指令後會詢問你密碼 `--no-tablespaces` : Do not write any CREATE LOGFILE GROUP or CREATE TABLESPACE statements in output ::: ### VM #### virtual box 內建 - OVA : 是虛擬機公開的檔案標準,特別要注意的是這個方法只能在虛擬機關機的時候做 - OVF : 是分散的檔案,OVA可以看成是OVF壓縮成的一個檔案 - 建立備份 - 點選畫面左上方的檔案,選匯出應用裝置 > ![](https://i.imgur.com/jva0NEg.png) >![](https://i.imgur.com/UhJKWQg.png) >![](https://i.imgur.com/AuKeWUo.png) >![](https://i.imgur.com/AlaYrqD.png) - 還原時,點選匯入應用裝置 ## 災害還原 (備援) ### DR site (disaster recovery site) - recovery 是指復原服務,不是復原機器,只要有任何一台機器開始提供服務,就等於 recovery 了 #### Hot site(熱備援站) - server 隨時在正常運轉狀態下 - server 中的資料可能隨時在更新。(同步) - 一旦發生災難可快速代替原本的 server 執行,恢復營業。 - 優點 - 恢復時間短 - 資料丟失可能性較小 - 缺點 - 通訊環境要求高 - 平時執行管理較複雜 - 成本高大 - 幾乎等於是另一個完全一模一樣的 server ( 但是不能拿來使用,等發生狀況才來支援 ) #### Warm site(溫備援站) - 與使用的 server 相同或相似的系統和網路執行環境,server 有定期備份資料 - 平常 server 是關機狀態沒有運作,有問題才開機。 - 只會開 DB server 把資料同步 - 一旦發生災難可開啟 server,把資料庫讀入,代替原本的 server 執行。 - 優點 - 成本會比熱備援站還低 - 資料丟失可能性較小 - 缺點 - 復原的時間比較熱備援久 - 優缺點就是綜合冷備份和熱備份 #### Cold site(冷備援站) - 平常 server 是關機狀態沒有運作,有問題才開機。 - 只有存備份檔,連 DB server 都沒有,只有把 DB 備份檔傳到支援的 server 而已 - 發生災難時,要開啟 server,載入備份的資料,才可代替原本的 server 執行。 - 優點 - 通訊環境要求不高 - 成本最低 - 不容易受到網路攻擊 - 缺點 - 恢復時間較長,一般要數天至1周 - 資料完整性與一致性較差 #### 比較 | | 冷備援 | 溫備援 | 熱備援 | | ------------------ | ------ | ------ | ------ | | 通訊環境要求 | 低 | 中 | 高 | | 資料完整性與一致性 | 差 | 中 | 好 | | 恢復時間 | 長 | 中 | 短 | | RTO | 大 | 小 | 中 | | RPO | 大 | 小 | 小 | | COST | 低 | 中 | 高 | ## 容錯 : 磁碟陣列(RAID)(Redundant Array of Independent Disks) - 由來 - 單顆硬碟空間不夠 - 單顆硬碟空間讀寫速度不夠快 - 怕一顆硬碟壞了就完了 - 功能 - 增加空間 - 是將多台硬碟堆疊起來構成一個高容量『 虛擬磁碟 Virtual Disk 』 - 加快讀寫速度 > 每顆硬碟都有讀寫上限,同時對所有硬碟分散讀寫就會比較快 - 資料可靠性增加 > 『容錯機制』 ### 分類 #### RAID 0 - 由兩台硬碟所組成,1TB + 1TB = 2TB ![](https://i.imgur.com/pAOLMyq.png =250x) > [圖片來源](https://blog.router-switch.com/2018/01/a-guide-for-storage-newbies-raid-levels-explained/) - 把資料分散儲存到多台硬碟 - 優點 - 增加空間 ( N ) - 讀取速度比單個硬碟快 - 缺點 - 資料可靠性沒有增加 > 只要一台故障就無法使用(無『容錯功能』) #### RAID 1(Mirror) - 由兩台硬碟所組成,1TB + 1TB = 1TB ![](https://i.imgur.com/jHwCZhs.png =250x) - 把資料透過鏡像功能(Mirror)複製到另一台硬碟 - 一般使用者最常使用的磁碟陣列 - 優點 - 資料可靠性提升 - 缺點 - 空間沒有增加 - 讀取速度沒有增加 :::info 嚴格上來說,RAID1 無法歸類 RAID,因為它不是 Parity 運算 :::warning Parity 運算 - 要是其中一個硬碟那個資料不見,可以透過剩下兩個來還原 - 兩個位元相加後除2取餘數,相當於 XOR | 硬碟A | 硬碟B | 硬碟C | | -------- | -------- | -------- | | 0 | 0 | 0 | | 0 | 1 | 1 | | 1 | 0 | 1 | | 1 | 1 | 0 | ::: #### RAID 2 - 由三台硬碟所組成,1TB + 1TB + 1TB = 2TB ![](https://i.imgur.com/N9Apm5F.png =300x) - 把資料儲存到兩台、另一台存計算後的 ECC(Error-Correcting Code) :::info **ECC** - 偵測和修正單個 bit 的錯誤 - ex. hamming code > [補充資料](https://yaojordan.medium.com/%E8%A8%88%E6%A6%82-hamming-code-%E6%BC%A2%E6%98%8E%E7%A2%BC-78102d680c78) ::: - 優點 - 資料可靠性提升 - 空間增加 - 缺點 - 讀取速度慢(算 hamming code) - RTO 比 RAID 3、4 還大 #### RAID 3(bit-interleaved parity) - 最少需要 3 台硬碟, 1TB + 1TB + 1TB = 2TB ![](https://i.imgur.com/JLPooEp.png =500x) > [圖片來源](https://www.golinuxhub.com/2014/04/raid-levels-0-1-2-3-4-5-6-01-10/) - 把資料用 bit 為單位切開,分別儲存在兩台硬碟,另一台存 parity 值 - 優點 - 空間增加 - 資料可靠性提升 - 順序的讀寫表現很好 - 缺點 - 非順序的讀取速度慢 #### RAID 4(block-interleaved parity) - 最少需要 3 台硬碟, 1TB + 1TB + 1TB = 2TB ![](https://i.imgur.com/f6c9rUN.png =400x) - 2 台放資料、 1 台放 Parity 值 - 把資料用 block 為單位切開,分別儲存在兩台硬碟 - 優點 - 空間增加 - 資料可靠性提升 - 讀取速度 - 缺點 - 恢復難度較大 #### RAID 5(block-interleaved parity organization) - 最少需要 3 台硬碟, 1TB + 1TB + 1TB = 2TB ![](https://i.imgur.com/uwiAQ4i.png) - 將 Parity 資訊平均儲存到每塊硬碟上 - 無論是哪一台硬碟受損,RAID 5 容量不會因此減少,都是維持原來 2 台硬碟的容量。 - 優點 - 空間增加 - 讀寫速度增加 - 資料可靠性提升 - RTO 比 RAID 3、4 還小 - 缺點 - 如果兩台硬碟都故障,就無法處理,於是又有發展出底下的方法 ##### RAID 5 + Spare - 最少需要 4 台硬碟, 1TB + 1TB + 1TB + 1TB = 2TB - 三台硬碟組成 RAID 5 ,第四台硬碟設定為「Hot Spare」功能。 - Spare 保持空白的作為備用,萬一有 1 台硬碟故障時,可立刻自動重建,不必等人發現再去找台空白硬碟插入。 - 優點 - 2 台硬碟在不同時間故障可重建,(但不接受同時故障) #### RAID 6 - 最少需要 4 台硬碟, 1TB + 1TB + 1TB + 1TB = 2TB ![](https://i.imgur.com/arWs4sM.png) - 把資料和 Parity 分散儲存,計算兩種 Parity 的值佔 2 台硬碟的容量 - 優點 - 空間增加 - 資料可靠性提升 - 缺點 - 讀寫速度較慢(比 RAID 5 慢) #### RAID 10(RAID 1 + 0) - 至少四個硬碟,( 1TB + 1TB ) + ( 1TB + 1TB ) = 2TB ![](https://i.imgur.com/WyndhKt.png =400x) - 簡單來說,是「RAID 1」與「RAID 0」兩種陣列的合併 - 先建立把資料分散,再複製到兩顆硬碟( 一份資料有存兩份 ) - 壞兩顆硬碟還能正常運作,但如果是在同一組會導致 RAID 損毀 - 優點 - 空間增加 - 資料可靠性提升 - 讀寫速度增加 - 缺點 - 成本高 #### RAID 01(RAID 0 + 1) - 至少四個硬碟,( 1TB + 1TB ) + ( 1TB + 1TB ) = 2TB ![](https://i.imgur.com/uHY3cST.png =350x) > [來源](https://zh.wikipedia.org/wiki/File:RAID_01.svg) - 先建立把資料複製,再分散到兩顆硬碟 - 優點 - 空間增加 - 資料可靠性增加 - 讀寫速度增加 - 缺點 - 只要其中一台硬碟故障,同一組 RAID 0 便無法讀取 - 成本高 #### JBOD(Just a Bunch Of Disks) ![](https://i.imgur.com/KOPXVK8.png =400x) > [圖片來源](https://www.minitool.com/lib/jbod.html) - 資料按照順序儲存 - 空間增加 - 資料可靠性沒有增加 - 讀寫速度沒有增加 #### 比較 | | RAID 0 | RAID 1 | RAID 2 | RAID 3 | RAID 4 | RAID 5 | RAID 6 | RAID 5 + Spare | RAID 10 | RAID 01 | JBOD | | ----------------------- | ------ | -------------- | ------ | ------ | ------ | ------ | ------ | -------------------- | ------- | ------- | ---- | | 容錯等級 | NO | 1 台 | 1 台 | 1 台 | 1 台 | 1 台 | 1 台 | 2 台(限非同步故障) | 2台 | 2台 | 0 | | 需要硬碟數 ( 影響 COST ) | 2 以上 | 2 以上(偶數) | 3 以上 | 3 以上 | 3 以上 | 3 以上 | 4 以上 | 4 以上 | 4 | 4 | 1 | | 儲存容量 | N | N/2 | N-1 | N-1 | N-1 | N-1 | N-2 | N-2 | N-2 | N-2 | N | > 讀取速度(由快到慢排序) : RAID 01 = RAID 10 > RAID 0 > RAID 1 > RAID 3 = RAID 4 = RAID 5 = RAID 5 + Spare > RAID 2 > RAID 6 > JBOD 讀取速度 = 單顆硬碟 > FIXME : 補 N > FIXME : 分成讀和寫的速度、還原速度 [LSA 備份參考資料](/LRwNLHsDQT2ASZF3asUj0Q)

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully