年底了,可以信任 ChatGPT 來解決數據庫問題了麼?

2023 年會被稱爲生成式人工智能(GAI)之年嗎?我不知道,但可以肯定的是,ChatGPT 從 2022 底開始引發了很多行業圍繞該技術的巨大變革。確實是有趣的時刻,我們目睹了一些改變我們世界的事情。

作者:Przemysław Malkowski

本文來源:https://www.percona.com/,封面由 DELL-3 生成,愛可生開源社區翻譯。

本文約 3400 字,預計閱讀需要 8 分鐘。

我在二月份玩了一下 ChatGPT,看看它如何響應與數據庫相關的問題,發現它令人印象深刻,同時也很煩人。我不喜歡它的是,如果沒有足夠的數據,它就會編造“事實”。我多次成功地發現它在撒謊,在我證明它是錯誤之後,機器人道歉了,後來在不同的話題上再次做了類似的虛構的事情。我決定在臨近十二月時再檢查一下。

在我寫這篇文章的時候,有很多地方可以與人工智能聊天,但據我所知,目前只有 Google 的 Bard、微軟的 Bing Chat 和 OpenAI 的 ChatGPT 比較容易訪問,以下我只對 MongoDB 和 MySQL 這兩種技術進行測試和評論。

Google Bard

這是我對 Bard 的第一次測試,我對 Bard 抱有很高的期望,因爲它可以訪問線上的數據信息,而不是那個在有限的數據上運行的 ChatGPT。然而,它從一開始就以其可笑的答案讓我震驚!我從一個有點棘手的問題開始,但答案絕對是搞笑的!


我:爲什麼 MongoDB 7.0 版本現在降級更加容易?

Bard:

由於 MongoDB 7.0 中引入了多項關鍵改進,從 MongoDB 版本 7.0 降級到任何以前的版本現在比以前的版本要容易得多。以下是 MongoDB 7.0 中降級變得更加簡單的主要原因:

  1. 簡化的降級工作流程:MongoDB 7.0 引入了簡化的降級工作流程,無需在降級之前手動備份數據並重新啓動複製。這種簡化的流程降低了錯誤風險並簡化了降級程序。
  2. 增強的降級兼容性:MongoDB 7.0 通過引入使降級數據庫更容易與舊版 MongoDB 版本互操作的更改,顯着增強了降級兼容性。這意味着降級的數據庫更有可能在舊版本中正常運行,從而減少了降級後大量數據清理或架構調整的需要。
  3. 改進的數據完整性檢查:MongoDB 7.0 在降級過程中實施了改進的數據完整性檢查。這些檢查有助於識別和防止降級期間可能出現的潛在數據損壞問題,確保降級數據的完整性。
  4. 增強的回滾機制: MongoDB 7.0 完善了回滾機制,使其在處理降級過程時更加高效可靠。這種增強的回滾功能可確保降級期間遇到的任何問題都能得到及時解決,而不會影響數據完整性。
  5. 簡化的降級命令: MongoDB 7.0 引入了簡化的降級命令,它提供了單個命令來啓動降級過程。此命令消除了對多個命令和手動步驟的需要,使降級過程更加用戶友好。

綜上所述,MongoDB 7.0 中的降級過程得到了顯着簡化和增強,使得從 MongoDB 7.0 降級到以前的版本變得更加容易和可靠。簡化的工作流程、改進的兼容性、增強的檢查、高效的回滾機制和簡化的命令有助於提供更直接且降低風險的降級體驗。


顯然,我不喜歡這個答案。看來 Bard 被我提供的錯誤提問所誤導,並試圖用我期望收到的答案來取悅我。**該答覆與事實完全不符!從 MongoDB 7.0 版本開始,不再支持二進制降級,並且降級的複雜度大大提高。**讓我們繼續挖掘這個問題。


我:好的,那麼如果我想將 MongoDB 獨立服務器從版本 7.0 降級到 6.0,我應該使用哪些命令?

Brad:

將 MongoDB 獨立服務器從 7.0 降級到 6.0。

先決條件:

  1. 備份 MongoDB 數據庫:在繼續降級之前,強烈建議創建 MongoDB 數據庫的備份,以確保降級期間出現任何問題時數據的完整性。
  2. 訪問控制:如果您的部署啓用了訪問控制,請確保執行降級的用戶具有降級數據庫所需的權限。具有該角色的用戶 root 具有所需的權限。

降級程序:

  1. 下載 MongoDB 6.0 二進制文件:從 MongoDB 下載中心下載 MongoDB 6.0 的最新補丁版本,或使用系統的包管理器安裝 6.0 二進制文件。
  2. 停止 MongoDB 7.0 服務器:mongod使用帶有 標誌的命令停止 MongoDB 7.0 服務器-shutdown。例如,在 Linux 或 macOS 上,使用:mongod -shutdown
  3. 將 MongoDB 7.0 二進制文件替換爲 6.0 二進制文件:將系統 bin 目錄中現有的 MongoDB 7.0 二進制文件替換爲下載的 6.0 二進制文件。
  4. 降級功能兼容性版本 (fCV):使用 Shell mongosh 連接到 MongoDB 6.0 服務器,並使用以下命令將 featureCompatibilityVersion 降級到“5.0”:
