All Products
Search
Document Center

Simple Log Service:Collect MySQL query results

Last Updated:Jul 11, 2024

This topic describes how to create a Logtail configuration in the Simple Log Service console to collect MySQL query results.

Prerequisites

Principle

Logtail executes the SELECT statement that is specified in a Logtail configuration on a regular basis, and then uploads the query results to Simple Log Service.

After Logtail obtains query results, Logtail saves the value of the CheckPoint field in the results to the Logtail server. The next time Logtail executes the SELECT statement, Logtail adds the value of the CheckPoint field to the SELECT statement. This way, Logtail can collect incremental data.

Important

If you use checkpoints during data collection, you must sort the values of the CheckPoint field in the SELECT statement. Otherwise, data duplication or other issues may occur.

image

Features

  • You can collect query results from MySQL databases.

  • You can configure paged query settings.

  • You can specify time zones.

  • You can specify timeout periods.

  • You can save the values of the CheckPoint field.

  • SSL is supported.

  • You can specify the maximum number of logs that can be collected at a time.

Scenarios

  • Collect incremental data based on marks such as an auto-increment ID or a point in time.

  • Synchronize data based on filter conditions.

Procedure

  1. Log on to the Simple Log Service console.

  2. In the Quick Data Import section, click Import Data. In the Import Data dialog box, click MySQL Query Result - Plug-in.

  3. Select the project and Logstore. Then, click Next.

  4. In the Machine Group Configurations step, configure a machine group.

    1. Configure the Scenario and Installation Environment parameters based on your business requirements.

      Important

      You must configure the Scenario and Installation Environment parameters regardless of whether a machine group is available. The parameter settings affect subsequent configurations.

    2. Make sure that a machine group is displayed in the Applied Server Groups section and click Next.

      Machine group available

      Select a machine group from the Source Machine Group section.

      image

      No machine group available

      Click Create Machine Group. In the Create Machine Group panel, configure the parameters. You can set the Machine Group Identifier parameter to IP Address or Custom Identifier. For more information, see Create a custom identifier-based machine group or Create an IP address-based machine group.

      Important

      If you apply a machine group immediately after you create the machine group, the heartbeat status of the machine group may be FAIL. This issue occurs because the machine group is not connected to Simple Log Service. To resolve this issue, you can click Retry. If the issue persists, see What do I do if no heartbeat connections are detected on Logtail?

  5. In the Configure Data Source step, configure the Configuration Name and Plug-in Configuration parameters. Then, click Next.

    You can specify a data source by using one of the following methods: form configuration and editor configuration in JSON. For more information, see Details of the Logtail configuration.

  6. Create indexes and preview data. Then, click Next. By default, full-text indexing is enabled in Simple Log Service. You can also manually create field indexes for the collected logs or click Automatic Index Generation. Then, Simple Log Service generates field indexes. For more information, see Create indexes.

    Important

    If you want to query all fields in logs, we recommend that you use full-text indexes. If you want to query only specific fields, we recommend that you use field indexes. This helps reduce index traffic. If you want to analyze fields, you must create field indexes. You must include a SELECT statement in your query statement for analysis.

  7. Click Log Query. You are redirected to the query and analysis page of your Logstore.

    You must wait approximately 1 minute for the indexes to take effect. Then, you can view the collected logs on the Raw Logs tab. For more information, see Query and analyze logs.

Details of the Logtail configuration

You can specify a data source by using one of the following methods: form configuration and editor configuration in JSON.

Form configuration

In the Configure Data Source step, configure the parameters. The following table describes the parameters.

Parameter

Description

Configuration Name

The name of the Logtail configuration.

MySQL Address

The address of the MySQL database. Example: rm-****.mysql.rds.aliyuncs.com

Database Username

The username of the account that is used to log on to the MySQL database.

Database Password

The password of the account that is used to log on to the MySQL database.

If you have high requirements for data security, we recommend that you set the username and password to xxx. After your configuration is synchronized to the Logtail server, find the two parameters in the /usr/local/ilogtail/user_log_config.json file and change the values based on your business requirements. For more information, see Modify the Logtail configuration on the Logtail server.

Important

If you modify this parameter in the Simple Log Service console, the parameter setting in the Logtail configuration on the Logtail server is overwritten after the modification is synchronized to the server.

Database Name

The name of the MySQL database.

Database Connection Timeout Period

