日誌功能對於開發和測試您的應用程式以及部署 MySQL Router 很有幫助。若要使用日誌,請在組態檔中名為 [logger]
的區段下,啟用日誌 level
選項。例如
[logger]
level = INFO
使用 logging_folder
選項設定日誌檔的位置,該選項定義為組態檔中 [DEFAULT]
區段下的目錄路徑。日誌檔案名為 mysqlrouter.log
。例如
[DEFAULT]
# Logs are sent to /path/to/folder/mysqlrouter.log
logging_folder = /path/to/folder
[logger]
level = DEBUG
將 logging_folder
設定為空字串會將日誌傳送到主控台 (stdout)。
兩個常見的日誌等級為 INFO
(預設) 和 DEBUG
INFO
:包含如上所示的資訊訊息,並且是預設值。DEBUG
:包含在 Router 原始碼中產生的訊息,以用於診斷。DEBUG
會呈現有關 Router 內部運作的詳細資訊。雖然它可能對應用程式沒有吸引力,但如果您遇到問題或 Router 的行為不如預期,使用DEBUG
可能會有所幫助。
以下範例顯示 DEBUG
日誌等級的訊息外觀;比較 INFO
和 DEBUG
訊息
2019-04-07 18:25:56 INFO [0x700009673000] Connections using ssl_mode 'PREFERRED'
2019-04-07 18:25:56 INFO [0x700009673000] Connected with metadata server running on 127.0.0.1:3310
2019-04-07 18:25:56 DEBUG [0x700009673000] Updating metadata information for cluster 'devCluster'
2019-04-07 18:25:56 DEBUG [0x700009673000] Updating replicaset status from GR for 'default'
2019-04-07 18:25:56 DEBUG [0x700009673000] Replicaset 'default' has 3 members in metadata, 3 in status table
2019-04-07 18:25:56 DEBUG [0x700009673000] End updating replicaset for 'default'
2019-04-07 18:25:56 INFO [0x700009673000] Changes detected in cluster 'devCluster' after metadata refresh
2019-04-07 18:25:56 INFO [0x700009673000] Metadata for cluster 'devCluster' has 1 replicasets:
Router 支援日誌輪替;此處列出了一些包含範例實作的情境。
Windows 上不支援此功能。
隨選輪替
隨選日誌輪替可以透過兩個步驟完成:重新命名日誌檔,然後通知 Router,以便它建立並切換到新的日誌檔。
直接從系統的 shell 或從可以自動作為排程工作呼叫的腳本執行日誌輪替。例如
sudo mv /var/log/mysqlrouter/mysqlrouter.log /var/log/mysqlrouter/mysqlrouter.log.old
kill -HUP $(pidof mysqlrouter)
logrotate
logrotate 機制也可以輪替 Router 的日誌檔。輪替後,會通知 Router 重新開啟日誌檔,這是透過將 HUP 送至 Router 處理程序來完成的。logrotate 組態檔範例如下
/var/log/mysqlrouter/mysqlrouter.log {
rotate 9
size 10M
create 0755 mysqlrouter mysqlrouter
postrotate
kill -HUP $(pidof mysqlrouter)
endscript
}
此範例會將日誌輪替為 mysqlrouter.log、mysqlrouter.log.1、...、mysqlrouter.log.9。輪替會根據目前 mysqlrouter.log 檔案的大小觸發,只有在大小大於 10MB 時才會觸發。假設此組態設定儲存為 /etc/mysqlrouter/logrotate.conf
,則可以定期執行 (新增至 cron),如下所示
[sudo] logrotate /etc/mysqlrouter/logrotate.conf