簡介
在設定服務時,務必先驗證您的變更,再將其套用至會受到影響的環境。對於 MySQL 資料庫等重要服務的變更而言,更是如此。
雖然許多變更需要手動檢查語意正確性 (確保配置符合您的預期),但通常您可以自動檢查語法正確性 (確保變更格式正確)。這提供了一個有限但非常有用的檢查,可以捕捉拼字錯誤、標點符號錯誤和格式錯誤的配置選項,否則這些錯誤會在嘗試整合新變更時阻止伺服器正確啟動。
在本簡短指南中,我們將介紹如何使用內建選項驗證 MySQL 伺服器設定檔。這可以幫助您驗證您執行的編輯在重新啟動服務時不會干擾 MySQL。
檢查 MySQL 伺服器設定檔
用於執行 MySQL 伺服器的 mysqld
二進制檔案包含許多您可能不常使用的選項。其中之一是 --validate-config
旗標。
--validate-config
旗標會使 mysqld
二進制檔案解析其設定檔,然後退出。您可以輸入以下內容來執行驗證檢查
mysqld --validate-config
如果未發現任何問題,程式將成功退出,且不會有任何輸出,而不會嘗試啟動 MySQL 伺服器。您可以透過檢查其退出代碼來驗證程序是否成功退出
echo $?
0
如果發現任何錯誤,MySQL 將中止程序,就像在實際啟動情境中一樣,並輸出有關問題發生的檔案和行的資訊。您可以將語法錯誤新增至您的 MySQL 設定檔以觸發此程序,請參閱輸出。例如,您可以
echo "hello there" | sudo tee --append /etc/mysql/my.cnf
現在當您再次檢查配置時,命令會輸出我們新增至配置的錯誤行
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 23.mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
退出代碼也驗證了發生錯誤
echo $?
1
您可以使用 sed
移除我們新增至 MySQL 設定檔的行。再次驗證設定檔,以確保移除成功
sudo sed --in-place '/hello there/d' /etc/mysql/my.cnfmysqld --validate-config
伺服器設定檔現在已驗證為語法再次正確。
結論
在本指南中,我們介紹了如何使用帶有 --validate-config
旗標的 mysqld
二進制檔案來驗證 MySQL 伺服器的設定檔是否存在錯誤。雖然這不能用於偵測所有錯誤,但它在防止錯字、不正確的配置語法和無效選項方面有很大幫助。在重新啟動伺服器之前始終使用 --validate-config
旗標是個好主意,以確保您的新配置在停止資料庫服務之前是有效的。
如果您正在使用 Prisma,您可以使用 MySQL 資料庫連接器連線到您的 MySQL 伺服器並管理您的資料。