我用 Navicat 這些技能少加了好多班,也爲公司掙了不少w

我用 Navicat 的這些技能少加了好多班,也爲公司掙了不少w

今天又用 Navicat 解決了一個數據同步的需求,財務又到賬一筆收入.......

本文我將結合我過去的實踐,給大家推薦一款數據庫的運維工具。給大家呈現一下竟然可以用 Navicat 解決這些實際問題 。

熬了幾個夜,毫無保留地將這些技能分享,只爲博的一個贊,哈哈哈......😁

功能概覽

核心功能 描述
數據傳輸 將 A 處的數據傳輸到 B 處。
數據同步 將 A 處的數據和 B 處的數據進行比較,找出差異進行同步。
結構同步 將 A 處的結構和 B 處的結構進行比較,包括函數、存儲過程等。可以導出對應腳本
轉儲、備份 將數據進行導出。(結構和數據、數據)
快速生成數據 快速生成測試數據;性能壓測生成數據
服務器監控 監控服務器的配置數據
逆向工程 快速生成 ER 圖
其他功能 ......

以上功能,將結合實際案例,以圖文並茂的方式進行演示。

 一、數據傳輸

這裏解釋一下數據傳輸的概念:簡單理解爲將 A 裏面的數據都傳輸到 B 中。

如下所示:將數據庫 database1 傳輸到數據庫 database2 中。

1.1 需求場景

場景 描述
數據庫服務商更換 第一年購買了阿里雲的 MySQL 數據庫,由於價格原因原因等, 第二年換成華爲雲的 MySQL。需要將阿里雲 MySQL 的數據遷移到華爲雲 MySQL 數據庫
數據庫資源升級 A 數據庫對應存儲資源快滿了,將其數據庫中的數據遷移到資源更好的 B 數據庫中
資源安全升級 由於安全等,將環境 A 的數據庫遷移到環境 B 中
數據初始化 新項目系統基礎數據從預發環境遷移到正式環境等

場景還有很多,不一一舉例,那麼用 Navicat 如何實現這一需求呢,請往下看

1.2 Navicat 演示數據傳輸

以測試例子進行舉例說明

第一步:找到數據傳輸

第二步:確定數據傳輸方向

這一步,確定好方向。方向反了就是事故了。

第三步:高級配置設置(特殊場景配置)

第四步:其他選型配置設置

如圖已經標註注意點。

第五步:開始執行

創建前刪除目標對象: 如果目標庫中有對應的表,勾選上會被刪除。如果不勾選,那麼第一個遇到錯誤時繼續則必須要勾選,否則執行創建創建的檢查存在就直接停止了。不再繼續了。

第六步:執行結果

通過這幾步,數據就傳輸完成了。

1.3 注意事項

  1. 注意同步方向, 要明確從哪裏到哪裏。
  2. 默認情況,從源到目標,目標庫中的對應存在會刪除被刪除,包括數據和結構。如果目標表裏面的數據不應該被刪除,則這種傳輸方式會是一種事故,特別注意。數據同步是一種覆蓋的傳輸

數據傳輸務必仔細,拉其他人一起確認 review。可以對舊的庫先做備份,這樣確保萬無一失。

1.4 其他工具

像上面的這種情況其實還有很多其他工具可以實現的。 

工具 優勢 劣勢
dump 可以dump整個庫; 也能dump特殊幾個表 比較粗粒度;
數據庫廠商 工具成熟 付費;需要網路白名單配置

當然還有其他工具,不再舉例。

1.5 小結

  1. 如果你只需同步部分字段到目標表,這個工具將是一個不錯的選擇
  2. 目標庫是全新的,將舊的數據庫都傳輸到新的庫;不需太多的設置,直接採用默認就好了。
  3. 按批傳輸,效率比較高。

目標庫存在表,也存在數據,要找出差異呢?只同步差異呢?

這是我四五年前遇到的一個升級問題。還記得那些加班的夜晚,直到我遇到 Navicat 這個技能。

二、數據同步

2.1 需求場景

我曾用這個數據同步功能做過兩個數據庫的差異對比!

下面是發佈在 CSDN 的博客文章,是2018年,一晃 6年過去了.....

場景 描述
系統升級,找到灰度與生產之間的配置數據差異。 找到差異進行執行

當年做 saas 產品,都是先升級產品,再去升級定製的企業; 每次做產品迭代時都要找到大量差異數據進行執行。在沒有這個能力之前都是手動處理,非常麻煩。 