The timeout period for connections to the MySQL database. Unit: milliseconds.

Query Timeout Period

The timeout period for reads from the MySQL database. Unit: milliseconds.

SELECT Statement

The SELECT statement.

If you select Use CheckPoint, you must include the column that is specified for the CheckPoint Column Name parameter in a WHERE clause of the SELECT statement that you specify for the SELECT Statement parameter. You can use question marks (?) to indicate replacement characters. If you use a question mark (?) in the SELECT statement, you must also configure the CheckPoint Column Name parameter.

Important

For example, set the CheckPoint Column Name parameter to id, the Initial Value of CheckPoint Column parameter to 0, and the SELECT Statement parameter to SELECT * FROM xxx WHERE ID > ?. Each time Logtail executes the SELECT statement, the system saves the ID of the last data record as the checkpoint. The next time Logtail executes the SELECT statement, the question mark (?) that is specified in the SELECT statement is replaced with the ID that corresponds to the saved checkpoint.

Use LIMIT Clause to Perform Paged Queries

Specifies whether to use a LIMIT clause to paginate query results.

We recommend that you select Use LIMIT Clause to Perform Paged Queries. If you select Use LIMIT Clause to Perform Paged Queries, a LIMIT clause is automatically added to the SELECT statement that you specify for the SELECT Statement parameter when Logtail executes the SQL statement.

Page Size

The maximum number of logs that can be returned on each page.

If you select Use LIMIT Clause to Perform Paged Queries, you must configure this parameter.

Maximum Records per Synchronization

The maximum number of logs that can be synchronized at a time. Default value: 0, which indicates that the number is unlimited.

Use CheckPoint

Specifies whether to use checkpoints during data collection. If you select Use CheckPoint, checkpoints are used during data collection. A checkpoint can be used as the start point of the next data collection. This way, incremental data is collected.

CheckPoint Column Name

The name of the column that stores checkpoints.

If you select Use CheckPoint, you must configure this parameter.

Warning

Values in the checkpoint column must be incremental. Otherwise, some data may not be collected. The maximum value in the results of a query operation is used as the input for the next query operation.

Data Type of CheckPoint Column

The type of the checkpoint column. Valid values: int and time. If you set this parameter to int, the values in the checkpoint column are of the int64 type. If you set this parameter to time, the values in the checkpoint column can be of the date, datetime, or time type that is supported by MySQL.

If you select Use CheckPoint, you must configure this parameter.

Initial Value of CheckPoint Column

The initial value of the checkpoint column.

If you select Use CheckPoint, you must configure this parameter.

Save CheckPoint per Pagination

If you select Save CheckPoint per Pagination, checkpoints are saved each time query results are paginated. If you do not select Save CheckPoint per Pagination, checkpoints are saved each time query results are synchronized.

Synchronized At

The synchronization interval. Unit: milliseconds.

Editor configuration in JSON

In the Plug-in Configuration field, enter information about your Logtail configuration.

  • inputs is required and is used to configure the data source settings for the Logtail configuration.

    Important

    You can specify only one type of data source in inputs.

  • processors is optional and is used to configure the data processing settings for the Logtail configuration to parse data. You can specify one or more processing methods.

    If your logs cannot be parsed based only on the setting of inputs, you can configure processors in the Plug-in Configuration field to add plug-ins for data processing. For example, you can extract fields, extract log time, mask data, and filter logs. For more information, see Use Logtail plug-ins to process data.

{
  "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
      }
    }
  ]
}

Parameter

Type

Required

Description

type

string

Yes

The type of the data source. Set the value to service_mysql.

Address

string

No

The address of the MySQL database. Example: rm-****.mysql.rds.aliyuncs.com

Default value: 127.0.0.1:3306.

User

string

No

The username of the account that is used to log on to the MySQL database. Default value: root.

Password

string

No

The password of the account that is used to log on to the MySQL database. By default, this parameter is left empty.

If you have high requirements for data security, we recommend that you set the username and password to xxx. After your configuration is synchronized to the Logtail server, find the two parameters in the /usr/local/ilogtail/user_log_config.json file and change the values based on your business requirements. For more information, see Modify the Logtail configuration on the Logtail server.

Important

If you modify this parameter in the Simple Log Service console, the parameter setting in the Logtail configuration on the Logtail server is overwritten after the modification is synchronized to the server.

DataBase

string

No

The name of the MySQL database.

