全部產品
Search
文件中心

Simple Log Service:採集MySQL查詢結果

更新時間:Jul 11, 2024

本文介紹如何通過Log Service控制台建立Logtail採集配置來採集MySQL查詢結果。

前提條件

  • 已在伺服器上安裝Linux Logtail 0.16.0及以上版本或Windows Logtail 1.0.0.8及以上版本。具體操作,請參見安裝Logtail(Linux系統)安裝Logtail(Windows系統)

    重要

    請確保用於安裝Logtail的伺服器可串連目標MySQL資料庫。

  • 在MySQL資料庫中,設定白名單為Logtail所在伺服器的IP地址。

    例如RDS MySQL資料庫的白名單設定,請參見設定IP白名單

原理

Logtail根據Logtail採集配置定期執行指定的SELECT語句,將查詢結果作為資料上傳到Log Service。

Logtail擷取到查詢結果時,會將結果中的CheckPoint欄位儲存到本地。當下次執行SELECT語句時,會將上一次儲存的CheckPoint帶入到SELECT語句中,以此實現增量資料擷取。

重要

開啟CheckPoint時,需要在SELECT語句中對CheckPoint欄位進行排序,否則會造成資料重複或其他問題。

功能

  • 支援MySQL資料庫的查詢結果。

  • 支援分頁設定。

  • 支援時區設定。

  • 支援逾時設定。

  • 支援儲存CheckPoint狀態。

  • 支援SSL。

  • 支援限制每次最大採集數量。

應用情境

  • 根據資料中的自增ID或時間等標識採集增量資料。

  • 根據篩選條件自訂同步。

操作步驟

  1. 登入Log Service控制台

  2. 接入資料地區,選擇MySQL查詢結果-外掛程式

  3. 選擇目標Project和Logstore,單擊下一步

  4. 機器組配置頁面,配置機器組。

    1. 根據實際需求,選擇使用情境和安裝環境。

      重要

      無論是否已有機器組,都必鬚根據實際需求正確選擇使用情境和安裝環境,這將影響後續的頁面配置。

    2. 確認目標機器組已在應用機器組地區,單擊下一步

      已有機器組

      源機器組列表選擇目標機器組。

      image

      沒有可用機器組

      單擊建立機器組,在建立機器組面板設定相關參數。機器組標識分為IP地址使用者自訂標識,更多資訊請參見建立使用者自訂標識機器組(推薦)建立IP地址機器組

      重要

      建立機器組後立刻應用,可能因為串連未生效,導致心跳為FAIL,您可單擊重試。如果還未解決,請參見Logtail機器組無心跳進行排查。

  5. 資料來源設定頁簽中,設定配置名稱外掛程式配置,然後單擊下一步

    您可以通過表單配置方式或JSON配置方式完成資料來源設定。更多資訊,請參見Logtail配置詳情

  6. 建立索引預覽資料,然後單擊下一步。Log Service預設開啟全文索引。您也可以根據採集到的日誌,手動建立欄位索引,或者單擊自動產生索引,Log Service將自動產生欄位索引。更多資訊,請參見建立索引

    重要

    如果需要查詢日誌中的所有欄位,建議使用全文索引。如果只需查詢部分欄位、建議使用欄位索引,減少索引流量。如果需要對欄位進行分析(SELECT語句),必須建立欄位索引。

  7. 單擊查詢日誌,系統將跳轉至Logstore查詢分析頁面。您需要等待1分鐘左右,待索引生效後,才能在原始日誌頁簽中,查看已採集到的日誌。更多資訊,請參見查詢和分析日誌

Logtail配置詳情

您可以通過表單配置方式或JSON配置方式完成資料來源設定。

表單配置方式

資料來源設定步驟中,完成如下配置。

參數

說明

配置名稱

Logtail配置名稱。

MySQL地址

MySQL資料庫地址。例如rm-****.mysql.rds.aliyuncs.com

資料庫使用者名稱

登入MySQL資料庫的使用者名稱稱。

資料庫密碼

登入MySQL資料庫的使用者密碼。

如果安全需求較高,建議將使用者名稱稱和密碼配置為xxx,待採集配置同步至本地機器後,在本地檔案/usr/local/ilogtail/user_log_config.json中找到對應配置進行修改。具體操作,請參見修改本地配置

