Migrasi fisik dari MySQL dengan menggunakan XtraBackup Percona dan Amazon S3 - Amazon Aurora

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

Migrasi fisik dari MySQL dengan menggunakan XtraBackup Percona dan Amazon S3

Anda dapat menyalin file cadangan penuh dan inkremental dari basis data sumber MySQL versi 5.7 atau 8.0 ke bucket Amazon S3. Kemudian, Anda dapat memulihkan ke klaster DB Amazon Aurora MySQL dengan versi mesin DB mayor yang sama dari file-file tersebut.

Opsi ini bisa jadi jauh lebih cepat dibandingkan memigrasi data menggunakan mysqldump karena penggunaan mysqldump akan mengulangi semua perintah untuk membuat kembali skema dan data dari basis data sumber di klaster DB Aurora MySQL baru Anda. Dengan menyalin file data MySQL sumber Anda, Aurora MySQL dapat segera menggunakan file tersebut sebagai data untuk klaster DB Aurora MySQL.

Anda juga dapat meminimalkan waktu henti dengan menggunakan replikasi log biner selama proses migrasi. Jika Anda menggunakan replikasi log biner, basis data MySQL eksternal tetap terbuka untuk transaksi saat data sedang dimigrasi ke klaster DB Aurora MySQL. Setelah klaster DB Aurora MySQL dibuat, gunakan replikasi log biner untuk menyinkronkan klaster DB Aurora MySQL dengan transaksi yang terjadi setelah pencadangan. Saat klaster DB Aurora MySQL sinkron dengan basis data MySQL, selesaikan migrasi dengan sepenuhnya beralih ke klaster DB Aurora MySQL untuk transaksi baru. Untuk informasi selengkapnya, lihat Menyinkronkan klaster DB Amazon Aurora MySQL dengan basis data MySQL menggunakan replikasi.

Pertimbangan dan batasan

