Mengimpor data ke database Amazon RDS for MySQL dengan downtime yang dikurangi - Layanan Basis Data Relasional Amazon

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

Mengimpor data ke database Amazon RDS for MySQL dengan downtime yang dikurangi

Dalam beberapa kasus, Anda mungkin perlu mengimpor data dari MariaDB eksternal atau database MySQL yang mendukung aplikasi langsung ke RDS untuk instance MariaDB, RDS untuk MySQL DB instance, atau RDS untuk MySQL Multi-AZ DB cluster. Gunakan prosedur berikut untuk meminimalkan dampak terhadap ketersediaan aplikasi. Prosedur ini juga dapat berguna jika Anda menggunakan basis data yang sangat besar. Dengan menggunakan prosedur ini, Anda dapat mengurangi biaya impor dengan mengurangi jumlah data yang dilewatkan di seluruh jaringan AWS.

Dalam prosedur ini, Anda mentransfer salinan data database Anda ke EC2 instans Amazon dan mengimpor data ke database Amazon RDS baru. Anda kemudian menggunakan replikasi untuk membawa database Amazon RDS up-to-date dengan instans eksternal langsung Anda, sebelum mengarahkan aplikasi Anda ke database Amazon RDS. Jika instance eksternal adalah MariaDB 10.0.24 atau lebih tinggi dan instance targetnya adalah RDS untuk MariaDB, konfigurasikan replikasi MariaDB berdasarkan pengidentifikasi transaksi global (). GTIDs Jika tidak, lakukan konfigurasi pada replikasi berdasarkan koordinat log biner. Kami menyarankan replikasi berbasis GTID jika basis data eksternal Anda mendukungnya karena replikasi berbasis GTID adalah metode yang lebih andal. Untuk informasi selengkapnya, lihat Global transaction ID dalam dokumentasi MariaDB.

catatan

Jika Anda ingin mengimpor data ke instans RDS untuk MySQL DB dan skenario Anda mendukungnya, sebaiknya pindahkan data masuk dan keluar Amazon RDS dengan menggunakan file cadangan dan Amazon S3. Untuk informasi selengkapnya, lihat Memulihkan cadangan ke instans Amazon RDS for MySQL DB.

Diagram berikut menunjukkan mengimpor database MySQL eksternal ke database MySQL di Amazon RDS.

Alur kerja yang menunjukkan mengimpor database MySQL eksternal ke database MySQL di Amazon RDS.

Tugas 1: Buat salinan database yang ada

Langkah pertama dalam proses memigrasikan jumlah data yang besar ke basis data RDS for MariaDB atau RDS for MySQL dengan waktu henti minimal adalah membuat salinan data sumber.

Diagram berikut menunjukkan membuat cadangan dari database MySQL.

Alur kerja yang menunjukkan pembuatan cadangan database MySQL.

Anda dapat menggunakan utilitas mysqldump untuk menciptakan sebuah pencadangan basis data dalam format SQL atau delimited-text. Di MariaDB 10.5, klien disebut mariadb-dump. Dimulai dengan MariaDB 11.0.1, Anda harus menggunakan alih-alih. mariadb-dump mysqldump Kami sarankan Anda melakukan uji coba dengan setiap format dalam lingkungan non-produksi untuk melihat metode mana yang dapat meminimalkan jumlah waktu untuk menjalankan mysqldump.

Kami juga menyarankan Anda mempertimbangkan mysqldump kinerja terhadap manfaat yang ditawarkan dengan menggunakan format teks terbatas untuk memuat. Pencadangan yang menggunakan format delimited-text akan menciptakan sebuah file teks yang dipisahkan oleh tab untuk setiap tabel yang disalin ke lokasi lain. Untuk mengurangi jumlah waktu yang dibutuhkan untuk mengimpor basis data Anda, Anda dapat memuat file tersebut secara paralel menggunakan perintah LOAD DATA LOCAL INFILE. Untuk informasi selengkapnya, lihat Memuat data untuk MariaDB atau Memuat data untuk MySQL.

Sebelum memulai operasi pencadangan, pastikan Anda mengatur opsi replikasi pada basis data MariaDB atau MySQL yang Anda salin ke Amazon RDS. Opsi replikasi mencakup pengaktifan pencatatan log biner dan pengaturan ID server yang unik. Pengaturan opsi ini menyebabkan server Anda mulai mencatat log transaksi basis data dan menyiapkannya menjadi sebuah instans replikasi sumber di lain waktu dalam proses ini.