重要

如果您在控制台上修改了此參數,同步至本地後會覆蓋本地的配置。

資料庫名稱

MySQL資料庫名稱。

串連資料庫時間

串連MySQL資料庫的逾時時間,單位:ms。

查詢逾時時間

讀取MySQL查詢結果的逾時時間,單位:ms。

SELECT語句

SELECT語句。

選中是否使用CheckPoint時,SELECT語句中的where條件中必須包含CheckPoint列(CheckPoint列名稱中設定的值)。支援使用半形問號(?)表示替換符,與CheckPoint列配合使用。

重要

例如設定CheckPoint列名稱id,設定CheckPoint列的初始值為0,設定SELECT語句SELECT * FROM xxx WHERE ID > ?。則每次採集後,系統會儲存最後一條資料的ID作為Checkpoint,下次採集時查詢語句中的半形問號(?)將被替換為該Checkpoint對應的ID。

是否使用limit分頁

選中該選項後,將使用Limit分頁。

建議使用Limit進行分頁。選中是否使用limit分頁後,進行SQL查詢時,系統將自動在SELECT語句中追加LIMIT語句。

分頁大小

分頁大小。

選中是否使用limit分頁後,需要配置。

同步最大記錄數

每次同步最大記錄數。預設值為0,表示無限制。

是否使用CheckPoint

選中該選項後,將使用CheckPoint。CheckPoint可作為下次採集資料的起點,實現資料增量採集。

CheckPoint列名稱

CheckPoint列名稱。

選中是否使用CheckPoint後,需要配置。

警告

該列的值必須遞增,否則可能會出現資料漏採集問題(每次查詢結果中的最大值將作為下次查詢的輸入)。

CheckPoint列的資料類型

CheckPoint列的資料類型,支援int和time。int類型的內部儲存為int64,time類型支援MySQL的date、datetime、time類型。

選中是否使用CheckPoint後,需要配置。

CheckPoint列的初始值

CheckPoint列的初始值。

選中是否使用CheckPoint後,需要配置。

每次分頁時是否儲存一次

選中該選項,則每次分頁時儲存一次CheckPoint。否則,每次同步完成後儲存一次CheckPoint。

同步時間

同步間隔,單位:ms。

JSON配置方式

外掛程式配置中填寫您的Logtail配置資訊,樣本如下所示。

  • inputs為資料來源配置,必選項。

    重要

    一個inputs中只允許配置一個類型的資料來源。

  • processors為處理配置,用於解析資料。可選項,您可以配置一種或多種處理方式。

    如果當前的inputs配置無法滿足日誌解析需求,您可以在外掛程式配置中添加processors配置,即添加Logtail外掛程式處理資料。例如提取欄位、提取日誌時間、脫敏資料、過濾日誌等。更多資訊,請參見使用Logtail外掛程式處理資料

{
  "inputs": [
    {
      "type": "service_mysql",
      "detail": {
        "Address": "************.mysql.rds.aliyuncs.com",
        "User": "****",
        "Password": "*******",
        "DataBase": "****",
        "Limit": true,
        "PageSize": 100,
        "StateMent": "select * from db.VersionOs where time > ?",
        "CheckPoint": true,
        "CheckPointColumn": "time",
        "CheckPointStart": "2018-01-01 00:00:00",
        "CheckPointSavePerPage": true,
        "CheckPointColumnType": "time",
        "IntervalMs": 60000
      }
    }
  ]
}

參數

類型

是否必選

說明

type

string

資料來源類型,固定為service_mysql

Address

string

MySQL地址。例如rm-****.mysql.rds.aliyuncs.com

預設值為127.0.0.1:3306

User

string

用於登入MySQL資料庫的使用者名稱稱。預設值為root

Password

string

用於登入MySQL資料庫的使用者密碼。預設值為空白。

如果安全需求較高,建議將使用者名稱稱和密碼配置為xxx,待採集配置同步至本地機器後,在本地檔案/usr/local/ilogtail/user_log_config.json中找到對應配置進行修改。具體操作,請參見修改本地配置

重要

