Migrasikan database MySQL lokal ke Aurora MySQL menggunakan Percona, Amazon EFS, dan Amazon S3 XtraBackup - AWS Prescriptive Guidance

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

Migrasikan database MySQL lokal ke Aurora MySQL menggunakan Percona, Amazon EFS, dan Amazon S3 XtraBackup

Rohan Jamadagni, Udayasimha Theepireddy, dan sajith menon, Amazon Web Services

Ringkasan

Pola ini menjelaskan cara memigrasi database MySQL lokal yang besar secara efisien ke Amazon Aurora MySQL menggunakan Percona. XtraBackup Percona XtraBackup adalah utilitas cadangan open-source dan non-blocking untuk server berbasis MySQL. Pola ini menunjukkan cara menggunakan Amazon Elastic File System (Amazon EFS) untuk mengurangi waktu mengunggah cadangan ke Amazon Simple Storage Service (Amazon S3) dan mengembalikan cadangan ke Amazon Aurora MySQL. Pola ini juga memberikan rincian tentang cara membuat backup Percona tambahan untuk meminimalkan jumlah log biner yang akan diterapkan ke database MySQL Aurora target.  

Prasyarat dan batasan

Prasyarat

  • Akun AWS yang aktif

  • Izin untuk membuat peran dan kebijakan AWS Identity and Access Management (IAM)

  • Konektivitas jaringan antara database MySQL lokal dan cloud pribadi virtual (VPC) di AWS

Batasan

  • Server sumber harus sistem berbasis Linux yang dapat menginstal klien Network File System (NFS) (nfs-utils/nfs-common).

  • Bucket S3 yang digunakan untuk mengunggah file cadangan hanya mendukung enkripsi sisi server (SSE-S3/SSE-KMS).

  • Amazon S3 membatasi ukuran file cadangan hingga 5 TB. Jika file cadangan Anda melebihi 5 TB, Anda dapat membaginya menjadi beberapa file yang lebih kecil.

  • Jumlah file sumber yang diunggah ke bucket S3 tidak boleh melebihi satu juta file.

  • Pola ini mendukung Percona XtraBackup full backup dan incremental backup saja. Itu tidak mendukung cadangan sebagian yang menggunakan--tables,,,--tables-exclude, --tables-file --databases--databases-exclude, atau. --databases-file

  • Aurora tidak memulihkan pengguna, fungsi, prosedur tersimpan, atau informasi zona waktu dari database MySQL sumber.

Versi produk

  • Database sumber harus MySQL versi 5.5, 5.6, atau 5.7.

  • Untuk MySQL 5.7, Anda harus menggunakan Percona 2.4. XtraBackup

  • Untuk MySQL 5.6 dan 5.6, Anda harus menggunakan Percona 2.3 atau 2.4. XtraBackup

Arsitektur

Tumpukan teknologi sumber

  • Sistem operasi berbasis Linux

  • Server MySQL

  • Percona XtraBackup

Tumpukan teknologi target

  • Amazon Aurora

  • Amazon S3

  • Amazon EFS

Arsitektur target

Arsitektur untuk memigrasikan database MySQL besar ke Amazon Aurora MySQL dengan menggunakan Percona. XtraBackup

Alat

Layanan AWS

  • Amazon Aurora adalah mesin database relasional yang dikelola sepenuhnya yang membuatnya sederhana dan hemat biaya untuk menyiapkan, mengoperasikan, dan menskalakan penyebaran MySQL. Aurora MySQL adalah pengganti drop-in untuk MySQL.

  • Amazon Elastic File System (Amazon EFS) membantu Anda membuat dan mengonfigurasi sistem file bersama di AWS Cloud.

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

Alat-alat lainnya

  • Percona XtraBackup adalah utilitas sumber terbuka yang melakukan streaming, terkompresi, dan pencadangan tambahan dari database MySQL tanpa mengganggu atau memblokir database Anda.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat grup keamanan untuk diasosiasikan dengan target pemasangan Amazon EFS.

Buat grup keamanan di VPC yang dikonfigurasi dengan lampiran VPN ke database lokal melalui AWS Transit Gateway. Untuk informasi selengkapnya tentang perintah dan langkah yang dijelaskan dalam cerita ini dan cerita lainnya, lihat tautan di bagian “Sumber daya terkait” di akhir pola ini.