Batasan dan pertimbangan berikut berlaku untuk memulihkan klaster DB Amazon Aurora MySQL dari bucket Amazon S3:

  • Anda dapat memigrasikan data Anda hanya ke klaster DB baru, bukan klaster DB yang sudah ada.

  • Anda harus menggunakan Percona XtraBackup untuk mencadangkan data Anda ke S3. Untuk informasi selengkapnya, lihat Instalasi Percona XtraBackup.

  • Bucket Amazon S3 dan cluster DB MySQL Aurora harus berada di Wilayah yang sama. AWS

  • Anda tidak dapat memulihkan dari hal berikut:

    • Ekspor snapshot klaster DB ke Amazon S3. Anda juga tidak dapat memigrasikan data dari ekspor snapshot klaster DB ke bucket S3 Anda.

    • Basis data sumber terenkripsi, tetapi Anda dapat mengenkripsi data yang sedang dimigrasikan. Anda juga dapat membiarkan data tidak terenkripsi selama proses migrasi.

    • Basis data MySQL 5.5 atau 5.6

  • Percona Server untuk MySQL tidak didukung sebagai database sumber, karena dapat berisi tabel dalam skema. compression_dictionary* mysql

  • Anda tidak dapat memulihkan ke klaster DB Aurora Serverless.

  • Migrasi mundur tidak didukung untuk versi mayor atau versi minor. Misalnya, Anda tidak dapat bermigrasi dari MySQL versi 8.0 ke Aurora MySQL versi 2 (kompatibel dengan MySQL 5.7), dan Anda tidak dapat bermigrasi dari MySQL versi 8.0.32 ke Aurora MySQL versi 3.03, yang kompatibel dengan MySQL komunitas versi 8.0.26.

  • Anda tidak dapat bermigrasi ke MySQL versi 3.05 dan yang lebih tinggi dari beberapa versi MySQL 8.0 yang lebih lama, termasuk 8.0.11, 8.0.13, dan 8.0.15. Kami menyarankan agar Anda meningkatkan ke MySQL 8.0.28 sebelum migrasi.

  • Pengimporan dari Amazon S3 tidak didukung di kelas instans DB db.t2.micro. Namun, Anda dapat memulihkan ke kelas instans DB yang berbeda, dan mengubah kelas instans DB di lain waktu. Untuk informasi selengkapnya tentang kelas instans DB, lihat Kelas instans DB Aurora.

  • Amazon S3 membatasi ukuran file yang diunggah ke bucket S3 hingga 5 TB. Jika sebuah file cadangan melebihi 5 TB, maka Anda harus membagi file cadangan ke dalam beberapa file yang lebih kecil.

  • Amazon RDS membatasi jumlah file yang dapat diunggah ke sebuah bucket S3 hingga 1 juta. Jika data cadangan untuk basis data Anda, termasuk semua cadangan penuh dan inkremental, melebihi 1 juta file, gunakan sebuah file Gzip (.gz), tar (.tar.gz), atau Percona xbstream (.xbstream) untuk menyimpan file cadangan penuh dan inkremental dalam bucket Amazon S3. Percona XtraBackup 8.0 hanya mendukung Percona xbstream untuk kompresi.

  • Untuk menyediakan layanan manajemen untuk setiap klaster DB, pengguna rdsadmin dibuat saat klaster DB dibuat. Karena ini adalah pengguna yang dicadangkan di RDS, batasan berikut berlaku:

  • Untuk Aurora MySQL versi 3, hak akses dinamis tidak diimpor. Hak akses dinamis yang didukung Aurora dapat diimpor setelah migrasi. Untuk informasi selengkapnya, lihat Hak akses dinamis di Aurora MySQL versi 3.

  • Tabel yang dibuat pengguna dalam skema mysql tidak dimigrasikan.

  • Parameter innodb_data_file_path harus dikonfigurasi dengan hanya satu file data yang menggunakan nama file data default ibdata1:12M:autoextend. Basis data dengan dua file data, atau dengan file data yang memiliki nama yang berbeda, tidak dapat dimigrasikan menggunakan metode ini.

    Berikut ini adalah contoh nama file yang tidak diizinkan: innodb_data_file_path=ibdata1:50M, ibdata2:50M:autoextend dan innodb_data_file_path=ibdata01:50M:autoextend.

  • Anda tidak dapat bermigrasi dari basis data sumber yang memiliki tabel di luar direktori data MySQL default.

  • Ukuran maksimum yang didukung untuk cadangan yang tidak terkompresi menggunakan metode ini saat ini terbatas pada 64 TiB. Untuk cadangan terkompresi, batas ini lebih rendah untuk memperhitungkan persyaratan ruang yang tidak terkompresi. Dalam kasus seperti itu, ukuran cadangan maksimum yang didukung adalah (64 TiB – compressed backup size).

  • Aurora MySQL tidak mendukung pengimporan komponen dan plugin MySQL serta komponen dan plugin eksternal lainnya.

  • Aurora MySQL tidak memulihkan semuanya dari basis data Anda. Kami menyarankan agar Anda menyimpan skema dan nilai basis data untuk item berikut dari basis data MySQL sumber Anda, lalu menambahkannya ke klaster DB Aurora MySQL yang dipulihkan setelah dibuat:

Sebelum Anda memulai

Sebelum Anda dapat menyalin data ke bucket Amazon S3 dan memulihkan klaster DB dari file tersebut, Anda harus melakukan hal berikut:

  • Instal Percona XtraBackup di server lokal Anda.

  • Izinkan Aurora MySQL untuk mengakses bucket Amazon S3 atas nama Anda.

Instalasi Percona XtraBackup

Amazon Aurora dapat memulihkan cluster DB dari file yang dibuat menggunakan Percona. XtraBackup Anda dapat menginstal Percona XtraBackup dari Unduhan Perangkat Lunak - Percona.

Untuk migrasi MySQL 5.7, gunakan Percona 2.4. XtraBackup

Untuk migrasi MySQL 8.0, gunakan Percona 8.0. XtraBackup Pastikan bahwa versi Percona kompatibel dengan XtraBackup versi mesin database sumber Anda.

Izin yang diperlukan

Untuk memigrasikan data MySQL Anda ke klaster DB Amazon Aurora MySQL, beberapa izin diperlukan:

  • Pengguna yang meminta Aurora membuat cluster baru dari bucket Amazon S3 harus memiliki izin untuk membuat daftar bucket untuk akun Anda. AWS Anda memberikan izin ini kepada pengguna menggunakan kebijakan AWS Identity and Access Management (IAM).

  • Aurora memerlukan izin untuk bertindak atas nama Anda untuk mengakses Amazon S3 bucket tempat Anda menyimpan file yang digunakan untuk membuat klaster DB Amazon Aurora MySQL Anda. Anda memberikan izin yang diperlukan Aurora menggunakan peran layanan IAM.

  • Pengguna yang mengajukan permintaan juga harus memiliki izin untuk menampilkan daftar peran IAM untuk akun AWS Anda.

  • Jika pengguna yang mengajukan permintaan tersebut bertujuan untuk membuat peran layanan IAM atau meminta Aurora membuat peran layanan IAM (dengan menggunakan konsol), pengguna tersebut harus memiliki izin untuk membuat peran IAM bagi akun AWS Anda.

  • Jika Anda berencana untuk mengenkripsi data selama proses migrasi, perbarui kebijakan IAM pengguna yang akan melakukan migrasi untuk memberikan akses RDS ke yang AWS KMS keys digunakan untuk mengenkripsi cadangan. Untuk petunjuk, lihat Membuat kebijakan IAM untuk mengakses sumber daya AWS KMS.

