使用 Navicat Premium 12 自動運行數據庫複製

與同步(使兩個數據庫的模式和數據同步的一次性過程)不同,複製是一個連續(自動)在兩個數據庫之間重現數據的過程(儘管模式更新也是可能的)。複製可以異步完成,因此不需要永久連接兩個數據庫,或者可以在非高峯時間,數據庫服務器流量很少時進行,例如在深夜時間。

複製的主要作用是創建所有用戶數據庫的合併存儲庫和/或在所有用戶之間傳播相同級別的信息。在任何一種情況下,結果數據庫都是一個分佈式數據庫,用戶可以在其中訪問與其任務相關的數據,而不會干擾其他人的工作。數據庫複製被稱爲規範化,爲了消除用戶之間的數據模糊或不一致。

在 Database Synchronization Strategies(數據庫同步策略)白皮書中,我們使用 Navicat Premium 數據庫管理系統探索了同步兩個相同和不同類型的數據庫的策略。在今天的文章中,我們將介紹如何使用 Navicat Premium 的新“自動運行”工具自動運行行數據庫複製。

複製類型

數據庫複製有至少三種不同的方式:

  • 快照複製:一臺服務器上的數據複製到同一臺或不同服務器上的另一個數據庫。
  • 合併複製:來自兩個或多個數據庫的數據被合併到一個數據庫中。
  • 事務複製:用戶收到數據庫的完整初始副本,然後在數據更改時接收定期更新。

在分佈式數據庫管理系統(DDBMS)中,對一個位置的數據執行的更改、添加和刪除會自動反映在存儲在所有其他位置的數據中。這樣做可確保每個用戶訪問與所有其他用戶相同的數據集。

與同步一樣,複製可以是同構的也可以是異構的:

  • 同構:相同的源和目標數據庫,即 Percona 到 Percona,MariaDB 到 MariaDB,MySQL 到 MySQL。
  • 異構:不同的源和目標數據庫,即 Oracle到Microsoft SQL Server,PostgresSQL 到 Amazon DynamoDB,MySQL 到 Amazon Aurora。

當一個或多個外部業務夥伴使用與我們自己不同的數據庫類型的情況出現時,就需要使用異構複製。兩種環境之間的自動定期數據複製通常是這種安排的組成部分。

Navicat Premium 的自動運行工具

Navicat Premium 的新自動運行工具在版本 12 中引入,具有易於使用且直觀的界面,可用於創建自動的批處理作業。自動運行是在一個或多個定期間隔運行一個進程,並可在特定日期和時間開始和結束,就像 Windows 任務計劃程序一樣。除了複製之外,它還可用於各種工作,包括備份、查詢和報表。

圖 1:Windows 中的 Navicat Premium 12 自動運行工具

 

圖 2:macOS 中的 Navicat Premium 12 自動運行工具

用戶數據庫

我們將使用 Sakila 示例 MySQL 數據庫作爲我們的用戶數據庫。它由 MySQL AB 文檔團隊的前成員 Mike Hillyer 開發,專門用於提供用於書籍、教程、文章等的標準模式。

該數據庫以電影業爲主題,涵蓋從演員和電影製片廠到影碟出租店的所有內容。如果你有興趣,可以在MySQL Dev 網站上查看完整的模式。

有關使用 Navicat設置Sakila數據庫的說明,請參閱 databasejournal.com 上的Generating Reports on MySQL Data(生成 MySQL 數據報表)一文。


Navicat Premium 12 中的 Sakila MySQL 數據庫結構

快照複製

如上所述,快照複製通過將數據從一個數據庫複製到同一臺或不同服務器上的另一個數據庫,使兩個數據庫同步。這是三種類型中最簡單的一種。

創建數據同步工作

首先必須創建數據同步配置文件,以便將其作爲複製進程自動運行。在 Database Synchronization Strategies 白皮書中描述了在 Navicat Premium 12 中實行同構和異構同步的步驟。出於本教程的目的,我們將在 sakila 和 sakila2 數據庫之間進行同構同步作爲第一個示例。

提示:創建 sakila 數據庫後,可以通過右擊導航窗格中的連接並選擇“新建數據庫”來創建 sakila2 數據庫。然後在彈出窗口中輸入數據庫名(“sakila2”)。

