全部产品
Search
文档中心

Simple Log Service:Mengaitkan sumber data MySQL

更新时间:Nov 09, 2025

Topik ini menjelaskan cara membuat penyimpanan eksternal untuk mengaitkan Simple Log Service dengan database MySQL.

Prasyarat

  • Data telah dikumpulkan di Simple Log Service. Untuk informasi lebih lanjut, lihat Pengumpulan Data.

  • Antarmuka baris perintah (CLI) Simple Log Service telah diinstal dan dikonfigurasi dengan titik akhir serta Pasangan Kunci Akses. Untuk informasi lebih lanjut, lihat Instal Simple Log Service CLI dan Konfigurasikan Titik Akhir dan Pasangan Kunci Akses.

  • Data disimpan dalam instansiasi ApsaraDB RDS for MySQL, AnalyticDB for MySQL, atau database MySQL yang dikelola sendiri pada instance ECS.

  • Database MySQL berada di virtual private cloud (VPC) Alibaba Cloud. Instansiasi RDS, instansiasi AnalyticDB for MySQL, atau instance ECS harus berada di wilayah yang sama dengan proyek Simple Log Service.

    Penting

    Anda tidak dapat langsung terhubung ke database MySQL menggunakan alamat IP publik.

Informasi latar belakang

Fitur penyimpanan eksternal dari Simple Log Service memungkinkan Anda mengaitkan Simple Log Service dengan instansiasi ApsaraDB RDS for MySQL, AnalyticDB for MySQL, atau database MySQL yang dikelola sendiri pada instance ECS. Selain itu, Anda dapat menulis hasil kueri dan analisis ke database MySQL untuk diproses lebih lanjut.

Prosedur

1. Konfigurasikan daftar putih

Database RDS for MySQL

Tambahkan blok CIDR 100.104.0.0/16, 11.194.0.0/16, dan 11.201.0.0/16 ke daftar putih. Untuk informasi lebih lanjut, lihat Konfigurasikan Daftar Putih Alamat IP.

Database MySQL yang dikelola sendiri pada instance ECS

Tambahkan aturan grup keamanan untuk mengizinkan akses dari blok CIDR 100.104.0.0/16, 11.194.0.0/16, dan 11.201.0.0/16. Untuk informasi lebih lanjut, lihat Tambahkan Aturan Grup Keamanan.

Database AnalyticDB for MySQL

Tambahkan blok CIDR 100.104.0.0/16, 11.194.0.0/16, dan 11.201.0.0/16 ke daftar putih. Untuk informasi lebih lanjut, lihat Konfigurasikan Daftar Putih.