DevOps/database Administrator AWS

Edit aturan grup keamanan.

Tambahkan aturan masuk, menggunakan tipe NFS, port 2049, dan rentang IP server database lokal sebagai sumbernya. Secara default, aturan keluar memungkinkan semua lalu lintas untuk pergi. Jika ini tidak terjadi, tambahkan aturan keluar untuk membuka koneksi untuk port NFS. Tambahkan dua aturan masuk lagi: port 2049 (sumber: ID grup keamanan dari grup keamanan yang sama ini) dan port 22 (sumber: rentang IP dari mana Anda akan terhubung ke sebuah EC2 instance).

DevOps/database Administrator AWS

Buat sistem file.

Di target pemasangan, gunakan VPC dan grup keamanan yang Anda buat di cerita sebelumnya. Pilih mode throughput dan kinerja berdasarkan I/O persyaratan database lokal. Secara opsional, aktifkan enkripsi saat istirahat.

DevOps/database Administrator AWS
TugasDeskripsiKeterampilan yang dibutuhkan

Buat peran profil instans IAM untuk dikaitkan dengan sebuah EC2 instance.

Buat peran IAM yang memiliki izin untuk mengunggah dan mengakses objek di Amazon S3. Pilih bucket S3 tempat cadangan akan disimpan sebagai sumber kebijakan.

AWS DevOps

Buat sebuah EC2 instance.

Luncurkan EC2 instance berbasis Linux dan lampirkan peran profil instans IAM yang Anda buat pada langkah sebelumnya, dan grup keamanan yang Anda buat sebelumnya.

AWS DevOps

Instal klien NFS.

Instal klien NFS di server database lokal dan instans. EC2 Untuk petunjuk penginstalan, lihat bagian “Informasi tambahan”.

DevOps

Pasang sistem file Amazon EFS.

Pasang sistem file Amazon EFS di tempat dan di EC2 instans. Di setiap server, buat direktori untuk menyimpan cadangan, dan pasang sistem file dengan menggunakan titik akhir target mount. Sebagai contoh, lihat bagian “Informasi tambahan”.

DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Instal XtraBackup Percona.

Instal Percona XtraBackup 2.3 atau 2.4 (tergantung pada versi database MySQL Anda) di server database lokal. Untuk tautan instalasi, lihat bagian “Sumber daya terkait”.

Administrator basis data

Hitung skema dan tabel dalam database sumber.

Kumpulkan dan catat jumlah skema dan objek dalam database sumber MySQL. Anda akan menggunakan jumlah ini untuk memvalidasi database Aurora MySQL setelah migrasi.

Administrator basis data

(Opsional) Perhatikan urutan log biner terbaru dari database sumber.

Lakukan langkah ini jika Anda ingin membuat replikasi log biner antara database sumber dan Aurora MySQL untuk meminimalkan waktu henti. log-bin harus diaktifkan, dan server_id harus unik. Perhatikan urutan log biner saat ini dari database sumber, tepat sebelum memulai cadangan. Lakukan langkah ini sebelum pencadangan penuh jika Anda berencana hanya menggunakan cadangan penuh. Jika Anda berencana untuk membuat cadangan tambahan setelah pencadangan penuh, lakukan langkah ini tepat sebelum pencadangan tambahan akhir yang akan Anda pulihkan pada instance Aurora MySQL DB.

Administrator basis data

Mulai backup penuh dari sumber MySQL database.

Buat cadangan lengkap database sumber MySQL menggunakan Percona. XtraBackup Misalnya perintah untuk cadangan penuh dan tambahan, lihat bagian “Informasi tambahan”.

Administrator basis data

(Opsional) Buat cadangan tambahan menggunakan Percona. XtraBackup

Backup tambahan dapat digunakan untuk mengurangi jumlah log biner yang perlu Anda terapkan untuk menyinkronkan database sumber dengan Aurora MySQL. Database ukuran besar dan berat transaksi mungkin menghasilkan sejumlah besar log biner selama pencadangan. Dengan mengambil cadangan tambahan dan menyimpannya di sistem file Amazon EFS bersama, Anda dapat secara signifikan mengurangi waktu untuk mencadangkan dan mengunggah database Anda. Untuk detailnya, lihat bagian “Informasi tambahan”. Lanjutkan untuk membuat backup tambahan sampai Anda siap untuk memulai proses migrasi ke Aurora.