Misalnya, kebijakan IAM berikut memberikan izin minimum yang diperlukan pengguna untuk menggunakan konsol untuk menampilkan daftar peran IAM, membuat peran IAM, menampilkan daftar bucket Amazon S3 untuk akun Anda, dan menampilkan daftar kunci KMS.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:CreateRole", "iam:CreatePolicy", "iam:AttachRolePolicy", "s3:ListBucket", "kms:ListKeys" ], "Resource": "*" } ] }

Selain itu, bagi pengguna yang ingin mengaitkan peran IAM dengan bucket Amazon S3, pengguna IAM harus memiliki izin iam:PassRole untuk peran IAM tersebut. Izin ini memungkinkan administrator membatasi peran IAM mana yang dapat dikaitkan dengan bucket Amazon S3.

Misalnya, kebijakan IAM berikut mengizinkan pengguna mengaitkan peran bernama S3Access dengan bucket Amazon S3.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowS3AccessRole", "Effect":"Allow", "Action":"iam:PassRole", "Resource":"arn:aws:iam::123456789012:role/S3Access" } ] }

Untuk informasi selengkapnya tentang izin pengguna IAM, lihat Mengelola akses menggunakan kebijakan.

Membuat peran layanan IAM

Anda dapat AWS Management Console membuat peran untuk Anda dengan memilih opsi Buat Peran Baru (ditampilkan nanti dalam topik ini). Jika Anda memilih opsi ini dan menentukan nama untuk peran baru, Aurora akan membuat peran layanan IAM yang diperlukan Aurora untuk mengakses bucket Amazon S3 Anda dengan nama yang Anda berikan.

Sebagai alternatif, Anda dapat membuat peran secara manual menggunakan prosedur berikut.

Untuk membuat peran IAM bagi Aurora untuk mengakses Amazon S3
  1. Selesaikan langkah-langkah dalam Membuat kebijakan IAM untuk mengakses sumber daya Amazon S3.

  2. Selesaikan langkah-langkah dalam Membuat peran IAM untuk mengizinkan Amazon Aurora mengakses layanan AWS.

  3. Selesaikan langkah-langkah dalam Mengaitkan peran IAM dengan klaster DB Amazon Aurora MySQL.

Mencadangkan file untuk dipulihkan sebagai klaster DB Amazon Aurora MySQL

Anda dapat membuat cadangan lengkap file database MySQL Anda menggunakan XtraBackup Percona dan mengunggah file cadangan ke bucket Amazon S3. Atau, jika Anda sudah menggunakan Percona XtraBackup untuk mencadangkan file database MySQL Anda, Anda dapat mengunggah direktori dan file cadangan lengkap dan tambahan yang ada ke bucket Amazon S3.

Membuat cadangan lengkap dengan Percona XtraBackup

Untuk membuat cadangan lengkap file database MySQL Anda yang dapat dipulihkan dari Amazon S3 untuk membuat cluster DB MySQL Aurora, gunakan utilitas Percona () untuk mencadangkan database Anda. XtraBackup xtrabackup

Misalnya, perintah berikut akan membuat cadangan dari basis data MySQL dan menyimpan file-nya dalam folder /on-premises/s3-restore/backup.

xtrabackup --backup --user=<myuser> --password=<password> --target-dir=</on-premises/s3-restore/backup>

Jika Anda ingin mengompresi cadangan Anda ke dalam satu file (yang dapat dibagi, jika perlu), Anda dapat menggunakan opsi --stream untuk menyimpan cadangan Anda dalam salah satu format berikut:

  • Gzip (.gz)

  • tar (.tar)

  • Percona xbstream (.xbstream)

Perintah berikut membuat cadangan basis data MySQL Anda yang dibagi menjadi beberapa file Gzip.

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | gzip - | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar.gz