2. Buat ExternalStore

  1. Masuk ke server tempat CLI diinstal. Jalankan perintah touch untuk membuat file konfigurasi /home/shell/config.json. Tambahkan skrip berikut ke file config.json. Ganti nilai parameter region, vpc-id, host, port, username, password, db, dan table sesuai kebutuhan.

    1. Deskripsi Parameter

      Contoh

      {
          "externalStoreName":"sls_join_meta_store",
          "storeType":"rds-vpc",
          "parameter":{
              "region":"cn-qingdao",
              "vpc-id":"vpc-m5eq4irc1pucp*******",
              "host":"rm-bp1******rm76.mysql.rds.aliyuncs.com",
              "port":"3306",
              "username":"user",
              "password":"****",
              "db":"scmc",
              "table":"join_meta"
          }
      }

      externalStoreName

      Nama ExternalStore. Nama tersebut harus dalam huruf kecil.

      storeType

      Jenis sumber data. Atur parameter ini ke rds-vpc.

      region

      Wilayah tempat instansiasi database berada. Detailnya adalah sebagai berikut:

      • Jika Anda menggunakan database ApsaraDB RDS for MySQL, atur parameter region ke wilayah instansiasi RDS.

      • Jika Anda menggunakan database AnalyticDB for MySQL, atur parameter region ke wilayah instansiasi AnalyticDB for MySQL.

      • Jika Anda menggunakan database MySQL yang dikelola sendiri pada instance ECS, atur parameter region ke wilayah instance ECS.

      Penting

      Instansiasi RDS, instansiasi AnalyticDB for MySQL, atau instance ECS harus berada di wilayah yang sama dengan proyek Simple Log Service.

      vpc-id

      ID VPC tempat instansiasi database berada. Detailnya adalah sebagai berikut:

      • Jika instansiasi RDS PostgreSQL Anda berada di virtual private cloud (VPC), atur vpc-id ke ID VPC.

      • Untuk database ADB PostgreSQL di virtual private cloud (VPC), atur vpc-id ke ID VPC tersebut.

      • Jika database Hologres Alibaba Cloud berada di virtual private cloud (VPC), atur vpc-id ke ID VPC.

      host  

      Alamat database. Detailnya adalah sebagai berikut:

      Dalam VPC, jika alamat IP instansiasi database berubah setelah Anda membuat tabel eksternal, akses ke tabel eksternal akan terpengaruh. Misalnya, hal ini bisa terjadi jika instansiasi database dipindahkan. Masalah ini terjadi bahkan jika Anda menggunakan titik akhir internal dalam konfigurasi. Saat tabel eksternal dibuat, backend menerjemahkan nama domain menjadi alamat IP dan menyimpan alamat IP ke konfigurasi backend. Alamat IP yang sesuai dengan nama domain tidak diperbarui secara otomatis. Dalam kasus ini, Anda harus memperbarui atau membuat ulang tabel eksternal.
      • Jika Anda menggunakan database ApsaraDB RDS for MySQL, atur parameter host ke alamat internal instansiasi RDS. Alamat internal dapat berupa titik akhir internal atau alamat IP pribadi.

      • Jika Anda menggunakan database AnalyticDB for MySQL, atur parameter host ke alamat internal instansiasi AnalyticDB for MySQL. Alamat internal dapat berupa titik akhir internal atau alamat IP pribadi.

      • Jika Anda menggunakan database MySQL yang dikelola sendiri pada instance ECS, atur parameter host ke alamat IP pribadi instance ECS.

      • Jika database dapat diakses melalui Internet, atur parameter ini ke nama domain publik atau alamat IP publik.

      port

      Nomor port. Detailnya adalah sebagai berikut:

      • Jika Anda menggunakan database ApsaraDB RDS for MySQL, atur parameter port ke nomor port instansiasi RDS.

      • Jika Anda menggunakan database AnalyticDB for MySQL, atur parameter port ke nomor port instansiasi AnalyticDB for MySQL.

      • Jika Anda menggunakan database MySQL yang dikelola sendiri pada instance ECS, atur parameter port ke port layanan MySQL pada instance ECS.

      username

      Nama pengguna akun database.

      password

      Kata sandi akun database.

      db

      Nama database.

      table

      Nama tabel database. Format berikut didukung:

      1. `table_name`, seperti `test`.

      2. `schema_name.table_name`, seperti `public.test`.

  1. Jalankan perintah berikut di baris perintah untuk membuat ExternalStore. project_name adalah nama proyek Simple Log Service. Ganti sesuai kebutuhan. Dalam topik ini, log-rds-demo digunakan sebagai contoh.

    aliyunlog log create_external_store --project_name="log-rds-demo" --config="file:///home/shell/config.json" 
  2. Kueri informasi ExternalStore. Jika perintah berhasil, tidak ada tanggapan yang dikembalikan. Anda dapat menjalankan perintah aliyunlog log get_external_store --project_name="log-rds-demo" --store_name="sls_join_meta_store" --format-output=json untuk menanyakan detail sumber data eksternal ApsaraDB RDS for MySQL. Informasi berikut dikembalikan:

    {
        "externalStoreName":"sls_join_meta_store",
        "storeType":"rds-vpc",
        "parameter":{
             "db": "scmc",
             "host": "rm-bp1******rm76.mysql.rds.aliyuncs.com",
             "port": "3306",
             "region": "cn-wulanchabu",
             "table": "test",
             "username": "user",
             "vpc-id": "vpc-m5eq4irc1pucp*******"
        }
    }

3. Gunakan penyimpanan eksternal