Perhatikan rekomendasi dan pertimbangan berikut:

  • Gunakan opsi --single-transaction dengan mysqldump karena dapat memindahkan tahap konsisten dari basis data ke lokasi lain. Untuk memastikan file dump valid, jangan menjalankan pernyataan bahasa definisi data (DDL) saat mysqldump sedang berjalan. Anda dapat menjadwalkan sebuah window pemeliharaan untuk operasi ini.

  • Jangan sertakan skema berikut dalam filedump:

    • sys

    • performance_schema

    • information_schema

    mariadb-dumpUtilitas mysqldump dan mengecualikan skema ini secara default.

  • Jika Anda perlu memigrasikan pengguna dan hak istimewa, pertimbangkan untuk menggunakan alat yang menghasilkan bahasa kontrol data (DCL) untuk membuatnya kembali, seperti utilitas. pt-show-grants

Mengatur opsi replikasi

  1. Edit file my.cnf File ini biasanya terletak di bawah/etc.

    sudo vi /etc/my.cnf

    Tambahkan opsi log_bin dan server_id ke bagian [mysqld]. Opsi log_bin menyediakan sebuah pengidentifikasi nama file untuk file log biner. Opsi server_id menyediakan pengidentifikasi unik untuk server dalam hubungan sumber-replika.

    Contoh berikut menunjukkan [mysqld] bagian diperbarui dari my.cnf file:

    [mysqld] log-bin=mysql-bin server-id=1

    Untuk informasi selengkapnya, lihat Mengatur Konfigurasi Sumber Replikasi dalam dokumentasi MySQL.

  2. Untuk replikasi dengan cluster DB multi-AZ, atur GTID_MODE parameter ENFORCE_GTID_CONSISTENCY dan ke. ON

    mysql> SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
    mysql> SET @@GLOBAL.GTID_MODE = ON;

    Pengaturan ini tidak diperlukan untuk replikasi dengan instans DB.

  3. Mulai ulang layanan mysql.

    sudo service mysqld restart