Perintah berikut membuat cadangan basis data MySQL Anda yang dipecah menjadi beberapa file tar.

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar

Perintah berikut membuat cadangan basis data MySQL Anda yang dipecah menjadi beberapa file xbstream.

xtrabackup --backup --user=<myuser> --password=<password> --stream=xbstream \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.xbstream
catatan

Jika Anda melihat kesalahan berikut, ini mungkin disebabkan perbedaan format file dalam perintah Anda:

ERROR:/bin/tar: This does not look like a tar archive

Setelah Anda mencadangkan database MySQL Anda menggunakan utilitas XtraBackup Percona, Anda dapat menyalin direktori dan file cadangan Anda ke bucket Amazon S3.

Untuk informasi tentang membuat dan mengunggah file ke Amazon S3 bucket lihat Memulai Amazon Simple Storage Service dalam Panduan Memulai Amazon S3 .

Menggunakan backup bertahap dengan Percona XtraBackup

Amazon Aurora MySQL mendukung cadangan penuh dan tambahan yang dibuat menggunakan Percona. XtraBackup Jika Anda sudah menggunakan Percona XtraBackup untuk melakukan pencadangan penuh dan bertahap dari file database MySQL Anda, Anda tidak perlu membuat cadangan lengkap dan mengunggah file cadangan ke Amazon S3. Sebagai gantinya, Anda dapat menghemat cukup banyak waktu dengan menyalin direktori dan file cadangan yang ada untuk cadangan penuh dan inkremental ke bucket Amazon S3. Untuk informasi selengkapnya, lihat Buat cadangan inkremental di situs web Percona.

Saat menyalin file cadangan penuh dan inkremental ke bucket Amazon S3, Anda harus menyalin konten direktori dasar secara berulang. Konten tersebut termasuk cadangan penuh dan juga semua direktori dan file cadangan inkremental. Salinan ini harus mempertahankan struktur direktori di bucket Amazon S3. Aurora melakukan iterasi ke semua file dan direktori. Aurora menggunakan file xtrabackup-checkpoints yang disertakan dengan setiap cadangan inkremental untuk mengidentifikasi direktori dasar dan untuk mengurutkan cadangan inkremental berdasarkan rentang nomor urutan log (LSN).

Untuk informasi tentang membuat dan mengunggah file ke bucket Amazon S3, lihat Memulai Amazon Simple Storage Service dalam Panduan Memulai Amazon S3.

Pertimbangan cadangan

Aurora tidak mendukung cadangan sebagian yang dibuat menggunakan Percona. XtraBackup Anda tidak dapat menggunakan opsi berikut untuk membuat cadangan parsial saat mencadangkan file sumber untuk basis data Anda: --tables, --tables-exclude, --tables-file, --databases, --databases-exclude, atau --databases-file.

Untuk informasi selengkapnya tentang mencadangkan database Anda dengan Percona XtraBackup, lihat Percona XtraBackup - Dokumentasi dan Bekerja dengan log biner di situs web Percona.

Aurora mendukung backup tambahan yang dibuat menggunakan Percona. XtraBackup Untuk informasi selengkapnya, lihat Buat cadangan inkremental di situs web Percona.

Aurora menggunakan file cadangan Anda berdasarkan nama file. Pastikan untuk menamai file cadangan Anda dengan ekstensi file yang sesuai berdasarkan format file—misalnya, .xbstream untuk file yang disimpan menggunakan format Percona xbstream.

Aurora menggunakan file cadangan Anda dalam urutan abjad dan juga dalam urutan angka alami. Selalu gunakan opsi split saat Anda mengeluarkan perintah xtrabackup untuk memastikan bahwa file cadangan Anda ditulis dan diberi nama sesuai urutan yang benar.

Amazon S3 membatasi ukuran file yang diunggah ke bucket Amazon S3 hingga 5 TB. Jika data cadangan untuk basis data Anda melebihi 5 TB, gunakan perintah split untuk membagi file cadangan menjadi beberapa file dengan ukuran masing-masing kurang dari 5 TB.

Aurora membatasi jumlah file sumber yang diunggah ke bucket Amazon S3 hingga 1 juta file. Dalam beberapa kasus, data cadangan untuk basis data Anda, termasuk semua cadangan penuh dan inkremental, dapat menghasilkan jumlah file yang besar. Dalam hal ini, gunakan file tarball (.tar.gz) untuk menyimpan file cadangan penuh dan inkremental di bucket Amazon S3.