2.2 Navicat 演示數據同步

第一步:選擇數據同步

第二步:確認數據同步的方向

第三步:填寫配置

第四步:比較差異

根據實際情況,勾選具體項目。

說明:這種比較是十分消耗資源的操作。 不建議用同步方式去做數據傳輸。因爲會有比較過程。

2.3 注意事項

這是同步過程,需要特別注意,否則會出問題! 會有刪除、更新的情況。 這步操作一定要慎重處理。雖然工具很好用,但一旦操作錯誤,會是重大故障!

當然,除了數據同步以外, 數據庫常常會存儲過程(函數)同步等。 以前做 saas 產品,升級的時候會遇到存儲過程的升級,所以也會非常麻煩。 找出差異腳本估計是我那一個周的工作,但是自從學會下面這個功能以後,老闆都對我刮目相看了。

三、結構同步

比較兩個數據庫之間的結構差異,包括表、視圖、函數(存儲過程) 等

3.1 需求場景

這個是用得最多的一種能力。 因爲產品常常升級,因此會經常遇到增加字段、增加索引、增加函數等。 對於傳統項目開發,每次升級都是比較大的改動,常常會伴隨大量的數據庫變更。因此要正確、無遺留地整理出 SQL 升級腳本並不是一件簡單的事情。有了這個功能後,我解放了。

場景 描述
系統升級,需要升級表結構、比如增加了一個字段;需要升級函數、索引等等 通過比較找到與線上數據庫之間的差異,形成 DDL 腳本。快速升級到線上。

根據 DDL 腳本,可以編寫出對應的回滾腳本

3.2 Navicat 演示結構同步

第一步:確定數據源

第二步:確定對象,包括數據表、視圖、函數等;這一步會生成腳本

生成差異腳本,需要進行詳細的比對,防止不必要的變更。

最後一步:檢查執行結果

3.3 注意事項

注意:可以反向生成回滾腳本,這是我的經典操作之一。 這樣到了線上出了問題,可以通過回滾腳本進行回滾,不一定要手動去整理寫出回滾腳本。

這一步,我會關注 DELETE、DROP 語句,通過搜索找出這些語句。重點 Review。

任何的變更都是很重要的,務必升級前拉會做好 review 。

四、轉儲 & 備份 & 導出嚮導 & 快速複製一張表

備份數據是一種非常好的行爲! 這些功能,可以備份表、存儲過程等。

4.1 需求場景

場景 描述
出於安全角度,備份數據 備份一張表、備份一個庫等,“有備無患”

4.2 Navicat 演示

轉儲 SQL 文件

可以選擇結構和數據、只有結構。 可以選擇針對一個表、或者一個庫;不能編輯具體字段。

備份

備份選型,功能更加豐富。可以選擇對象(表、視圖、函數)等。

導出嚮導

導出嚮導功能,將數據導出更多的格式,真的比想象更強大!

快速複製一張表

當需要對一張表做更新操作,爲了保證安全,可以快速複製一張表,做備份。

4.3 小結

*這些運維工具都是十分方便的。 在做一些高危操作的時,常常可以通過備份來達到“有備無患”。

五、快速生成測試數據

5.1 需求場景

場景 描述
測試同學需要進行性能測試,以前需要寫程序,寫腳本才能快速生成大量數據 快速生成壓測數據
開發一個新表,需要造一些數據做功能驗證 快速生成測試數據

5.2 Navicat演示

第一步:找到工具入口

第二步:確定表需要生成的數據量

第三步:可以根據高級選項,對生成的數據進行定製!

提效工具,真的太讚了!!!

5.3 小結

可以將這個功能推薦給你的測試朋友們,比手寫腳本快太多了。要是早知道這個功能,也不至於加班了

六、其他功能

6.1 服務器監控

知道 mysql 服務器運行時候的配置信息。可以快速進行調整。

除非你瞭解這些變量,否則不要修改它們!!!

6.2 逆向工程 or ER 圖

對於快速瞭解一個系統的表示非常方便的

6.3 全局查找

全局搜索,查找關鍵字。但用的比較少。

其他功能就不再一一介紹了。感興趣的可以自行下載進行研究。

七、最後總結

  1. 保持對數據的敬畏之心,任何的數據變更都要慎重。數據變更做好 review 
  2. 上面功能,建議先自行練習和測試,熟悉後再到生成環境使用

紙上得來終覺淺,絕知此事要躬行!

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