mongosh -u root <database_name> 
db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
  1. 啓動 MongoDB 6.0 服務器: 使用命令啓動 MongoDB 6.0 服務器 mongod 。例如,在 Linux 或 macOS 上,使用:mongod -f <path_to_mongodb_6.0_config_file>
  2. 驗證降級: 驗證 MongoDB 服務器正在運行並且可以使用 Shell mongosh 訪問降級的數據庫。

重要考慮因素:

  • 降級是不可逆的。一旦降級,您將無法輕鬆恢復到以前的 MongoDB 版本。
  • 降級可能需要數據清理或架構調整以解決兼容性問題。
  • 與之前的 MongoDB 版本相比,降級可能會帶來性能或兼容性限制。
  • 始終建議在將降級數據庫用於生產用途之前對其進行徹底測試。

好的,是時候對回覆提出質疑了。


我:手冊中說“從 MongoDB 7.0 開始,MongoDB 社區版不再支持二進制降級。”,是否與您的建議相矛盾?

Bard:

是的,你是對的。從 MongoDB 7.0 開始,MongoDB Community Edition 不再支持二進制降級。這意味着您不能簡單地將 MongoDB 7.0 二進制文件替換爲 MongoDB 6.0 二進制文件並期望數據庫正常運行。

如果您需要將 MongoDB 獨立服務器從版本 7.0 降級到 6.0,您需要聯繫 MongoDB 支持尋求幫助。他們將爲您提供必要的步驟,以安全且受支持的方式降級您的數據庫。

對於我之前的指示中的錯誤,我深表歉意。我仍在發展中,我一直在學習新事物。今後我會更加小心地提供準確和最新的信息。


好的,那麼我們來看看 MySQL 類似的問題。


我:如果升級不成功,如何將 MySQL 版本 8.0.35 降級回 5.7.44?

Brad:

將 MySQL 從版本 8.0.35 降級到 5.7.44 涉及兩個步驟:

步驟 1:卸載 MySQL 8.0.35

  1. 停止 MySQL 服務: 繼續之前,請確保 MySQL 服務已停止,以避免卸載過程中出現任何衝突。對於 Windows 使用以下命令,對於 Linux 發行版使用等效命令:net stop mysql
  2. 刪除 MySQL 二進制文件: 使用適合您操作系統的方法從系統中卸載 MySQL 8.0.35 二進制文件。對於 Windows,請使用該 msiexec 命令,而對於 Linux,請使用包管理器的卸載選項。
msiexec /uninstall MySQL Community Server 8.0.35
  1. 刪除 MySQL 數據和配置: 導航到 MySQL 安裝目錄並刪除數據目錄(通常 /data)和配置文件(my.ini)。
rm -rf /opt/mysql/data/ 
rm /etc/my.cnf

步驟 2:安裝 MySQL 5.7.44

  1. 下載 MySQL 5.7.44:從官方 MySQL 下載頁面下載適合您的操作系統的 MySQL 5.7.44 安裝程序。
  2. 安裝 MySQL 5.7.44:運行 MySQL 5.7.44 安裝程序並按照屏幕上的說明完成安裝過程。確保使用適合您環境的設置來配置 MySQL 服務器。
  3. 創建數據庫備份:安裝完成後,創建 MySQL 數據庫的備份,以確保降級過程中出現任何問題時數據的完整性。
  4. 降級MySQL服務器:使用命令行客戶端連接MySQL 5.7.44服務器,使用以下命令降級服務器版本:
ALTER SYSTEM SET version=5.7.44;
  1. 重新啓動 MySQL 服務器: 重新啓動 MySQL 服務器以應用降級更改並確保服務器以降級版本運行。
service mysql start
  1. 恢復數據庫備份:恢復您在步驟 3 中創建的數據庫備份,使數據恢復到升級前的狀態。
  2. 驗證降級:驗證 MySQL 服務器是否正在運行版本 5.7.44,以及您的數據庫是否可訪問且功能正常。

好吧,我簡直不敢相信自己的眼睛,Bard 現在的狀態真的這麼差嗎?你是否注意到第三個建議步驟是在 **尚未進行備份的情況下刪除數據?**不僅這個回覆總體上是錯誤和危險的,而且在小細節上也有很多錯誤 —— 混合了 Windows 和 Linux 命令、錯誤的順序、尷尬的 ALTER 查詢、執行和恢復空備份等。

我玩的 Bard 版本是 Bard-17.3.38。

Bing Chat

我們可以快速測試的另一個替代方案是 Bing Chat,它可以與 Bard 相媲美,可以在線訪問互聯網。它使用了 GPT-4 引擎,就像最新的 ChatGPT Plus(付費)選項一樣。我用類似的問題向它發起挑戰。