Saat Anda mengunggah file ke bucket Amazon S3, Anda dapat menggunakan enkripsi di sisi server untuk mengenkripsi data. Anda kemudian dapat memulihkan klaster DB Amazon Aurora MySQL dari file terenkripsi tersebut. Amazon Aurora MySQL dapat memulihkan klaster DB dengan file terenkripsi menggunakan jenis enkripsi di sisi server berikut:

  • Enkripsi di sisi server dengan kunci yang dikelola Amazon S3 (SSE-S3) – Setiap objek dienkripsi dengan kunci unik yang menggunakan enkripsi multifaktor yang kuat.

  • Enkripsi sisi server dengan kunci yang AWS KMS dikelola (SSE-KMS) — Mirip dengan SSE-S3, tetapi Anda memiliki opsi untuk membuat dan mengelola kunci enkripsi sendiri, dan juga perbedaan lainnya.

Untuk informasi tentang menggunakan enkripsi di sisi server saat mengunggah file ke bucket Amazon S3, lihat Melindungi data menggunakan enkripsi di sisi server dalam Panduan Developer Amazon S3.

Memulihkan klaster DB Amazon Aurora MySQL dari bucket Amazon S3

Anda dapat memulihkan file cadangan dari bucket Amazon S3 untuk membuat klaster DB Amazon Aurora MySQL baru dengan menggunakan konsol Amazon RDS.

Untuk memulihkan klaster DB Amazon Aurora MySQL dari file di bucket Amazon S3
  1. Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  2. Di sudut kanan atas konsol Amazon RDS, pilih AWS Wilayah tempat membuat cluster DB Anda. Pilih AWS Wilayah yang sama dengan bucket Amazon S3 yang berisi cadangan database Anda.

  3. Di panel navigasi, pilih Basis data, lalu pilih Pulihkan dari S3.

  4. Pilih Pulihkan dari S3.

    Halaman Buat basis data dengan memulihkan dari S3 akan muncul.

    Halaman ini adalah tempat Anda menentukan detail untuk memulihkan klaster DB dari S3
  5. Di bagian Tujuan S3:

    1. Pilih Bucket S3 yang berisi file cadangan.

    2. (Opsional) Untuk Awalan jalur folder S3, masukkan awalan jalur file untuk file yang disimpan di bucket Amazon S3 Anda.

      Jika Anda tidak menentukan prefiks, RDS akan membuat instans DB Anda menggunakan semua file dan folder di folder root bucket S3. Jika Anda menentukan prefiks, RDS akan membuat instans DB Anda menggunakan file dan folder dalam bucket S3 yang jalur file-nya dimulai dengan prefiks yang ditentukan.

      Misalnya, Anda menyimpan file cadangan di S3 dalam subfolder bernama “cadangan”, dan Anda memiliki beberapa set file cadangan, masing-masing memiliki direktori tersendiri (gzip_backup1, gzip_backup2, dan sebagainya). Dalam kasus ini, Anda menentukan prefiks backup/gzip_backup1 untuk memulihkan dari file di folder gzip_backup1.

  6. Di bagian Opsi mesin:

    1. Untuk Tipe mesin, pilih Amazon Aurora.

    2. Untuk Versi, pilih versi mesin Aurora MySQL untuk instans DB Anda yang dipulihkan.

  7. Untuk Peran IAM, Anda dapat memilih peran IAM yang sudah ada.

  8. (Opsional) Anda juga dapat dibuatkan peran IAM dengan memilih Buat peran baru. Jika demikian:

    1. Masukkan Nama peran IAM.

    2. Pilih opsi untuk Izinkan akses ke kunci KMS:

      • Jika Anda tidak mengenkripsi file cadangan, pilih Tidak.

      • Jika Anda mengenkripsi file cadangan dengan AES-256 (SSE-S3) saat mengunggahnya ke Amazon S3, pilih Tidak. Dalam kasus ini, data didekripsi secara otomatis.

      • Jika Anda mengenkripsi file cadangan dengan enkripsi sisi server AWS KMS (SSE-KMS) saat Anda mengunggahnya ke Amazon S3, pilih Ya. Selanjutnya, pilih kunci KMS yang benar untuk AWS KMS key.

        AWS Management Console Membuat kebijakan IAM yang memungkinkan Aurora untuk mendekripsi data.

      Untuk informasi selengkapnya, lihat Melindungi data menggunakan enkripsi di sisi server dalam Panduan Developer Amazon S3.

  9. Pilih pengaturan untuk klaster DB Anda, seperti konfigurasi penyimpanan klaster DB, kelas instans DB, pengidentifikasi klaster DB, dan kredensial login. Untuk informasi tentang setiap pengaturan, lihat Pengaturan untuk klaster Aurora DB.

  10. Sesuaikan pengaturan tambahan untuk klaster DB Aurora MySQL Anda berdasarkan kebutuhan.

  11. Pilih Buat basis data untuk meluncurkan instans DB Aurora Anda.