Jalankan analisis kueri

  • Gunakan penyimpanan eksternal

    Setelah Anda mengaitkan sumber data eksternal, buka Konsol Simple Log Service. Di proyek bernama log-rds-demo, klik Logstore apa pun. Kemudian, jalankan pernyataan kueri * | select * from sls_join_meta_store untuk menanyakan data dari tabel MySQL yang terkait.

    image

  • Gunakan JOIN untuk mengaitkan Simple Log Service dengan tabel MySQL

    • Anda hanya dapat menggabungkan Logstore dengan tabel database MySQL yang ukurannya kurang dari 20 MB.
    • Dalam pernyataan kueri, Logstore harus ditempatkan sebelum kata kunci join, dan ExternalStore harus ditempatkan setelah kata kunci join.
    • Dalam pernyataan kueri, Anda harus menentukan nama ExternalStore. Sistem secara otomatis mengganti nama tersebut dengan nama database MySQL dan nama tabel. Jangan langsung tentukan nama tabel MySQL.

    Sintaks JOIN yang didukung termasuk INNER JOIN, LEFT JOIN, RIGHT JOIN, dan FULL JOIN.

    [ INNER ] JOIN
    LEFT [ OUTER ] JOIN
    RIGHT [ OUTER ] JOIN
    FULL [ OUTER ] JOIN

    Berikut adalah contoh sintaks JOIN.

    method:postlogstorelogs | select count(1) , histogram(logstore) from log  l join sls_join_meta_store m on l.projectid = cast( m.ikey as varchar)

Simpan hasil kueri dan analisis ke database MySQL

Bidang dalam tabel database MySQL bertipe varchar. Anda harus mengonversi bidang dari Logstore agar sesuai dengan bidang dalam tabel MySQL. Misalnya, jika bidang detail dalam tabel MySQL adalah varchar(60), gunakan fungsi cast untuk mengonversi indeks content dalam Logstore: cast(content as varchar(60)). Untuk informasi lebih lanjut tentang fungsi cast, lihat Fungsi Konversi Tipe.

Simple Log Service memungkinkan Anda menggunakan sintaks INSERT untuk menyisipkan hasil kueri ke database MySQL. Berikut adalah contoh sintaks INSERT:

method:postlogstorelogs | insert into join_meta  select cast(method as varchar(65535)),count(1) from log group by method

Operasi SDK

Program sampel Python

# encoding: utf-8
from __future__ import print_function
from aliyun.log import *
from aliyun.log.util import base64_encodestring
from random import randint
import time
import os
from datetime import datetime
    endpoint = os.environ.get('ALIYUN_LOG_SAMPLE_ENDPOINT', 'cn-chengdu.log.aliyuncs.com')
    accessKeyId = os.environ.get('ALIYUN_LOG_SAMPLE_ACCESSID', '')
    accessKey = os.environ.get('ALIYUN_LOG_SAMPLE_ACCESSKEY', '')
    logstore = os.environ.get('ALIYUN_LOG_SAMPLE_LOGSTORE', '')
    project = "ali-yunlei-chengdu"
    client = LogClient(endpoint, accessKeyId, accessKey, '')
    # Buat ExternalStore.
    res = client.create_external_store(project,
                                       ExternalStoreConfig(externalStoreName="rds_store", region="cn-chengdu",
                                                           storeType="rds-vpc",
                                                           vpcId="vpc-2vctx8reuqswmk********",
                                                           host='rm-2vc6x67972iv********.mysql.cn-chengdu.rds.aliyuncs.com',
                                                           port="3306", username="root", password="123456",
                                                           database="test_database", table="test"))
    res.log_print()
    # Dapatkan detail ExternalStore.
    res = client.get_external_store(project,"rds_store")
    res.log_print()
    res = client.list_external_store(project,"")
    res.log_print()
    # Lakukan kueri JOIN.
    req = GetLogsRequest(project,logstore,From,To,"","* | select count(1) from  "+ logstore +"  s join  meta m on  s.projectid = cast(m.ikey as varchar)")
    res = client.get_logs(req)
    res.log_print()
     # Tulis hasil kueri dan analisis ke database MySQL.
    req = GetLogsRequest(project,logstore,From,To,"","* |  insert into rds_store select count(1) from  "+ logstore )
    res = client.get_logs(req)
    res.log_print()

Operasi terkait

  • Perbarui penyimpanan eksternal MySQL.

    aliyunlog log update_external_store --project_name="log-rds-demo" --config="file:///home/shell/config.json" 
  • Hapus penyimpanan eksternal MySQL.

    aliyunlog log delete_external_store --project_name="log-rds-demo" --store_name=sls_join_meta_store

Referensi