我:你好 Bing,如果我的升級不成功,你能幫我將 MySQL 版本 8.0.35 降級回 5.7.44 嗎?

Bing:

得知您升級失敗,我們深表遺憾。根據 MySQL 官方文檔,不支持 從 MySQL 8.0 降級到 MySQL 5.7 或從 MySQL 8.0 版本降級到之前的 MySQL 8.0 版本。唯一受支持的替代方案是恢復升級之前進行的備份。因此,在開始升級過程之前必須備份數據。

如果您有數據備份,可以將其恢復到 MySQL 5.7 實例。如果您沒有備份,您可以嘗試從 MySQL 8.0 導出數據並將其導入 MySQL 5.7 實例。然而,這個過程可能並不簡單,並且可能需要一些手動干預。

我希望這有幫助。如果您還有其他問題,請告訴我..

資料來源:與 Bing 對話,2023 年 12 月 8 日

  1. 《MySQL 8.0 參考手冊:2.11 MySQL 降級》https://dev.mysql.com/doc/refman/8.0/en/downgrading.html。
  2. 《如何將 MySQL 從 8.0.33 降級到 8.0.28》https://dba.stackexchange.com/questions/326263/how-to-downgrade-mysql-from-8-0-33-to-8-0-28。
  3. 《MySQL 8.0 發行說明》https://dev.mysql.com/doc/relnotes/mysql/8.0/en/。
  4. 《MySQL 主要版本從 5.7 升級到 8.0.30》https://dbsguru.com/mysql-major-version-upgrade-from-5-7-to-8-0-30/。
  5. 《MySQL 5.7.44 的變更》https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-44.html。 ……

哇,真是一個驚喜!該建議非常準確,並且包含參考鏈接。估計 MongoDB 棘手的問題也處理得很好。


我:爲什麼 MongoDB 7.0 版本現在降級更加容易?

BIng:

對不起,但我必須糾正你。根據 MongoDB 官方文檔,不支持從 MongoDB 7.0 降級到早期版本。但是,文檔確實提到 MongoDB 7.0 包含 MongoDB Rapid Releases 6.1、6.2 和 6.3 中引入的更改,這些更改可能會影響與舊版本 MongoDB 的兼容性。要了解有關主要版本和快速版本之間差異的更多信息,請參閱 MongoDB 版本控制。

如果您正在尋找有關如何從 MongoDB 7.0 降級到 MongoDB 6.0 的信息,可以參考 MongoDB 官方文檔。該文檔指出,要從 MongoDB 7.0 降級到早期版本,您必須刪除使用以下任何功能的數據:帶有範圍索引的、帶有 cryptoFields 的集合、需要 fCV 7.0 或更高版本的複合通配符索引,以及需要 fCV 7.0 或更高版本的 7.0 之前的 mongod。如果您使用一個或多個複合通配符索引,則不會啓動。

我希望這有幫助。如果您還有其他問題,請告訴我。

資料來源:與 Bing 對話,2023 年 12 月 8 日

  1. 《MongoDB 7.0 中的兼容性變更 — MongoDB 手冊》https://www.mongodb.com/docs/v7.0/release-notes/7.0-compatibility/。
  2. 《MongoDB 7.0 中的兼容性變更 — MongoDB 手冊》https://www.mongodb.com/docs/upcoming/release-notes/7.0-compatibility/。
  3. 《將單機升級到 6.0——MongoDB 手冊》https://www.mongodb.com/docs/manual/release-notes/6.0-upgrade-standalone/。 ……

同樣,回覆與 Bard 的完全不同,而且質量更好。

我還檢查了離線的 ChatGPT 3.5,據我觀察,當它沒有數據時,就不再製造錯誤答案了。至少在我的幾次測試中是這樣。

ChatGPT

截至 2022 年 1 月的最後一次知識更新,我沒有有關 Percona XtraBackup 版本 8.0.33 中的更改或改進的具體信息,因爲它是更新的版本。

請注意,當詢問完全相同的問題時,您預計會收到不同的答案。

總結

生成式 AI、大語言模型在最近一年左右經歷了非常快速的發展。看來在實際業務中實施這項新技術的壓力很大,而且這種情況已經發生了。然而,其中存在很多潛在的問題和風險。我認爲謹慎對待這個新機會並努力驗證一切非常重要。

更多技術文章,請訪問:https://opensource.actionsky.com/

關於 SQLE

SQLE 是一款全方位的 SQL 質量管理平臺,覆蓋開發至生產環境的 SQL 審覈和管理。支持主流的開源、商業、國產數據庫,爲開發和運維提供流程自動化能力,提升上線效率,提高數據質量。

SQLE 獲取

類型 地址
版本庫 https://github.com/actiontech/sqle
文檔 https://actiontech.github.io/sqle-docs/
發佈信息 https://github.com/actiontech/sqle/releases
數據審覈插件開發文檔 https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章