Pada konsol Amazon RDS, instans DB baru muncul dalam daftar instans DB. Instans DB memiliki status membuat hingga instans DB dibuat dan siap digunakan. Saat statusnya berubah menjadi tersedia, Anda dapat terhubung ke instans primer untuk klaster DB Anda. Bergantung pada kelas instans DB dan penyimpanan yang dialokasikan, perlu waktu beberapa menit agar instans baru tersedia.

Untuk melihat klaster yang baru dibuat, pilih tampilan Basis data di konsol Amazon RDS lalu pilih klaster DB. Untuk informasi selengkapnya, lihat Melihat klaster DB Amazon Aurora.

Daftar Instans DB Amazon Aurora

Catat port dan titik akhir penulis dari klaster DB. Gunakan titik akhir dan port klaster DB tersebut dalam string koneksi JDBC dan ODBC Anda untuk aplikasi apa pun yang menjalankan operasi tulis atau baca.

Menyinkronkan klaster DB Amazon Aurora MySQL dengan basis data MySQL menggunakan replikasi

Untuk mempersingkat atau meniadakan waktu henti selama migrasi, Anda dapat mereplikasi transaksi yang dilakukan pada basis data MySQL Anda ke klaster DB Aurora MySQL Anda. Replikasi memungkinkan klaster DB disinkronkan dengan transaksi di basis data MySQL yang terjadi selama migrasi. Ketika klaster DB telah sepenuhnya sinkron, Anda dapat menghentikan replikasi dan menyelesaikan migrasi ke Aurora MySQL.

Mengonfigurasi basis data MySQL eksternal dan klaster DB Aurora MySQL Anda untuk replikasi terenkripsi

Untuk mereplikasi data dengan aman, Anda dapat menggunakan replikasi terenkripsi.

catatan

Jika Anda tidak perlu menggunakan replikasi terenkripsi, Anda dapat melewatkan langkah-langkah ini dan melanjutkan ke petunjuk dalam Menyinkronkan klaster DB Amazon Aurora MySQL dengan basis data MySQL eksternal.

Berikut ini adalah prasyarat untuk menggunakan replikasi terenkripsi:

  • Lapisan Soket Aman (SSL) harus diaktifkan di basis data primer MySQL eksternal.

  • Kunci klien dan sertifikat klien harus disiapkan untuk klaster DB Aurora MySQL.

Selama replikasi terenkripsi, klaster DB Aurora MySQL berperan sebagai klien untuk server basis data MySQL. Sertifikat dan kunci untuk klien Aurora MySQL ada di dalam file dengan format .pem.

