最近更新文章
2018/10/19
羽昇國際深耕雲端市場 展示專業技術與經驗
2018/10/19
Nutanix .NEXT On Tour 助力企業制勝多雲時代
2018/10/19
宜鼎整合AIoT策略聯盟 從雲到端落實五大智慧應用極致整合
2018/10/19
金融創新須資安縱深防禦
2018/10/18
關鍵資料庫上雲 自主可靠運行
2018/10/17
Arm Pelion 物聯網平台 新生力軍 Arduino、myDevices 與 Intel
2018/10/17
NVIDIA 攜手 Oracle 將雲端應用導入下一代分析、機器學習與 AI
2018/10/17
APEC TEL 取經遠傳打造智慧城市經驗
2018/10/17
八成詐騙郵件來自非法寄件者或含可疑網址
2018/10/17
何謂適當安全維護措施 個資法無具體規定
2018/10/17
邊緣運算帶來新角色 微型資料中心應運而生
2018/10/16
Google 助理講中文 Pixel 3正式登台
2018/10/16
聚焦區塊鏈世代之資訊與數據安全議題
2018/10/16
路孚特大數據實驗室率先進駐政大創新園區
2018/10/16
ShareTech HiGuard X 多功能 UTM
2018/10/16
思納捷攜手資策會、遠傳 在新北導入「校園智慧能源雲」
2018/10/16
Xilinx 與華為在中國推出 FPGA 雲端即時視訊串流解決方案
2018/10/16
Nutanix 企業雲操作系統超融合基礎架構解決方案通過 SAP HANA 認證
2018/10/16
消除IT部門控管隱憂 UEM集中管理異質端點
2018/10/16
叢集伺服器系統升級實戰 直上WS2016免停機(上)
2018/10/15
Juniper Contrail Enterprise Multicloud 滿足企業多雲策略需求
2018/10/15
Teradata 推智慧分析平臺 運用 AI 技術即時分析、精準決策
將此篇文章跟 Facebook 上的朋友分享將此篇文章跟 Plurk 上的朋友分享將此篇文章跟 Twitter 上的朋友分享列印轉寄
2018/7/17

妥善保護資料庫金礦 定期備份成基本功

實作MySQL備份還原 詳實說明三種機制模式

吳惠麟
如何安全地保存資料一直是IT管理的重要項目,而勤做資料備份絕對是最重要的例行工作。本文將以MySQL資料庫為例,實際示範幾種資料備份的機制,包括以mysqlpump進行備份、透過XtraBackup備份資料庫,以及使用MySQL內建的GTID機制來同步主資料庫與從資料庫內的資料。
處於一個資訊爆炸的時代,相信資料對企業而言是最彌足珍貴的資產,而對於一個資料庫管理者而言,定時的備份作業也是不可或缺的作業。因此本文將以MySQL資料庫伺服器(採用MySQL 5.7.16版本,作業系統為CentOS 7)為例來說明並實作幾種資料備份的機制。

在說明之前,先簡單地定義主資料庫(Master)和從資料庫(Slave)的角色。主資料庫表示系統實際在使用的資料庫,從資料庫則是複製主資料庫資料的備份資料庫,而資料庫伺服器指的即是MySQL。

以mysqlpump進行備份

一般想到備份資料庫資料時,通常都會想到利用mysqldump程式來傾印(Dumper)資料庫的內容,並以SQL指令的形式來保存,此種備份方式又稱為邏輯備份。之後,再利用執行此檔案內的SQL指令來回復資料庫的資料。

在MySQL 5.7之後的版本,除了mysqldump程式外,還提供了一個名稱為mysqlpump的備份程式。

事實上,此程式為mysqldump的衍生,同樣也是利用SQL指令的形式來保存資料庫的資料,但增加了如下所述的特色:

1. 可利用平行處理的方式來備份資料庫,相對mysqldump而言,可加快備份的效率。

2. 具有更好的備份功能。包括可備份儲存函式(Storage Function)、觸發函式(Trigger Function)等資訊。

3. 可利用SQL指令來儲存相關系統資料庫的資訊,例如以CREATE USER、GRANT等SQL指令來儲存,而不是過去利用INSERT指令來儲存系統資料庫的資訊,如此可讓使用者更容易得知系統資料庫的資訊。

4. 可直接產生壓縮後的備份文件。

接著,說明mysqlpump常用的選項,內容如下所述:

-- add-drop-database:在執行建立資料庫的SQL指令之前,加上刪除資料庫的指令。

--add-drop-table:在執行建立資料庫表格的SQL指令之前,加上刪除資料庫表格的指令。

--add-drop-user:在新增資料庫用戶的SQL指令前,加上刪除資料庫用戶的指令,此參數需要與--users參數同時使用,否則將不會生效。

--add-locks:在執行備份的作業時,使用鎖資料庫表格(LOCK TABLES)機制並在備份完成後再解鎖(UNLOCK TABLES),以避免在備份的過程中,資料庫有異動,而造成資料不一致的問題。要特別注意的是,使用此選項時不能夠開啟平行備份的的功能(須設定--default-parallelism=0來關閉平行備份功能)。

--all-databases:設定備份所有的資料庫資訊。

--bind-address:由於資料庫伺服器上可能會設定多個IP(例如伺服器有多個網路介面),因此可利用此選項來設定連接MySQL伺服器的網路介面。

--complete-insert:設定備份的SQL指令為完整的insert指令。

--compress:設定使用壓縮方式來壓縮客戶端和服務器進行傳輸的所有數據。

--compress-output:設定壓縮所使用的演算法,目前支援的壓縮演算法有LZ4和ZLIB。

--databases:設定要進行備份的資料庫,可利用空格來設定多個資料庫以進行備份。

--default-parallelism:設定平行處理時所使用的線程(Thread)數,預設為2,如果設成0,表示不使用平行處理備份。

--events:備份資訊庫的事件,預設為開啟,如果要關閉時,須使用--skip-events參數。

--exclude-databases:在備份時,指定排除該參數指定的資料庫,可利用逗號分隔多個資料庫,就能夠設定排除多個資料庫。

--skip-dump-rows:設定只備份資料庫表格的結構,並不備份資料庫的數據。

-- max-allowed-packet:設定傳輸時所使用的最大緩衝區(Buffer)的空間。

--user:設定在執行備份作業時,所使用的使用者名稱。

--password:設定在執行備份作業時所使用的使用者密碼。

--watch-progress:設定在備份時須即時顯示備份的進度資訊。

接下來,簡單說明幾個常用的備份範例。

若要備份test資料庫(包括資料庫結構與資料),並且將相關資訊儲存在test.sql檔案的時候:

這篇文章讓你覺得滿意不滿意
送出
留言
顯示暱稱:
留言內容:
送出