我用 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 注意事項
- 注意同步方向, 要明確從哪裏到哪裏。
- 默認情況,從源到目標,目標庫中的對應存在會刪除被刪除,包括數據和結構。如果目標表裏面的數據不應該被刪除,則這種傳輸方式會是一種事故,特別注意。數據同步是一種覆蓋的傳輸。
數據傳輸務必仔細,拉其他人一起確認 review。可以對舊的庫先做備份,這樣確保萬無一失。
1.4 其他工具
像上面的這種情況其實還有很多其他工具可以實現的。
工具 | 優勢 | 劣勢 |
---|---|---|
dump | 可以dump整個庫; 也能dump特殊幾個表 | 比較粗粒度; |
數據庫廠商 | 工具成熟 | 付費;需要網路白名單配置 |
當然還有其他工具,不再舉例。
1.5 小結
- 如果你只需同步部分字段到目標表,這個工具將是一個不錯的選擇
- 目標庫是全新的,將舊的數據庫都傳輸到新的庫;不需太多的設置,直接採用默認就好了。
- 按批傳輸,效率比較高。
目標庫存在表,也存在數據,要找出差異呢?只同步差異呢?
這是我四五年前遇到的一個升級問題。還記得那些加班的夜晚,直到我遇到 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 全局查找
全局搜索,查找關鍵字。但用的比較少。
其他功能就不再一一介紹了。感興趣的可以自行下載進行研究。
七、最後總結
- 保持對數據的敬畏之心,任何的數據變更都要慎重。數據變更做好 review
- 上面功能,建議先自行練習和測試,熟悉後再到生成環境使用
紙上得來終覺淺,絕知此事要躬行!