打開數據同步嚮導:

 

 

  • 從菜單欄中選擇“工具”->“數據同步”。
  • 數據同步的“選項”選項卡僅包含幾個比較選項的複選框。我們可以不去設置它們:/li> 

     

  • 數據同步嚮導的下一步是映射表。可以通過下拉列表選擇目標表。在這例子中,我們不需要提供任何映射指令,因爲兩個數據庫中的表是相同的:
  • 比對數據後,窗口顯示將在目標表中插入、更新或刪除的記錄數。如果你不想包含具有相同數據的表和具有不同結構的表(即換句話說,不會更新的表),則可以取消勾選“顯示相同的表和其他”。還有一些複選框可取消選擇表或你不希望應用於目標的操作。

    在列表中選擇一個表將在底部窗格顯示源表和目標表的數據。源和目標之間不同的值會高亮顯示。與在頂部窗格中一樣,你可以取消勾選你不想應用於目標的記錄。

“不同”選項

可以從下拉列表中選擇要顯示的差異類型。下面是可用的選項:

  • 不同:顯示源表和目標表中所有不同的記錄。
  • 插入:僅顯示目標表中不存在的記錄。
  • 更新:僅顯示源表和目標表中存在但具有不同值的記錄。
  • 刪除:僅顯示源表中不存在的記錄。
  • 相同:顯示源表和目標表中存在並具有相同值的記錄。
  • 全部行:顯示源表和目標表中的所有記錄。

在我們的例子中,選擇“更新”或“相同”將顯示零行,因爲沒有要更新的行(僅插入)而且沒有相同的行:

和以前一樣,點擊“部署”按鈕會生成並顯示“部署腳本”:

此屏幕與之前的屏幕一樣,包含“保存配置文件”按鈕,可讓你保存設置以供將來使用。此特定屏幕還有一個用於保存“部署腳本”的按鈕。

你仍可以“重新比對”這兩個數據庫,或繼續“運行”部署腳本。這裏有一個“遇到錯誤時繼續”複選框。當勺選了此框,在遇到錯誤時部署不會停止。

在腳本運行時,你可以在“信息日誌”中查看其進度。它顯示已處理的記錄數目和已完成的百分比:

關閉對話框後,我們可以確認 sakila2 數據庫的表中有數據:


不要忘記保存配置文件,因爲批處理作業將使用它。

創建批處理作業

我們現在將使用 Navicat 的自動運行工具設置在 sakila 和 sakila2 數據庫之間的定期複製。

 

 

  • 首先,點擊主工具欄中的“自動運行”按鈕。
  • 然後點擊“對象”工具欄中的“新建批處理作業”以打開新建批處理作業選項卡。
  • 在“對象”窗格中瀏覽源連接、數據庫和/或模式。這將使該數據庫的已保存的工作顯示在底部的“可用的工作”窗格中。
    在“可用的工作”窗格中,選擇“數據同步”工作類型,然後雙擊或拖動工作將其從“可用的工作”列表移動到上面的“已選擇的工作”列表中。(你可以以相同的方式從“已選擇的工作”列表中刪除工作。)
  • 點擊自動運行工具欄上的“保存”按鈕,並在“保存”對話框中提供描述性名稱。

這將啓用“設置任務計劃”和“刪除任務計劃”按鈕。

“常規”選項卡

在“計劃任務”對話框的“常規”選項卡中,你可以提供該任務的說明。此選項卡更提供多個運行選項。

 

你還可以選擇將任務作爲“隱藏”運行,並將其配置爲在特定操作系統上運行。

  • 在“安全選項”框中,你可以配置要在其下運行任務的用戶或組帳號。有一個選項是無論用戶是否登錄都會運行任務。如果選擇該選項,你需要在保存計劃時,在“Windows 任務計劃程序”中提供操作系統用戶的密碼。

觸發任務

“觸發器”選項卡列出了任務的計劃。可以將任務配置爲以各種計劃運行,包括一次、每天、每週、每月,以及每種計劃的任何排列。

點擊“新建...”按鈕以顯示“新建觸發器”對話框:

相同的任務可以根據多個計劃運行。例如,我們可以安排我們的數據庫同步任務在每個月的第一天以及每個第二個星期日運行:

設置電子郵件通知

發件人

指定發件人的電子郵箱。例如:“[email protected]”。

收件人, 副本