Administrator basis data

Siapkan cadangan.

Pada langkah ini, log transaksional diterapkan pada cadangan untuk transaksi yang sedang dalam penerbangan selama pencadangan. Terus menerapkan log transaksional (--apply-log-only) ke setiap cadangan tambahan untuk menggabungkan cadangan, kecuali untuk cadangan terakhir. Sebagai contoh, lihat bagian “Informasi tambahan”. <efs_mount_name>Setelah langkah ini, cadangan yang lengkap dan digabungkan akan berada di ~/ /fullbackup.

Administrator basis data

Zip dan pisahkan cadangan gabungan terakhir.

Setelah Anda menyiapkan cadangan terakhir yang digabungkan, gunakan perintah tar, zip, dan split untuk membuat file cadangan zip yang lebih kecil. Sebagai contoh, lihat bagian “Informasi tambahan”.

Administrator basis data
TugasDeskripsiKeterampilan yang dibutuhkan

Unggah cadangan ke Amazon S3.

Sistem file Amazon EFS tempat file cadangan disimpan dipasang pada database lokal dan EC2 instans, sehingga file cadangan sudah tersedia untuk instance. EC2 <efs_mount_name><bucket_name>Hubungkan ke EC2 instance dengan menggunakan Secure Shell (SSH) dan unggah file cadangan zip ke bucket S3 baru atau yang sudah ada; misalnya: aws s3 sync ~/ /fullbackup s3:///fullbackup. Untuk detail tambahan, lihat tautan di bagian “Sumber daya terkait”.

AWS DevOps

Buat peran layanan untuk Aurora untuk mengakses Amazon S3.

Buat peran IAM dengan kepercayaan “rds.amazonaws.com” dan kebijakan yang memungkinkan Aurora mengakses bucket S3 tempat file cadangan disimpan. Izin yang diperlukan adalah ListBucket, GetObject, dan GetObjectVersion.

AWS DevOps

Buat konfigurasi jaringan untuk Aurora.

Buat grup subnet cluster DB dengan setidaknya dua Availability Zones dan konfigurasi tabel rute subnet yang memungkinkan konektivitas keluar ke database sumber. Buat grup keamanan yang memungkinkan koneksi keluar ke database lokal, dan memungkinkan administrator untuk terhubung ke klaster Aurora DB. Untuk informasi selengkapnya, lihat tautan di bagian “Sumber daya terkait”.

DevOps/database Administrator AWS

Kembalikan cadangan ke cluster DB MySQL Aurora.

Pulihkan data Anda dari cadangan yang Anda unggah ke Amazon S3. Tentukan versi MySQL dari database sumber Anda, berikan nama bucket S3 dan awalan jalur folder tempat Anda mengunggah file cadangan (misalnya, “fullbackup” untuk contoh di bagian “Informasi tambahan”), dan berikan peran IAM yang Anda buat untuk mengotorisasi Aurora mengakses Amazon S3.

DevOps/database Administrator AWS

Validasi database Aurora MySQL.

Validasi jumlah skema dan objek di cluster Aurora DB yang dipulihkan terhadap hitungan yang Anda peroleh dari database sumber.

Administrator basis data

Siapkan replikasi binlog.

Gunakan urutan log biner yang Anda catat sebelumnya, sebelum membuat cadangan terakhir yang dikembalikan ke cluster Aurora DB. Buat pengguna replikasi pada basis data sumber, dan ikuti instruksi di bagian “Informasi tambahan” untuk memberikan hak istimewa yang sesuai, untuk mengaktifkan replikasi pada Aurora, dan untuk mengonfirmasi bahwa replikasi sinkron.

DevOps/database Administrator AWS

Sumber daya terkait

Membuat sistem file Amazon EFS

Memasang sistem file

Membuat cadangan database sumber MySQL

Memulihkan cadangan ke Amazon Aurora MySQL

Referensi tambahan

Tutorial dan video

Informasi tambahan

