RDS for MySQL - OpenSearch Layanan Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

RDS for MySQL

Selesaikan langkah-langkah berikut untuk mengonfigurasi pipeline OpenSearch Ingestion dengan Amazon RDS untuk RDS untuk MySQL.

RDS untuk prasyarat MySQL

Sebelum Anda membuat pipeline OpenSearch Ingestion, lakukan langkah-langkah berikut:

  1. Buat grup parameter DB kustom di Amazon RDS untuk mengonfigurasi logging biner dan mengatur parameter berikut.

    binlog_format=ROW binlog_row_image=full binlog_row_metadata=FULL

    Selain itu, pastikan binlog_row_value_options parameter tidak disetel kePARTIAL_JSON.

    Untuk informasi selengkapnya, lihat Mengkonfigurasi RDS untuk pencatatan biner MySQL.

  2. Pilih atau buat RDS untuk instance MySQL DB dan kaitkan grup parameter yang dibuat pada langkah sebelumnya dengan instans DB.

  3. Verifikasi bahwa backup otomatis diaktifkan pada database. Untuk informasi selengkapnya, lihat Mengaktifkan pencadangan otomatis.

  4. Konfigurasikan retensi log biner dengan waktu yang cukup untuk replikasi terjadi, misalnya 24 jam. Untuk informasi selengkapnya, lihat Menyetel dan menampilkan konfigurasi log biner di Panduan Pengguna Amazon RDS.

  5. Siapkan autentikasi nama pengguna dan kata sandi di instans Amazon RDS Anda menggunakan manajemen kata sandi dengan Amazon RDS dan. AWS Secrets Manager Anda juga dapat membuat username/password kombinasi dengan membuat rahasia Secrets Manager.

  6. Jika Anda menggunakan fitur snapshot awal lengkap, buat peran AWS KMS key dan IAM untuk mengekspor data dari Amazon RDS ke Amazon S3.

    Peran IAM harus memiliki kebijakan izin berikut:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ExportPolicy", "Effect": "Allow", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::s3-bucket-used-in-pipeline", "arn:aws:s3:::s3-bucket-used-in-pipeline/*" ] } ] }

    Peran tersebut juga harus memiliki hubungan kepercayaan berikut:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  7. Pilih atau buat domain OpenSearch Layanan atau koleksi OpenSearch Tanpa Server. Untuk informasi selengkapnya, lihat Membuat domain OpenSearch Layanan dan Membuat koleksi.

  8. Lampirkan kebijakan berbasis sumber daya ke domain Anda atau kebijakan akses data ke koleksi Anda. Kebijakan akses ini memungkinkan OpenSearch Ingestion untuk menulis data dari instans Amazon RDS DB Anda ke domain atau koleksi Anda.

Langkah 1: Konfigurasikan peran pipeline