DialTimeOutMs

int

No

The timeout period for connections to the MySQL database. Unit: milliseconds. Default value: 5000.

ReadTimeOutMs

int

No

The timeout period for reads from the MySQL database. Unit: milliseconds. Default value: 5000.

StateMent

string

No

The SELECT statement.

If you set the CheckPoint parameter to true, you must include the column that is specified for the CheckPointColumn parameter in a WHERE clause of the SELECT statement that you specify for the StateMent parameter. You can use question marks (?) to indicate replacement characters. If you use a question mark (?) in the SELECT statement, you must also configure the CheckPointColumn parameter.

For example, set the CheckPointColumn parameter to id, the CheckPointStart parameter to 0, and the StateMent parameter to SELECT * from ... where id > ?. Each time Logtail executes the SELECT statement, the system saves the ID of the last data record as the checkpoint. The next time Logtail executes the SELECT statement, the question mark (?) that is specified in the SELECT statement is replaced with the ID that corresponds to the saved checkpoint.

Limit

boolean

No

Specifies whether to use a LIMIT clause to paginate query results. Valid values:

  • true

  • false (default)

We recommend that you set the Limit parameter to true. If you set the Limit parameter to true, a LIMIT clause is automatically added to the SELECT statement that you specify for the StateMent parameter when Logtail executes the SQL statement.

PageSize

int

No

The maximum number of logs that can be returned on each page. If you set the Limit parameter to true, you must configure this parameter.

MaxSyncSize

int

No

The maximum number of logs that can be synchronized at a time. Default value: 0, which indicates that the number is unlimited.

CheckPoint

boolean

No

Specifies whether to use checkpoints during data collection. Valid values:

  • true

  • false (default)

A checkpoint can be used as the start point of the next data collection. This way, incremental data is collected.

CheckPointColumn

string

No

The name of the column that stores checkpoints.

If you set the CheckPoint parameter to true, you must configure this parameter.

Warning

Values in the checkpoint column must be incremental. Otherwise, some data may not be collected. The maximum value in the results of a query operation is used as the input for the next query operation.

CheckPointColumnType

string

No

The type of the checkpoint column. Valid values: int and time. If you set this parameter to int, the values in the checkpoint column are of the int64 type. If you set this parameter to time, the values in the checkpoint column can be of the date, datetime, or time type that is supported by MySQL.

If you set the CheckPoint parameter to true, you must configure this parameter.

CheckPointStart

string

No

The initial value of the checkpoint column.

If you set the CheckPoint parameter to true, you must configure this parameter.

CheckPointSavePerPage

boolean

No

Specifies whether to save checkpoints each time query results are paginated. Valid values:

  • true (default): saves checkpoints each time query results are paginated.

  • false: saves checkpoints each time query results are synchronized.

IntervalMs

int

Yes

The synchronization interval. Unit: milliseconds. Default value: 60000.

Modify the Logtail configuration on the Logtail server

If you did not enter real information for parameters such as Address, User, and Password in the Plug-in Configuration field when you created the Logtail configuration, you can modify the parameters after the Logtail configuration is delivered to the Logtail server.

Linux

  1. Log on to the Logtail server.

  2. Find the service_mysql keyword in the /usr/local/ilogtail/user_log_config.json file and modify parameters such as Address, User, and Password.

  3. Run the following command to restart Logtail:

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

Windows

  1. Log on to the Logtail server.

  2. Find the service_mysql keyword in the C:\Program Files\Alibaba\Logtail\user_log_config.json file, and modify parameters such as Address, User, and Password.

    The file locations differ between Windows 64-bit operating systems and Windows 32-bit operating systems. For more information, see File path.

  3. Run the following command to restart Logtail.

    1. Choose Start Menu > Control Panel > Administrative Tools > Services.

    2. In the Services dialog box, select the service that you want to manage.

      • For Logtail V0.x.x.x, select LogtailWorker.

      • For Logtail V1.0.0.0 or later, select LogtailDaemon.

    3. Right-click the service and select Start, Stop, or Restart.

Troubleshooting

If no data is displayed on the preview page or query page after logs are collected by using Logtail, you can troubleshoot the errors based on the instructions that are provided in What do I do if errors occur when I use Logtail to collect logs?

Sample database table and sample log

This section provides a sample database table and a sample log that is collected by Logtail.

  • Sample database table

    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`)
    )
  • Sample log

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