Menginstal klien NFS

  • Jika Anda menggunakan Red Hat atau sistem operasi Linux serupa, gunakan perintah:  

$ sudo yum -y install nfs-utils
  • Jika Anda menggunakan Ubuntu atau sistem operasi Linux serupa, gunakan perintah: 

$ sudo apt-get -y install nfs-common

Untuk informasi selengkapnya, lihat panduan di dokumentasi Amazon EFS.

Memasang sistem file Amazon EFS

Gunakan perintah:

mkdir ~/<efs_mount_name> $ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-IP:/ ~/<efs_mount_name>

Untuk informasi selengkapnya, lihat panduan dan Pemasangan Sistem File EFS di dokumentasi Amazon EFS.

Membuat backup dari database sumber MySQL

Cadangan penuh

Gunakan perintah seperti berikut ini, yang mengambil cadangan, ritsleting, dan membaginya menjadi potongan-potongan kecil masing-masing 1 GB:

xtrabackup --backup --user=dbuser --password=<password> --binlog-info=AUTO --stream=tar --target-dir=~/<efs_mount_name>/fullbackup | gzip - | split -d --bytes=1024MB - ~/<efs_mount_name>/fullbackup/backup.tar.gz &

Jika Anda berencana untuk membuat cadangan tambahan berikutnya setelah pencadangan penuh, jangan zip dan pisahkan cadangan. Sebagai gantinya, gunakan perintah yang mirip dengan berikut ini:

xtrabackup --backup --user=dbuser --password=<password> --target-dir=~/<efs_mount_name>/fullbackup/

Pencadangan tambahan

Gunakan jalur cadangan lengkap untuk --incremental-basedir parameter; misalnya:

xtrabackup --backup --user=dbuser --password=<password> --target-dir=~/<efs_mount_name>/incremental/backupdate --incremental-basedir=~/<efs_mount_name>/fullbackup

di mana basedir adalah jalur ke cadangan lengkap dan file xtrabackup_checkpoints.

Untuk informasi selengkapnya tentang membuat cadangan, lihat Memigrasi Data dari Database MySQL Eksternal ke Cluster DB MySQL Amazon Aurora dalam dokumentasi Aurora.

Mempersiapkan cadangan

Untuk menyiapkan cadangan lengkap:

xtrabackup --prepare --apply-log-only --target-dir=~/<efs_mount_name>/fullbackup

Untuk menyiapkan cadangan tambahan:

xtrabackup --prepare --apply-log-only --target-dir=~/<efs_mount_name>/fullbackup --incremental-dir=~/<efs_mount_name>/incremental/06062020

Untuk menyiapkan cadangan akhir:

xtrabackup --prepare --target-dir=~/<efs_mount_name>/fullbackup --incremental-dir=~/<efs_mount_name>/incremental/06072020

Untuk informasi selengkapnya, lihat Pencadangan tambahan di dokumentasi Percona. XtraBackup

Ritsleting dan pemisahan cadangan yang digabungkan

<efs_mount_name>Untuk zip cadangan gabungan di ~/ /fullbackup:

tar -zcvf <backupfilename.tar.gz> ~/<efs_mount_name>/fullbackup

Untuk membagi cadangan:

split -d -b1024M --verbose <backupfilename.tar.gz> <backupfilename.tar.gz>

Menyiapkan replikasi binlog

Untuk membuat pengguna replikasi pada database sumber dan memberikan hak istimewa yang sesuai:

CREATE USER 'repl_user'@'' IDENTIFIED BY ''; GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'';

Untuk mengaktifkan replikasi pada Aurora dengan menghubungkan ke cluster Aurora DB, aktifkan log biner di grup parameter cluster DB. Set binlog_format = mixed (mode campuran lebih disukai). Perubahan ini mengharuskan Anda memulai ulang instance untuk menerapkan pembaruan.

CALL mysql.rds_set_external_master ('sourcedbinstanceIP', sourcedbport, 'repl_user', '', 'binlog_file_name', binlog_file_position, 0); CALL mysql.rds_start_replication;

Untuk mengonfirmasi bahwa replikasi sinkron:

SHOW Slave Status \G;

Bidang Detik di belakang master menunjukkan seberapa jauh di belakang Aurora dari database lokal.