Setelah Anda menyiapkan prasyarat pipeline Amazon RDS, konfigurasikan peran pipeline yang akan digunakan dalam konfigurasi pipeline Anda. Tambahkan juga izin berikut untuk sumber Amazon RDS ke peran:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allowReadingFromS3Buckets", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:DeleteObject", "s3:GetBucketLocation", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::s3_bucket", "arn:aws:s3:::s3_bucket/*" ] }, { "Sid": "allowNetworkInterfacesGroup1", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission" ], "Resource": [ "arn:aws:ec2:*:account-id:network-interface/*", "arn:aws:ec2:*:account-id:subnet/*", "arn:aws:ec2:*:account-id:security-group/*" ] }, { "Sid": "allowNetworkInterfacesGroup2", "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DetachNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": [ "arn:aws:ec2:*:account-id:network-interface/*", "arn:aws:ec2:*:account-id:subnet/*", "arn:aws:ec2:*:account-id:security-group/*" ], "Condition": { "StringEquals": { "aws:RequestTag/OSISManaged": "true" } } }, { "Sid": "allowDescribeEC2", "Effect": "Allow", "Action": [ "ec2:Describe*" ], "Resource": "*" }, { "Sid": "allowTagCreation", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:account-id:network-interface/*", "Condition": { "StringEquals": { "aws:RequestTag/OSISManaged": "true" } } }, { "Sid": "AllowDescribeInstances", "Effect": "Allow", "Action": [ "rds:DescribeDBInstances" ], "Resource": [ "arn:aws:rds:region:account-id:db:*" ] }, { "Sid": "AllowDescribeClusters", "Effect": "Allow", "Action": [ "rds:DescribeDBClusters" ], "Resource": [ "arn:aws:rds:region:account-id:cluster:DB-id" ] }, { "Sid": "AllowSnapshots", "Effect": "Allow", "Action": [ "rds:DescribeDBClusterSnapshots", "rds:CreateDBClusterSnapshot", "rds:AddTagsToResource" ], "Resource": [ "arn:aws:rds:region:account-id:cluster:DB-id", "arn:aws:rds:region:account-id:cluster-snapshot:DB-id*" ] }, { "Sid": "AllowExport", "Effect": "Allow", "Action": [ "rds:StartExportTask" ], "Resource": [ "arn:aws:rds:region:account-id:cluster:DB-id", "arn:aws:rds:region:account-id:cluster-snapshot:DB-id*" ] }, { "Sid": "AllowDescribeExports", "Effect": "Allow", "Action": [ "rds:DescribeExportTasks" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "region", "aws:ResourceAccount": "account-id" } } }, { "Sid": "AllowAccessToKmsForExport", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:DescribeKey", "kms:RetireGrant", "kms:CreateGrant", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:region:account-id:key/export-key-id" ], }, { "Sid": "AllowPassingExportRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::account-id:role/export-role" ] }, { "Sid": "SecretsManagerReadAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:*:account-id:secret:*" ] } ] }

Langkah 2: Buat pipa

Konfigurasikan pipeline OpenSearch Ingestion yang mirip dengan berikut ini. Contoh pipeline menentukan instance Amazon RDS sebagai sumbernya.

version: "2" rds-mysql-pipeline: source: rds: db_identifier: "instance-id" engine: mysql database: "database-name" tables: include: - "table1" - "table2" s3_bucket: "bucket-name" s3_region: "bucket-region" s3_prefix: "prefix-name" export: kms_key_id: "kms-key-id" iam_role_arn: "export-role-arn" stream: true aws: sts_role_arn: "arn:aws:iam::account-id:role/pipeline-role" region: "us-east-1" authentication: username: ${{aws_secrets:secret:username}} password: ${{aws_secrets:secret:password}} sink: - opensearch: hosts: ["https://search-mydomain.us-east-1.es.amazonaws.com"] index: "${getMetadata(\"table_name\")}" index_type: custom document_id: "${getMetadata(\"primary_key\")}" action: "${getMetadata(\"opensearch_action\")}" document_version: "${getMetadata(\"document_version\")}" document_version_type: "external" aws: sts_role_arn: "arn:aws:iam::account-id:role/pipeline-role" region: "us-east-1" extension: aws: secrets: secret: secret_id: "rds-secret-id" region: "us-east-1" sts_role_arn: "arn:aws:iam::account-id:role/pipeline-role" refresh_interval: PT1H

Anda dapat menggunakan cetak biru Amazon RDS yang telah dikonfigurasi sebelumnya untuk membuat pipeline ini. Untuk informasi selengkapnya, lihat Bekerja dengan cetak biru.

Untuk menggunakan Amazon Aurora sebagai sumber, Anda perlu mengonfigurasi akses VPC untuk pipeline. VPC yang Anda pilih harus VPC yang sama dengan yang digunakan sumber Amazon Aurora Anda. Kemudian pilih satu atau lebih subnet dan satu atau lebih grup keamanan VPC. Perhatikan bahwa pipeline memerlukan akses jaringan ke database MySQL Aurora, jadi Anda juga harus memverifikasi bahwa cluster Aurora Anda dikonfigurasi dengan grup keamanan VPC yang memungkinkan lalu lintas masuk dari grup keamanan VPC pipeline ke port database. Untuk informasi selengkapnya, lihat Mengontrol akses dengan grup keamanan.

Jika Anda menggunakan file AWS Management Console untuk membuat pipeline, Anda juga harus melampirkan pipeline ke VPC agar dapat menggunakan Amazon Aurora sebagai sumber. Untuk melakukan ini, cari bagian Konfigurasi jaringan, pilih Lampirkan ke VPC, dan pilih CIDR Anda dari salah satu opsi default yang disediakan, atau pilih sendiri. Anda dapat menggunakan CIDR apa pun dari ruang alamat pribadi seperti yang didefinisikan dalam Praktik Terkini Terbaik RFC 1918.

Untuk menyediakan CIDR khusus, pilih Lainnya dari menu tarik-turun. Untuk menghindari tabrakan dalam alamat IP antara OpenSearch Ingestion dan Amazon RDS, pastikan bahwa Amazon RDS VPC CIDR berbeda dari CIDR untuk Ingestion. OpenSearch

Untuk informasi selengkapnya, lihat Mengonfigurasi akses VPC untuk pipeline.

Konsistensi data

Pipeline memastikan konsistensi data dengan terus melakukan polling atau menerima perubahan dari instans Amazon RDS dan memperbarui dokumen terkait dalam indeks. OpenSearch

OpenSearch Ingestion mendukung end-to-end pengakuan untuk memastikan daya tahan data. Ketika pipeline membaca snapshot atau stream, ia secara dinamis membuat partisi untuk pemrosesan paralel. Pipeline menandai partisi sebagai lengkap ketika menerima pengakuan setelah menelan semua catatan dalam OpenSearch domain atau koleksi. Jika Anda ingin memasukkan ke dalam koleksi pencarian OpenSearch Tanpa Server, Anda dapat membuat ID dokumen di pipeline. Jika Anda ingin memasukkan koleksi deret waktu OpenSearch Tanpa Server, perhatikan bahwa pipeline tidak menghasilkan ID dokumen, jadi Anda harus menghilangkan document_id: "${getMetadata(\"primary_key\")}" konfigurasi sink pipeline Anda.

Pipeline OpenSearch Ingestion juga memetakan tindakan peristiwa yang masuk ke dalam tindakan pengindeksan massal yang sesuai untuk membantu menyerap dokumen. Ini membuat data tetap konsisten, sehingga setiap perubahan data di Amazon RDS direkonsiliasi dengan perubahan dokumen yang sesuai. OpenSearch

Pemetaan tipe data

OpenSearch Pipeline ingestion memetakan tipe data MySQL ke representasi yang cocok untuk OpenSearch digunakan oleh domain atau koleksi Layanan. Jika tidak ada templat pemetaan yang ditentukan OpenSearch, secara OpenSearch otomatis menentukan jenis bidang dengan pemetaan dinamis berdasarkan dokumen terkirim pertama. Anda juga dapat secara eksplisit menentukan jenis bidang yang paling sesuai untuk Anda OpenSearch melalui templat pemetaan.

Tabel di bawah ini mencantumkan tipe data MySQL dan OpenSearch jenis bidang yang sesuai. Kolom Jenis OpenSearch Bidang Default menunjukkan jenis bidang yang sesuai OpenSearch jika tidak ada pemetaan eksplisit yang ditentukan. Dalam hal ini, OpenSearch secara otomatis menentukan jenis bidang dengan pemetaan dinamis. Kolom Jenis OpenSearch Bidang yang Direkomendasikan adalah jenis bidang yang sesuai yang direkomendasikan untuk ditentukan secara eksplisit dalam templat pemetaan. Jenis bidang ini lebih selaras dengan tipe data di MySQL dan biasanya dapat mengaktifkan fitur pencarian yang lebih baik yang tersedia di. OpenSearch

Tipe Data MySQL Jenis OpenSearch Bidang Default Jenis OpenSearch Bidang yang Direkomendasikan
BIGINT long long
BIGINT UNSIGNED long tidak ditandatangani lama
BIT long byte, pendek, integer, atau panjang tergantung pada jumlah bit
DECIMAL text ganda atau kata kunci
DOUBLE float double
FLOAT float float
INT long integer
INT UNSIGNED long long
MEDIUMINT long integer
MEDIUMINT UNSIGNED long integer
NUMERIC text ganda atau kata kunci
SMALLINT long pendek
SMALLINT UNSIGNED long integer
TINYINT long byte
TINYINT UNSIGNED long pendek
BINARY text biner
BLOB text biner
CHAR text text
ENUM text kata kunci
LONGBLOB text biner
LONGTEXT text text
MEDIUMBLOB text biner
MEDIUMTEXT text text
SET text kata kunci
TEXT text text
TINYBLOB text biner
TINYTEXT text text
VARBINARY text biner
VARCHAR text text
DATE panjang (dalam milidetik zaman) date
DATETIME panjang (dalam milidetik zaman) date
TIME panjang (dalam milidetik zaman) tanggal
TIMESTAMP panjang (dalam milidetik zaman) date
YEAR panjang (dalam milidetik zaman) date
GEOMETRY teks (dalam format WKT) geo_shape
GEOMETRYCOLLECTION teks (dalam format WKT) geo_shape
LINESTRING teks (dalam format WKT) geo_shape
MULTILINESTRING teks (dalam format WKT) geo_shape
MULTIPOINT teks (dalam format WKT) geo_shape
MULTIPOLYGON teks (dalam format WKT) geo_shape
POINT teks (dalam format WKT) geo_point atau geo_shape
POLYGON teks (dalam format WKT) geo_shape
JSON text object

Kami menyarankan Anda mengonfigurasi antrian huruf mati (DLQ) di pipeline Ingestion Anda. OpenSearch Jika Anda telah mengonfigurasi antrian, OpenSearch Layanan mengirimkan semua dokumen gagal yang tidak dapat dicerna karena kegagalan pemetaan dinamis ke antrian.

Jika pemetaan otomatis gagal, Anda dapat menggunakan template_type dan template_content dalam konfigurasi pipeline untuk menentukan aturan pemetaan eksplisit. Atau, Anda dapat membuat templat pemetaan langsung di domain atau koleksi penelusuran sebelum memulai pipeline.

Batasan

Pertimbangkan batasan berikut saat Anda menyiapkan pipeline OpenSearch Ingestion untuk RDS untuk MySQL:

  • Integrasi hanya mendukung satu database MySQL per pipeline.

  • Integrasi saat ini tidak mendukung konsumsi data lintas wilayah; instans dan OpenSearch domain Amazon RDS Anda harus sama. Wilayah AWS

  • Integrasi saat ini tidak mendukung konsumsi data lintas akun; instans Amazon RDS dan pipeline OpenSearch Ingestion Anda harus sama. Akun AWS

  • Pastikan instans Amazon RDS mengaktifkan autentikasi menggunakan Secrets Manager, yang merupakan satu-satunya mekanisme autentikasi yang didukung.

  • Konfigurasi pipeline yang ada tidak dapat diperbarui untuk menyerap data dari database yang berbeda dengan tabel and/or yang berbeda. Untuk memperbarui database dan/atau nama tabel pipeline, Anda harus membuat pipeline baru.

  • Pernyataan Data Definition Language (DDL) umumnya tidak didukung. Konsistensi data tidak akan dipertahankan jika:

    • Kunci primer diubah (add/delete/rename).

    • Tabel dijatuhkan/terpotong.

    • Nama kolom atau tipe data diubah.

  • Jika tabel MySQL untuk disinkronkan tidak memiliki kunci utama yang ditentukan, konsistensi data tidak dijamin. Anda perlu menentukan document_id opsi khusus dalam konfigurasi OpenSearch wastafel dengan benar agar dapat updates/deletes disinkronkan OpenSearch.

  • Referensi kunci asing dengan tindakan penghapusan cascading tidak didukung dan dapat mengakibatkan inkonsistensi data antara RDS untuk MySQL dan. OpenSearch

  • Cluster DB zona multi-ketersediaan Amazon RDS tidak didukung.

  • Versi yang didukung: MySQL versi 8.0 dan lebih tinggi.

CloudWatch Alarm yang Direkomendasikan

CloudWatch Metrik berikut direkomendasikan untuk memantau kinerja saluran konsumsi Anda. Metrik ini dapat membantu Anda mengidentifikasi jumlah data yang diproses dari ekspor, jumlah peristiwa yang diproses dari aliran, kesalahan dalam memproses ekspor dan peristiwa streaming, dan jumlah dokumen yang ditulis ke tujuan. Anda dapat mengatur CloudWatch alarm untuk melakukan tindakan ketika salah satu metrik ini melebihi nilai yang ditentukan untuk jangka waktu tertentu.

Metrik Deskripsi
pipeline-name.rds.credentialsBerubah Metrik ini menunjukkan seberapa sering AWS rahasia diputar.
pipeline-name.rds. executorRefreshErrors Metrik ini menunjukkan kegagalan untuk menyegarkan AWS rahasia.
pipeline-name.rds. exportRecordsTotal Metrik ini menunjukkan jumlah catatan yang diekspor dari Amazon Aurora.
pipeline-name.rds. exportRecordsProcessed Metrik ini menunjukkan jumlah catatan yang diproses oleh pipa OpenSearch Ingestion.
pipeline-name.rds. exportRecordProcessingKesalahan Metrik ini menunjukkan jumlah kesalahan pemrosesan dalam pipeline OpenSearch Ingestion saat membaca data dari cluster Amazon Aurora.
pipeline-name.rds. exportRecordsSuccessJumlah Metrik ini menunjukkan jumlah total catatan ekspor yang berhasil diproses.
pipeline-name.rds. exportRecordsFailedJumlah Metrik ini menunjukkan jumlah total catatan ekspor yang gagal diproses.
pipeline-name.rds.bytesDiterima Metrik ini menunjukkan jumlah total byte yang diterima oleh pipeline OpenSearch Ingestion.
pipeline-name.rds.bytesDiproses Metrik ini menunjukkan jumlah total byte yang diproses oleh pipeline OpenSearch Ingestion.
pipeline-name.rds. streamRecordsSuccessJumlah Metrik ini menunjukkan jumlah catatan yang berhasil diproses dari aliran.
pipeline-name.rds. streamRecordsFailedJumlah Metrik ini menunjukkan jumlah total rekaman yang gagal diproses dari aliran.