Untuk mengonfigurasi basis data MySQL eksternal dan klaster DB Aurora MySQL Anda untuk replikasi terenkripsi
  1. Pastikan bahwa Anda siap untuk replikasi terenkripsi:

    • Jika Anda tidak mengaktifkan SSL di basis data primer MySQL eksternal dan tidak menyiapkan kunci klien dan sertifikat klien, aktifkan SSL di server basis data MySQL dan buat kunci klien dan sertifikat klien yang diperlukan.

    • Jika SSL diaktifkan pada primer eksternal, berikan kunci klien dan sertifikat untuk klaster DB Aurora MySQL. Jika Anda tidak memilikinya, buat kunci dan sertifikat baru untuk klaster DB Aurora MySQL. Untuk menandatangani sertifikat klien, Anda harus memiliki kunci otoritas sertifikat yang Anda gunakan untuk mengonfigurasi SSL di basis data primer MySQL eksternal.

    Untuk informasi selengkapnya, lihat Creating SSL certificates and keys using openssl dalam dokumentasi MySQL.

    Anda memerlukan sertifikat otoritas sertifikat, kunci klien, dan sertifikat klien.

  2. Hubungkan ke klaster DB Aurora MySQL sebagai pengguna primer menggunakan SSL.

    Untuk informasi tentang menghubungkan ke klaster DB Aurora MySQL dengan SSL, lihat Menggunakan TLS dengan klaster DB Aurora MySQL.

  3. Jalankan prosedur tersimpan mysql.rds_import_binlog_ssl_material untuk mengimpor informasi SSL ke dalam klaster DB Aurora MySQL.

    Untuk parameter ssl_material_value, masukkan informasi dari file format .pem untuk klaster DB Aurora MySQL di payload JSON yang benar.

    Contoh berikut mengimpor informasi SSL ke dalam klaster DB Aurora MySQL. Dalam file berformat .pem, kode konten biasanya lebih panjang dari kode konten yang ditunjukkan dalam contoh.

    call mysql.rds_import_binlog_ssl_material( '{"ssl_ca":"-----BEGIN CERTIFICATE----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END CERTIFICATE-----\n","ssl_cert":"-----BEGIN CERTIFICATE----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END CERTIFICATE-----\n","ssl_key":"-----BEGIN RSA PRIVATE KEY----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END RSA PRIVATE KEY-----\n"}');

    Untuk informasi selengkapnya, lihat mysql.rds_import_binlog_ssl_material dan Menggunakan TLS dengan klaster DB Aurora MySQL.

    catatan

    Setelah menjalankan prosedur ini, rahasia disimpan dalam file. Untuk menghapus file nanti, Anda dapat menjalankan prosedur tersimpan mysql.rds_remove_binlog_ssl_material.

Menyinkronkan klaster DB Amazon Aurora MySQL dengan basis data MySQL eksternal

Anda dapat menyinkronkan klaster DB Amazon Aurora MySQL dengan basis data MySQL menggunakan replikasi.