指定每一個收件人的電子郵箱,以逗號或分號 (;) 分隔。

主旨

以自定義格式指定電子郵件的主旨。

主體

填寫電子郵件的內容。

主機 (SMTP 服務器)

爲出去的信息輸入簡單郵件傳輸協定(SMTP)服務器。

端口

輸入連接出去的電子郵件(SMTP)服務器的端口號。

使用驗證

如果你的 SMTP 服務器需要驗證以發送電子郵件,可勾選這個選項,並輸入“用戶名”和“密碼”。

安全連接

指定連接使用“TLS”、“SSL”安全連接或“永不”。

發送測試郵件

Navicat 將會發送一個測試郵件給你顯示是成功或失敗。

完成自動工作的配置後,可以點擊“自動運行”工具欄中的“開始”按鈕對其進行測試。

合併複製

顧名思義,合併複製將來自兩個或多個數據庫的數據組合到一個數據庫中。作爲練習,我們將 sakila 和 sakla2 數據庫的內容合併到名爲“sakila_merged”的第三個數據庫中,該數據庫將存儲合併的數據集。

所需的數據同步工作

合併複製工作將要求我們創建並保存兩個數據同步配置文件:每個源數據庫一個。這些步驟與上面的“創建數據同步工作”部分完全相同,因此我們在此不再重複了。

創建批處理作業

批處理作業可能由源數據庫或目標觸發,就像我們在上一節“快照複製”中所做的那樣。但是,通常從目標數據庫觸發批處理作業是最容易的,因爲它們都將處同一服務器上。我們也會這樣做。

 

 

  • 點擊主工具欄中的“自動運行”按鈕。
  • 然後,點擊“對象”工具欄中的“新建批處理作業”以打開新的批處理作業選項卡。
  • 在“對象”窗格中瀏覽源連接、數據庫和/或模式。這將使該數據庫的已保存的工作顯示在底部的“可用的工作”窗格中。
  • 在“可用的工作”窗格中,選擇“數據同步”工作類型,然後雙擊或拖動工作將其從“可用的工作”列表移動到上面的“已選擇的工作”列表中。
  • 點擊自動運行工具欄上的“保存”按鈕,並在“保存”對話框中提供描述性名稱。這將啓用“設置任務計劃”和“刪除任務計劃”按鈕。
  • 在“計劃任務”對話框的“常規”選項卡中,你可以提供該任務的說明。此選項卡更提供多個運行選項。
  • “觸發器”選項卡列出了任務的計劃。任務可以配置爲以各種計劃運行,包括一次、每天、每週、每月,以及每種計劃的任何排列。這次將運行兩個工作而不是一個。
  • 完成自動工作的配置後,可以點擊“自動運行”工具欄中的“開始”按鈕對其進行測試。

事務複製

在“合併複製”中,只有合併的數據庫包含所有最新數據。而每個源數據庫僅包含基線數據,以及自首次填充以來插入的內容。在事務複製中,用戶會收到數據庫的完整初始副本,然後在數據更改時接收定期更新,以便所有數據庫都使用相同的數據集。保持多個數據庫同步使事務複製成爲最複雜的複製類型。

所需的數據同步工作

使用事務複製,所需的數據同步作業數量會大幅增加,因爲必須跨所有用戶數據庫複製數據。例如,假設我們有三個名爲 sakila、sakila2 和 sakila3 的數據庫。我們可以使用總共六個數據同步工作在所有用戶數據庫中合併和傳播完整數據集:有三個用於合併用戶數據庫,另外三個使用合併數據集更新它們。

這是包含所有六個工作的自動運行嚮導:

爲了有足夠的時間完成數據合併,最好將作業分成兩部分,第一部分爲合併數據,第二部分在指定的延時後用完整數據集更新用戶數據庫。

以下是將合併數據集傳播到用戶數據庫的自動運行的例子:

在運行第一次工作兩小時後運行這項工作應該有足夠的時間來完成合並。因此,如果第一次工作計劃在午夜運行,我們會將此工作設置爲凌晨 2 點開始:

總結

在數據庫同步策略白皮書的後續內容中,我們介紹瞭如何使用 Navicat Premium 12 的自動運行工具自動運行數據庫複製。與其同步工具結合使用,DBA 能設置預定義的計劃,自動運行各種類型的複製。

來自 Navicat 博客 

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