如果您在控制台上修改了此參數,同步至本地後會覆蓋本地的配置。

DataBase

string

MySQL資料庫名稱。

DialTimeOutMs

int

串連MySQL資料庫逾時時間,預設值為5000,單位:ms。

ReadTimeOutMs

int

讀取MySQL查詢結果的逾時時間,預設值為5000,單位:ms。

StateMent

string

SELECT語句。

設定CheckPointtrue時,Statement中SELECT語句的where條件中必須包含CheckPoint列(CheckPointColumn)。支援使用半形問號(?)表示替換符,與CheckPoint列配合使用。

例如設定CheckPointColumnid,設定CheckPointStart0,設定StateMentSELECT * from ... where id > ?。則每次採集後,系統會儲存最後一條資料的ID作為Checkpoint,下次採集時查詢語句中的半形問號(?)將被替換為該Checkpoint對應的ID。

Limit

boolean

是否使用Limit分頁。

  • true:使用。

  • false(預設值):不使用。

建議使用Limit進行分頁。設定Limittrue後,進行SQL查詢時,系統將自動在SELECT語句中追加LIMIT語句。

PageSize

int

分頁大小,Limittrue時必須配置。

MaxSyncSize

int

每次同步最大記錄數。預設值為0,表示無限制。

CheckPoint

boolean

是否使用CheckPoint。

  • true:使用。

  • false(預設值):不使用。

CheckPoint可作為下次採集資料的起點,實現資料增量採集。

CheckPointColumn

string

CheckPoint列名稱。

設定CheckPointtrue時,需要配置。

警告

該列的值必須遞增,否則可能會出現資料漏採集問題(每次查詢結果中的最大值將作為下次查詢的輸入)。

CheckPointColumnType

string

CheckPoint列的資料類型,支援int和time。int類型的內部儲存為int64,time類型支援MySQL的date、datetime、time類型。

設定CheckPointtrue時,需要配置。

CheckPointStart

string

CheckPoint列的初始值。

設定CheckPointtrue時,需要配置。

CheckPointSavePerPage

boolean

是否每次分頁時儲存一次CheckPoint。

  • true(預設值):每次分頁時儲存一次CheckPoint。

  • false:每次同步完成後儲存一次CheckPoint。

IntervalMs

int

同步間隔,預設值為60000,單位:ms。

修改本地配置

如果您沒有在外掛程式配置中輸入真實的Address、User、Password等資訊,可以在採集配置下發到本地後進行手動修改。

Linux系統

  1. 登入Logtail所在伺服器。

  2. 開啟/usr/local/ilogtail/user_log_config.json檔案,找到service_mysql關鍵字,修改AddressUserPassword等欄位。

  3. 執行以下命令重啟Logtail。

    sudo /etc/init.d/ilogtaild stop; sudo /etc/init.d/ilogtaild start

Windows系統

  1. 登入Logtail所在伺服器。

  2. 開啟C:\Program Files\Alibaba\Logtail\user_log_config.json檔案,找到service_mysql關鍵字,修改AddressUserPassword等欄位。

    Windows 64位作業系統和Windows 32位作業系統檔案位置不同,具體請參見檔案路徑

  3. 執行以下命令重啟Logtail。

    1. 選擇開始 > 控制台 > 管理工具 > 服務

    2. 服務對話方塊中,選擇對應的服務。

      • 如果是0.x.x.x版本,選擇LogtailWorker服務。

      • 如果是1.0.0.0及以上版本,選擇LogtailDaemon服務。

    3. 右鍵選擇對應的操作,包括啟動停止重新啟動

相關文檔

資料庫表和日誌範例

資料庫表範例和Logtail採集到的日誌範例如下所示。

  • 資料庫表範例

    CREATE TABLE `VersionOs` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
      `time` datetime NOT NULL,
      `version` varchar(10) NOT NULL DEFAULT '',
      `os` varchar(10) NOT NULL,
      `count` int(11) unsigned NOT NULL,
      PRIMARY KEY (`id`),
      KEY `timeindex` (`time`)
    )
  • 日誌範例

    "count":  "4"  
    "id:  "721097"  
    "os:  "Windows"  
    "time:  "2022-08-25 13:00:00"  
    "version":  "1.3.0"