Membuat salinan cadangan basis data yang sudah ada

  1. Buat cadangan data Anda menggunakan mysqldump utilitas atau utilitas, dengan mariadb-dump menentukan format SQL atau teks terbatas.

    Untuk MySQL 8.0.25 dan versi yang lebih rendah, --master-data=2 tentukan untuk membuat file cadangan yang dapat digunakan untuk memulai replikasi antar server. Untuk MySQL 8.0.26 dan versi yang lebih tinggi, --source-data=2 tentukan untuk membuat file cadangan yang dapat digunakan untuk memulai replikasi antar server. Untuk informasi selengkapnya, lihat mysqldump — Program Backup Database dalam dokumentasi MySQL.

    Untuk meningkatkan kinerja dan memastikan integritas data, gunakan --order-by-primary dan --single-transaction opsi untukmysqldump.

    Untuk menghindari menyertakan database sistem MySQL dalam cadangan, jangan gunakan --all-databases opsi dengan. mysqldump Untuk informasi selengkapnya, lihat Membuat Snapshot Data Menggunakan mysqldump dalam dokumentasi MySQL.

    Gunakanchmod, jika perlu, untuk memastikan bahwa direktori tempat file cadangan dibuat dapat ditulis.

    penting

    Pada Windows, jalankan jendela perintah sebagai administrator.

    • Untuk menghasilkan output SQL, gunakan perintah berikut:

      Untuk Linux, macOS, atau Unix:

      sudo mysqldump \ --databases database_name \ --master-data=2 \ --single-transaction \ --order-by-primary \ -r backup.sql \ -u local_user \ -ppassword
      catatan

      Sebagai praktik terbaik keamanan, tentukan kredensil selain petunjuk yang ditampilkan dalam contoh.

      Untuk Windows:

      mysqldump ^ --databases database_name ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -r backup.sql ^ -u local_user ^ -ppassword
      catatan

      Sebagai praktik terbaik keamanan, tentukan kredensil selain petunjuk yang ditampilkan dalam contoh.

    • Untuk menghasilkan output teks terbatas, gunakan perintah berikut:

      Untuk Linux, macOS, atau Unix:

      sudo mysqldump \ --tab=target_directory \ --fields-terminated-by ',' \ --fields-enclosed-by '"' \ --lines-terminated-by 0x0d0a \ database_name \ --master-data=2 \ --single-transaction \ --order-by-primary \ -ppassword

      Untuk Windows:

      mysqldump ^ --tab=target_directory ^ --fields-terminated-by "," ^ --fields-enclosed-by """ ^ --lines-terminated-by 0x0d0a ^ database_name ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -ppassword
      catatan

      Sebagai praktik terbaik keamanan, tentukan kredensil selain petunjuk yang ditampilkan dalam contoh.

      Pastikan Anda membuat prosedur, pemicu, fungsi, atau peristiwa tersimpan apa pun secara manual di dalam basis data Amazon RDS Anda. Jika objek ini berada di basis data yang Anda salin, jangan sertakan saat Anda menjalankan mysqldump. Untuk melakukannya, sertakan argumen berikut dengan mysqldump perintah Anda:

      • --routines=0

      • --triggers=0

      • --events=0

      Untuk MySQL 8.0.22 dan versi yang lebih rendah dan versi MariaDB, saat Anda mysqldump menjalankan dan menentukan format teks terbatas, komentar akan dikembalikan. CHANGE MASTER TO Komentar ini berisi nama dan posisi file log master. Untuk MySQL 8.0.23 dan versi yang lebih tinggi, ketika Anda mysqldump menjalankan menggunakan format teks terbatas, komentar dikembalikan. CHANGE REPLICATION SOURCE TO Komentar ini berisi nama file log sumber dan posisi. Jika instance eksternal adalah apa pun selain MariaDB 10.0.24 dan versi yang lebih tinggi, atau MySQL 8.0.23 dan versi yang lebih tinggi, perhatikan nilai untuk dan. MASTER_LOG_FILE MASTER_LOG_POS Anda memerlukan nilai-nilai ini saat menyiapkan replikasi.

      Output berikut dikembalikan untuk versi MariaDB dan untuk MySQL 8.0.22 dan versi yang lebih rendah:

      -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;

      Output berikut dikembalikan untuk MySQL 8.0.23 dan versi yang lebih tinggi:

      -- Position to start replication or point-in-time recovery from -- -- CHANGE SOURCE TO SOURCE_LOG_FILE='mysql-bin-changelog.000031', SOURCE_LOG_POS=107;

      Untuk MySQL 8.0.22 dan versi yang lebih rendah, jika Anda menggunakan format SQL, Anda bisa mendapatkan nama file log master dan posisi di komentar di CHANGE MASTER TO file cadangan. Untuk MySQL 8.0.23 dan versi yang lebih tinggi, jika Anda menggunakan format SQL, Anda bisa mendapatkan nama file log sumber dan posisi di komentar di CHANGE REPLICATION SOURCE TO file cadangan. Jika instans eksternalnya adalah MariaDB versi 10.0.24 atau yang lebih tinggi, Anda dapat memperoleh GTID pada langkah berikutnya.

  2. Jika instance eksternal yang Anda gunakan adalah MariaDB versi 10.0.24 atau lebih tinggi, gunakan replikasi berbasis GTID. Jalankan SHOW MASTER STATUS pada instance MariaDB eksternal untuk mendapatkan nama dan posisi file log biner, lalu ubah menjadi GTID dengan menjalankan BINLOG_GTID_POS instance MariaDB eksternal.

    SELECT BINLOG_GTID_POS('binary_log_file_name', binary_log_file_position);

    Perhatikan GTID kembali. Anda memerlukan GTID untuk mengkonfigurasi replikasi.

  3. Kompres data yang disalin untuk mengurangi jumlah sumber daya jaringan yang dibutuhkan untuk menyalin data Anda ke basis data Amazon RDS. Catat ukuran file cadangan. Anda memerlukan informasi ini saat menentukan seberapa besar EC2 instans Amazon untuk dibuat. Setelah selesai, kompres file cadangan menggunakan GZIP atau utilitas kompresi pilihan Anda.

    • Untuk mengompres output SQL, gunakan perintah berikut:

      gzip backup.sql
    • Untuk mengompres output teks terbatas, gunakan perintah berikut:

      tar -zcvf backup.tar.gz target_directory

Tugas 2: Buat EC2 instance Amazon dan salin database terkompresi

Menyalin file cadangan basis data terkompresi ke EC2 instans Amazon membutuhkan lebih sedikit sumber daya jaringan daripada melakukan salinan langsung data yang tidak terkompresi antar instance database. Setelah data Anda ada di Amazon EC2, Anda dapat menyalinnya dari sana langsung ke database MariaDB atau MySQL Anda. Agar Anda dapat menghemat biaya sumber daya jaringan, EC2 instans Amazon Anda harus Wilayah AWS sama dengan instans Amazon RDS DB Anda. Memiliki EC2 instans Amazon yang Wilayah AWS sama dengan database Amazon RDS Anda juga mengurangi latensi jaringan selama impor.

Diagram berikut menunjukkan menyalin cadangan database ke EC2 instance Amazon.

Alur kerja yang menampilkan penyalinan cadangan database ke instans Amazon EC2.

Untuk membuat EC2 instans Amazon dan menyalin data Anda

  1. Di Wilayah AWS tempat Anda berencana untuk membuat database Amazon RDS, buat virtual private cloud (VPC), grup keamanan VPC, dan subnet VPC. Pastikan aturan masuk untuk grup keamanan VPC Anda mengizinkan alamat IP yang dibutuhkan agar aplikasi Anda dapat terhubung ke AWS. Anda dapat menentukan rentang alamat IP — misalnya, —atau grup keamanan VPC 203.0.113.0/24 lainnya. Anda dapat menggunakan konsol VPC Amazon untuk membuat dan mengelola VPCs, subnet, dan grup keamanan. Untuk informasi selengkapnya, lihat Memulai Amazon VPC di Panduan Pengguna Amazon Virtual Private Cloud.

  2. Buka EC2 konsol Amazon dan pilih Wilayah AWS untuk memuat EC2 instans Amazon dan database Amazon RDS Anda. Luncurkan EC2 instans Amazon menggunakan VPC, subnet, dan grup keamanan yang Anda buat di Langkah 1. Pastikan Anda memilih tipe instans dengan penyimpanan yang cukup untuk file cadangan basis data Anda saat tidak terkompresi. Untuk detail tentang EC2 instans Amazon, lihat Memulai Amazon EC2 di Panduan Pengguna Amazon Elastic Compute Cloud.

  3. Untuk terhubung ke database Amazon RDS dari EC2 instans Amazon Anda, edit grup keamanan VPC Anda. Tambahkan aturan masuk yang menentukan alamat IP pribadi instance Anda EC2 . Anda dapat menemukan alamat IP pribadi pada tab Detail pada panel Instans di jendela EC2 konsol. Untuk mengedit grup keamanan VPC dan menambahkan aturan masuk, pilih Grup Keamanan di panel navigasi EC2 konsol, pilih grup keamanan Anda, lalu tambahkan aturan masuk untuk MySQL atau Aurora yang menentukan alamat IP pribadi instans Anda. EC2 Untuk mempelajari cara menambahkan aturan masuk ke grup keamanan VPC, lihat Aturan grup keamanan di Panduan Pengguna Amazon Virtual Private Cloud.

  4. Salin file cadangan basis data terkompresi dari sistem lokal Anda ke EC2 instans Amazon Anda. Gunakanchmod, jika perlu, untuk memastikan bahwa Anda memiliki izin menulis untuk direktori target EC2 instance Amazon. Anda dapat menggunakan scp atau klien Secure Shell (SSH) untuk menyalin file. Perintah berikut adalah scp perintah contoh:

    scp -r -i key pair.pem backup.sql.gz ec2-user@EC2 DNS:/target_directory/backup.sql.gz
    penting

    Saat menyalin data sensitif, pastikan untuk menggunakan protokol transfer jaringan yang aman.

  5. Hubungkan ke EC2 instans Amazon Anda dan instal pembaruan terbaru dan alat klien MySQL menggunakan perintah berikut:

    sudo yum update -y sudo yum install mysql -y

    Untuk informasi selengkapnya, lihat Connect ke instans Linux Anda di Panduan Pengguna Amazon Elastic Compute Cloud.

    penting

    Contoh ini menginstal klien MySQL pada Amazon Machine Image (AMI) untuk distribusi Linux Amazon. Contoh ini tidak menginstal klien MySQL pada distribusi yang berbeda, seperti Ubuntu atau Red Hat Enterprise Linux. Untuk informasi tentang menginstal MySQL, lihat Menginstal MySQL di dokumentasi MySQL.

  6. Saat terhubung ke EC2 instans Amazon Anda, dekompresi file cadangan database Anda. Perintah berikut adalah contohnya.

    • Untuk mendekompresi output SQL, gunakan perintah berikut:

      gzip backup.sql.gz -d
    • Untuk mendekompresi output delimited-text, gunakan perintah berikut:

      tar xzvf backup.tar.gz

Tugas 3: Buat database MySQL atau MariaDB dan impor data dari instans Amazon Anda EC2

Dengan membuat instance RDS untuk MariaDB DB, instans RDS untuk MySQL DB, atau cluster DB RDS untuk MySQL Multi-AZ yang sama dengan instans Amazon Anda, Anda dapat mengimpor file cadangan database Wilayah AWS dari EC2 Amazon lebih cepat daripada melalui internet. EC2

Diagram berikut menunjukkan mengimpor cadangan dari EC2 instance Amazon ke database MySQL.

Alur kerja yang menunjukkan mengimpor cadangan dari EC2 instance ke database MySQL.

Untuk membuat basis data MariaDB atau MySQL dan mengimpor data Anda

  1. Tentukan kelas instans DB dan jumlah ruang penyimpanan yang dibutuhkan untuk mendukung perkiraan beban kerja untuk basis data Amazon RDS ini. Sebagai bagian dari proses ini, putuskan berapa ruang dan kapasitas pemrosesan yang memadai untuk prosedur pemuatan data Anda. Juga, putuskan apa yang diperlukan untuk menangani beban kerja produksi. Anda dapat memperkirakan ini berdasarkan ukuran dan sumber daya dari basis data MariaDB atau MySQL sumber. Untuk informasi selengkapnya, lihat DB.

  2. Buat instans DB atau cluster DB multi-AZ di Wilayah AWS yang berisi EC2 instans Amazon Anda.

    Untuk membuat RDS untuk MySQL Multi-AZ DB cluster, ikuti petunjuk di. Membuat cluster DB Multi-AZ untuk Amazon RDS

    Untuk membuat RDS untuk MariaDB atau RDS untuk MySQL DB instance, ikuti petunjuk dan gunakan panduan berikut: Membuat instans DB Amazon RDS

    • Tentukan versi mesin DB yang kompatibel dengan instans DB sumber Anda.

      • Jika instans sumber Anda adalah MySQL 5.5.x, instans DB Amazon RDS harus MySQL.

      • Jika instans sumber Anda adalah MySQL 5.6.x atau 5.7.x, instans DB Amazon RDS harus MySQL atau MariaDB.

      • Jika instans sumber Anda adalah MySQL 8.0.x, instans DB Amazon RDS harus MySQL 8.0.x.

      • Jika instance sumber Anda adalah MySQL 8.4.x, instans Amazon RDS DB harus MySQL 8.4.x.

      • Jika instans sumber Anda adalah MariaDB 5.5 atau yang lebih tinggi, instans DB Amazon RDS harus MariaDB.

    • Tentukan grup keamanan virtual private cloud (VPC) dan VPC yang sama dengan instans Amazon Anda. EC2 Pendekatan ini memastikan bahwa EC2 instans Amazon Anda dan instans Amazon RDS Anda terlihat satu sama lain melalui jaringan. Pastikan instans DB Anda dapat diakses publik. Untuk mengatur replikasi dengan database sumber Anda seperti yang dijelaskan di bagian berikut, instans DB Anda harus dapat diakses publik.

    • Jangan mengonfigurasikan lebih dari satu Zona Ketersediaan, retensi cadangan, atau replika baca sebelum Anda selesai mengimpor cadangan basis data. Setelah impor selesai, Anda dapat mengonfigurasi Multi-AZ dan retensi cadangan untuk instans produksi.

  3. Tinjau opsi konfigurasi default untuk basis data Amazon RDS. Jika grup parameter default untuk basis data tidak memiliki opsi konfigurasi yang Anda inginkan, temukan grup parameter lain atau buat grup parameter baru. Untuk informasi selengkapnya tentang membuat grup parameter, lihatGrup parameter untuk RDS.

  4. Hubungkan ke basis data Amazon RDS baru sebagai pengguna master. Buat pengguna yang diperlukan untuk mendukung administrator, aplikasi, dan layanan yang perlu mengakses instans DB. Nama host untuk database Amazon RDS adalah nilai Endpoint untuk instance DB ini tanpa nomor port, misalnya,. mysampledb.123456789012.us-west-2.rds.amazonaws.com Anda dapat menemukan nilai endpoint dalam detail database di konsol Amazon RDS.

  5. Connect ke EC2 instans Amazon Anda. Untuk informasi selengkapnya, lihat Connect ke instans Linux Anda di Panduan Pengguna Amazon Elastic Compute Cloud.

  6. Connect ke database Amazon RDS Anda sebagai host jarak jauh dari EC2 instans Amazon Anda menggunakan mysql perintah. Perintah berikut adalah contoh:

    mysql -h host_name -P 3306 -u db_master_user -p

    host_nameIni adalah titik akhir basis data Amazon RDS.

  7. Pada mysql prompt, jalankan source perintah dan berikan nama file dump database Anda. Perintah ini memuat data ke instans Amazon RDS DB.

    • Untuk format SQL, gunakan perintah berikut:

      mysql> source backup.sql;
    • Untuk format teks terbatas, buat database terlebih dahulu, jika bukan database default yang Anda buat saat menyiapkan database Amazon RDS.

      mysql> create database database_name; mysql> use database_name;

      Lalu buat tabel.

      mysql> source table1.sql mysql> source table2.sql etc...

      Lalu impor data.

      mysql> LOAD DATA LOCAL INFILE 'table1.txt' INTO TABLE table1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; mysql> LOAD DATA LOCAL INFILE 'table2.txt' INTO TABLE table2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; etc...

      Untuk meningkatkan performa, Anda dapat melakukan operasi ini secara paralel dari beberapa koneksi sehingga semua tabel Anda akan diciptakan dan kemudian dimuat secara bersamaan.

      catatan

      Jika Anda menggunakan opsi pemformatan data apa pun mysqldump saat Anda pertama kali membuang tabel, pastikan untuk menggunakan opsi yang sama LOAD DATA LOCAL INFILE untuk memastikan interpretasi yang tepat dari konten file data.

  8. Jalankan SELECT kueri sederhana terhadap satu atau dua tabel dalam database yang diimpor untuk memverifikasi bahwa impor berhasil.

Jika Anda tidak lagi memerlukan EC2 instans Amazon yang digunakan dalam prosedur ini, hentikan EC2 instance untuk mengurangi penggunaan AWS sumber daya Anda. Untuk menghentikan instance, lihat Mengakhiri EC2 instance di Panduan Pengguna Amazon Elastic Compute Cloud.

Tugas 4: Replikasi data dari database eksternal Anda ke database Amazon RDS baru Anda

Basis data sumber Anda kemungkinan diperbarui pada saat menyalin dan mentransfer data ke basis data MariaDB atau MySQL. Dengan demikian, Anda dapat menggunakan replikasi untuk membawa database yang disalin up-to-date dengan database sumber.

Alur kerja yang menunjukkan replikasi data dari database MySQL eksternal ke database di Amazon RDS.

Izin yang diperlukan untuk memulai replikasi pada database Amazon RDS dibatasi dan tidak tersedia untuk pengguna master Amazon RDS Anda. Karena itu, gunakan prosedur tersimpan Amazon RDS yang sesuai untuk versi mesin utama Anda:

Memulai replikasi

Di Tugas 1 saat Anda mengatur opsi replikasi, Anda mengaktifkan logging biner dan menetapkan ID server unik untuk basis data sumber Anda. Sekarang Anda dapat mengatur basis data Amazon RDS Anda sebagai replika dengan basis data live Anda sebagai instans replikasi sumber.

  1. Di konsol Amazon RDS, tambahkan alamat IP server yang menghosting basis data sumber ke grup keamanan VPC untuk database Amazon RDS. Untuk informasi selengkapnya tentang mengonfigurasi grup keamanan VPC, lihat Mengonfigurasi aturan grup keamanan di Panduan Pengguna Amazon Virtual Private Cloud.

    Anda mungkin juga perlu mengonfigurasi jaringan lokal Anda untuk mengizinkan koneksi dari alamat IP database Amazon RDS Anda sehingga dapat berkomunikasi dengan instance sumber Anda. Untuk menemukan alamat IP database Amazon RDS, gunakan host perintah:

    host host_name

    host_nameIni adalah nama DNS dari titik akhir database Amazon RDS, misalnya. myinstance.123456789012.us-east-1.rds.amazonaws.com Anda dapat menemukan nilai endpoint dalam detail instans DB di konsol Amazon RDS.

  2. Menggunakan klien pilihan Anda, hubungkan ke instans sumber dan buat pengguna untuk digunakan untuk replikasi. Akun ini digunakan hanya untuk replikasi dan harus dibatasi pada domain Anda untuk meningkatkan keamanan. Perintah berikut adalah contoh:

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
    catatan

    Tentukan kredensial selain prompt yang ditampilkan di sini sebagai praktik terbaik keamanan.

  3. Untuk instans sumber, berikan hak istimewa REPLICATION CLIENT dan REPLICATION SLAVE kepada pengguna replikasi Anda. Misalnya, untuk memberikan keistimewaan REPLICATION CLIENT dan REPLICATION SLAVE pada semua basis data untuk pengguna 'repl_user' pada domain Anda, terbitkan perintah berikut:

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
  4. Jika Anda menggunakan format SQL untuk membuat file cadangan dan instance eksternal bukan MariaDB 10.0.24 atau lebih tinggi, lihat isi file tersebut dengan menjalankan perintah berikut:

    cat backup.sql

    File tersebut mencakup sebuah komentar CHANGE MASTER TO yang berisi nama dan posisi file log master. Komentar ini disertakan dalam file cadangan saat Anda menggunakan opsi --master-data dengan mysqldump. Perhatikan nilai untuk MASTER_LOG_FILE dan MASTER_LOG_POS.

    -- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;

    Jika Anda menggunakan format teks yang dibatasi untuk membuat file cadangan dan instance eksternal bukan MariaDB 10.0.24 atau lebih tinggi, Anda seharusnya sudah memiliki koordinat log biner dari Langkah 1 untuk membuat salinan cadangan dari prosedur database yang ada di bawah Tugas 1.

    Jika instance eksternal adalah MariaDB 10.0.24 atau lebih tinggi, Anda seharusnya sudah memiliki GTID untuk memulai replikasi dari Langkah 2 dari Untuk membuat salinan cadangan dari prosedur database yang ada di bawah Tugas 1.

  5. Jadikan basis data Amazon RDS sebagai replika. Jika instance eksternal bukan MariaDB 10.0.24 atau yang lebih tinggi, sambungkan ke database Amazon RDS sebagai pengguna utama dan identifikasi database sumber sebagai instance replikasi sumber dengan menggunakan prosedur tersimpan Amazon RDS yang sesuai:

    Jika Anda memiliki file cadangan format SQL, gunakan nama file log master dan posisi log master yang Anda tentukan di Langkah 4. Jika Anda menggunakan format teks terbatas, gunakan nama dan posisi yang Anda tentukan saat membuat file cadangan. Perintah berikut adalah contohnya:

    MySQL 8.4 dan versi yang lebih tinggi

    CALL mysql.rds_set_external_source ('myserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);

    MariaDB dan MySQL 8.0 dan versi yang lebih rendah

    CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
    catatan

    Tentukan kredensial selain prompt yang ditampilkan di sini sebagai praktik terbaik keamanan.

    Jika instans eksternalnya adalah MariaDB 10.0.24 atau yang lebih tinggi, hubungkan basis data Amazon RDS sebagai pengguna master dan identifikasi basis data sumber sebagai instans replikasi sumber dengan menggunakan perintah mysql.rds_set_external_master_gtid. Gunakan GTID yang Anda tentukan di Langkah 2 dari Untuk membuat salinan cadangan dari prosedur database yang ada di bawah Tugas 1. Perintah berikut adalah contoh:

    CALL mysql.rds_set_external_master_gtid ('source_server_ip_address', 3306, 'ReplicationUser', 'password', 'GTID', 1);

    source_server_ip_address adalah alamat IP instans replikasi sumber. Alamat DNS EC2 pribadi saat ini tidak didukung.

    catatan

    Tentukan kredensial selain prompt yang ditampilkan di sini sebagai praktik terbaik keamanan.

  6. Pada database Amazon RDS, untuk memulai replikasi, jalankan perintah berikut: mysql.rds_start_replication

    CALL mysql.rds_start_replication;
  7. Pada database Amazon RDS, untuk menentukan kapan replika diperbarui dengan instance replikasi sumber, jalankan perintah SHOW REPLICA STATUS. Hasil perintah SHOW REPLICA STATUS mencakup bidang Seconds_Behind_Master. Ketika Seconds_Behind_Master bidang mengembalikan 0, maka replika up to date dengan contoh replikasi sumber.

    catatan

    Versi MySQL sebelumnya menggunakan SHOW SLAVE STATUS, bukan SHOW REPLICA STATUS. Jika Anda menggunakan versi MySQL sebelum 8.0.23, gunakan SHOW SLAVE STATUS.

    Untuk instance MariaDB 10.5, 10.6, atau 10.11 DB, jalankan prosedur mysql.rds_replica_status tersimpan alih-alih perintah MySQL.

  8. Setelah database Amazon RDS up to date, aktifkan backup otomatis sehingga Anda dapat memulihkan database tersebut jika diperlukan. Anda dapat mengaktifkan atau memodifikasi pencadangan otomatis untuk database Amazon RDS Anda dengan menggunakan konsol Amazon RDS. Untuk informasi selengkapnya, lihat Pengantar cadangan.

Tugas 5: Arahkan ulang aplikasi langsung Anda ke instans Amazon RDS Anda

Setelah database MariaDB atau MySQL diperbarui dengan instance replikasi sumber, Anda sekarang dapat memperbarui aplikasi langsung Anda untuk menggunakan instans Amazon RDS.

Alur kerja yang menunjukkan penghentian replikasi dan mengarahkan aplikasi langsung ke database di Amazon RDS.

Mengalihkan aplikasi live Anda ke basis data MariaDB atau MySQL Anda dan menghentikan replikasi

  1. Untuk menambahkan grup keamanan VPC untuk basis data Amazon RDS, tambahkan alamat IP server yang meng-host aplikasi. Untuk informasi selengkapnya tentang memodifikasi grup keamanan VPC, lihat Mengonfigurasi aturan grup keamanan di Panduan Pengguna Amazon Virtual Private Cloud.

  2. Verifikasi bahwa Seconds_Behind_Master bidang dalam hasil perintah SHOW REPLICA STATUS adalah 0, yang menunjukkan bahwa replika sudah up to date dengan instance replikasi sumber.

    SHOW REPLICA STATUS;
    catatan

    Versi MySQL sebelumnya menggunakan SHOW SLAVE STATUS, bukan SHOW REPLICA STATUS. Jika Anda menggunakan versi MySQL sebelum 8.0.23, gunakan SHOW SLAVE STATUS.

    Untuk instans DB MariaDB 10.5, 10.6, atau 10.11, jalankan prosedur mysql.rds_replica_status, bukan perintah MySQL.

  3. Tutup semua koneksi ke sumber setelah transaksi selesai.

  4. Perbarui aplikasi Anda untuk menggunakan basis data Amazon RDS. Pembaruan ini biasanya melibatkan perubahan pengaturan koneksi untuk mengidentifikasi nama host dan port basis data Amazon RDS, akun pengguna dan kata sandi untuk terhubung, dan basis data yang digunakan.

  5. Hubungkan ke instans DB.

    Untuk klaster DB Multi-AZ, hubungkan ke instans DB penulis.

  6. Hentikan replikasi untuk instans Amazon RDS dengan menggunakan perintah berikut: mysql.rds_stop_replication

    CALL mysql.rds_stop_replication;
  7. Jalankan prosedur tersimpan Amazon RDS yang sesuai di database Amazon RDS Anda untuk mengatur ulang konfigurasi replikasi sehingga instance ini tidak lagi diidentifikasi sebagai replika.

    MySQL 8.4 dan versi yang lebih tinggi

    CALL mysql.rds_reset_external_source;

    MariaDB dan MySQL 8.0 dan versi yang lebih rendah

    CALL mysql.rds_reset_external_master;
  8. Aktifkan fitur Amazon RDS tambahan seperti dukungan Multi-AZ dan replika baca. Lihat informasi yang lebih lengkap di Mengonfigurasi dan mengelola penyebaran Multi-AZ untuk Amazon RDS dan Menggunakan replika baca instans DB.