Untuk menyinkronkan klaster DB Aurora MySQL Anda dengan basis data MySQL menggunakan replikasi
  1. Pastikan file /etc/my.cnf untuk basis data MySQL eksternal memiliki entri yang relevan.

    Jika replikasi terenkripsi tidak diperlukan, pastikan basis data MySQL eksternal dimulai dengan log biner (binlog) diaktifkan dan SSL dinonaktifkan. Berikut ini adalah entri yang relevan dalam file /etc/my.cnf untuk data yang tidak terenkripsi.

    log-bin=mysql-bin server-id=2133421 innodb_flush_log_at_trx_commit=1 sync_binlog=1

    Jika replikasi terenkripsi diperlukan, pastikan basis data MySQL eksternal dimulai dengan SSL dan binlog diaktifkan. Entri dalam file /etc/my.cnf mencakup lokasi file .pem untuk server basis data MySQL.

    log-bin=mysql-bin server-id=2133421 innodb_flush_log_at_trx_commit=1 sync_binlog=1 # Setup SSL. ssl-ca=/home/sslcerts/ca.pem ssl-cert=/home/sslcerts/server-cert.pem ssl-key=/home/sslcerts/server-key.pem

    Anda dapat memverifikasi bahwa SSL diaktifkan dengan perintah berikut.

    mysql> show variables like 'have_ssl';

    Output Anda harus serupa dengan berikut ini.

    +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+ | Variable_name | Value | +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+ | have_ssl | YES | +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+ 1 row in set (0.00 sec)
  2. Tentukan posisi log biner awal untuk replikasi. Anda menentukan posisi untuk memulai replikasi di langkah selanjutnya.

    Menggunakan AWS Management Console

    1. Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

    2. Di panel navigasi, pilih Peristiwa.

    3. Di daftar Peristiwa, catat posisi di peristiwa Dipulihkan dari nama file log biner.

      Lihat MySQL utama

    Menggunakan AWS CLI

    Anda juga bisa mendapatkan nama dan posisi file binlog dengan menggunakan perintah AWS CLI describe-events. Hal berikut menunjukkan contoh perintah describe-events.

    PROMPT> aws rds describe-events

    Pada output, identifikasi peristiwa yang menunjukkan posisi binlog.

  3. Saat terhubung dengan basis data MySQL eksternal, buat pengguna yang akan digunakan untuk replikasi. Akun ini digunakan hanya untuk replikasi dan harus dibatasi pada domain Anda untuk meningkatkan keamanan. Berikut adalah contohnya.

    mysql> CREATE USER '<user_name>'@'<domain_name>' IDENTIFIED BY '<password>';

    Pengguna memerlukan hak akses REPLICATION CLIENT dan REPLICATION SLAVE. Berikan hak akses ini kepada pengguna.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '<user_name>'@'<domain_name>';

    Jika Anda perlu menggunakan replikasi terenkripsi, wajibkan koneksi SSL untuk pengguna replikasi. Misalnya, Anda dapat menggunakan pernyataan berikut untuk mewajibkan koneksi SSL pada akun pengguna <user_name>.

    GRANT USAGE ON *.* TO '<user_name>'@'<domain_name>' REQUIRE SSL;
    catatan

    Jika REQUIRE SSL tidak disertakan, koneksi replikasi dapat kembali ke koneksi yang tidak terenkripsi tanpa peringatan.

  4. Di konsol Amazon RDS, tambahkan alamat IP server yang meng-host basis data MySQL eksternal ke grup keamanan VPC untuk klaster DB Aurora MySQL. Untuk informasi selengkapnya tentang memodifikasi grup keamanan VPC, lihat Grup keamanan untuk VPC Anda dalam Panduan Pengguna Amazon Virtual Private Cloud.

    Anda mungkin juga perlu mengonfigurasi jaringan lokal Anda untuk mengizinkan koneksi dari alamat IP klaster DB Aurora MySQL Anda agar klaster DB ini dapat berkomunikasi dengan instans MySQL eksternal Anda. Untuk menemukan alamat IP klaster DB Aurora MySQL, gunakan perintah host.

    host <db_cluster_endpoint>

    Nama host adalah nama DNS dari titik akhir klaster DB Aurora MySQL.

  5. Aktifkan replikasi log biner dengan menjalankan prosedur tersimpan mysql.rds_reset_external_master (Aurora MySQL versi 2) atau mysql.rds_reset_external_source (Aurora MySQL versi 3). Prosedur tersimpan ini memiliki sintaksis berikut.

    CALL mysql.rds_set_external_master ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption ); CALL mysql.rds_set_external_source ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption );

    Untuk informasi tentang parameter, lihat mysql.rds_reset_external_master (Aurora MySQL versi 2) dan mysql.rds_reset_external_source (Aurora MySQL versi 3).

    Untuk mysql_binary_log_file_name dan mysql_binary_log_file_location, gunakan posisi dalam peristiwa Dipulihkan dari nama file log biner yang Anda catat sebelumnya.

    Jika data dalam klaster DB Aurora MySQL tidak dienkripsi, parameter ssl_encryption harus diatur ke 0. Jika data dienkripsi, parameter ssl_encryption harus diatur ke 1.

    Contoh berikut menjalankan prosedur untuk klaster DB Aurora MySQL yang memiliki data terenkripsi.

    CALL mysql.rds_set_external_master( 'Externaldb.some.com', 3306, 'repl_user'@'mydomain.com', 'password', 'mysql-bin.000010', 120, 1); CALL mysql.rds_set_external_source( 'Externaldb.some.com', 3306, 'repl_user'@'mydomain.com', 'password', 'mysql-bin.000010', 120, 1);

    Prosedur tersimpan ini menetapkan parameter yang digunakan klaster DB Aurora MySQL untuk menghubungkan ke basis data MySQL eksternal dan membaca log binernya. Jika data dienkripsi, prosedur ini juga akan mengunduh sertifikat otoritas sertifikat SSL, sertifikat klien, dan kunci klien ke disk lokal.

  6. Mulai replikasi log biner dengan menjalankan prosedur tersimpan mysql.rds_start_replication.

    CALL mysql.rds_start_replication;
  7. Pantau seberapa jauh klaster DB Aurora MySQL tertinggal dari basis data primer replikasi MySQL. Untuk melakukannya, hubungkan ke klaster DB Aurora MySQL dan jalankan perintah berikut.

    Aurora MySQL version 2: SHOW SLAVE STATUS; Aurora MySQL version 3: SHOW REPLICA STATUS;

    Dalam output perintah, bidang Seconds Behind Master menunjukkan seberapa jauh klaster DB Aurora MySQL tertinggal dari basis data primer MySQL. Ketika nilai ini 0 (nol), klaster DB Aurora MySQL telah sinkron dengan basis data primer, dan Anda dapat melanjutkan ke langkah berikutnya untuk menghentikan replikasi.

  8. Hubungkan ke basis data primer replikasi MySQL dan hentikan replikasi. Untuk melakukannya, jalankan prosedur tersimpan mysql.rds_stop_replication.

    CALL mysql.rds_stop_replication;