Memulihkan cadangan ke instans Amazon RDS for MySQL DB - 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.

Memulihkan cadangan ke instans Amazon RDS for MySQL DB

Amazon RDS mendukung mengimpor database MySQL dengan file cadangan. Anda dapat membuat cadangan database Anda, menyimpan file cadangan di Amazon S3, dan kemudian mengembalikan file cadangan ke instans Amazon RDS DB baru yang menjalankan MySQL. Amazon RDS mendukung mengimpor file cadangan dari Amazon S3 secara keseluruhan. Wilayah AWS

Skenario yang dijelaskan dalam bagian ini adalah pemulihan cadangan basis data on-premise. Selama database dapat diakses, Anda dapat menggunakan teknik ini untuk database di lokasi lain, seperti Amazon EC2 atau layanan cloud lainnya.

Diagram berikut menunjukkan skenario yang didukung.

MySQL mengimpor file cadangan dari S3.

Jika database lokal Anda dapat offline saat Anda membuat, menyalin, dan memulihkan file cadangan, sebaiknya gunakan file cadangan untuk mengimpor database ke Amazon RDS. Jika database Anda tidak dapat offline, maka Anda dapat menggunakan salah satu metode berikut:

Ikhtisar pengaturan untuk mengimpor file cadangan dari Amazon S3 ke Amazon RDS

Untuk mengimpor file cadangan dari Amazon S3 ke Amazon RDS, Anda memerlukan komponen berikut:

  • Bucket Amazon S3 untuk menyimpan file cadangan Anda.

    Jika Anda sudah memiliki ember Amazon S3, Anda dapat menggunakan ember itu. Jika Anda tidak memiliki ember Amazon S3, buat yang baru. Untuk informasi selengkapnya, lihat Membuat bucket.

  • Sebuah cadangan dari basis data on-premise Anda yang diciptakan oleh Percona XtraBackup.

    Untuk informasi selengkapnya, lihat Membuat cadangan basis data.

  • Peran AWS Identity and Access Management (IAM) untuk memungkinkan Amazon RDS mengakses bucket S3.

    Jika Anda sudah memiliki peran IAM, Anda dapat menggunakan peran tersebut dan melampirkan kebijakan kepercayaan dan izin padanya. Untuk informasi selengkapnya, lihat Penciptaan sebuah peran IAM secara manual.

    Jika Anda tidak memiliki peran IAM, Anda memiliki dua opsi:

Membuat cadangan basis data

Gunakan XtraBackup perangkat lunak Percona untuk membuat cadangan Anda. Kami menyarankan Anda menggunakan versi terbaru XtraBackup Percona. Anda dapat menginstal Percona XtraBackup dari Unduhan Perangkat Lunak di situs web Percona.

Awas

Saat membuat cadangan basis data, XtraBackup mungkin menyimpan kredensil dalam file xtrabackup_info. Pastikan untuk mengonfirmasi bahwa tool_command pengaturan dalam file xtrabackup_info tidak berisi informasi sensitif apa pun.

XtraBackup Versi Percona yang Anda gunakan bergantung pada versi MySQL yang Anda cadangkan.

  • MySQL 8.4 - Gunakan Percona versi 8.4. XtraBackup

  • MySQL 8.0 - Gunakan Percona versi 8.0. XtraBackup

    catatan

    Percona XtraBackup 8.0.12 dan versi yang lebih tinggi mendukung migrasi semua versi MySQL 8.0. Jika Anda bermigrasi ke RDS untuk MySQL 8.0.32 atau lebih tinggi, Anda harus menggunakan Percona 8.0.12 atau lebih tinggi. XtraBackup

  • MySQL 5.7 - Gunakan Percona versi 2.4. XtraBackup

Anda dapat menggunakan Percona XtraBackup untuk membuat cadangan lengkap file database MySQL Anda. 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.

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

Membuat cadangan lengkap dengan Percona XtraBackup

Untuk membuat cadangan lengkap file database MySQL Anda yang dapat dipulihkan Amazon RDS dari Amazon S3, gunakan utilitas Percona (). XtraBackup xtrabackup

Misalnya, perintah berikut akan membuat sebuah cadangan 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 mengompres cadangan Anda menjadi satu file — yang dapat Anda bagi menjadi beberapa file nanti, jika diperlukan — Anda dapat menyimpan cadangan Anda dalam salah satu format berikut berdasarkan versi MySQL Anda:

  • Gzip (.gz) - Untuk MySQL 5.7 dan versi yang lebih rendah

  • tar (.tar) - Untuk MySQL 5.7 dan versi yang lebih rendah

  • Percona xbstream (.xbstream) - Untuk semua versi MySQL

catatan

Percona XtraBackup 8.0 dan yang lebih tinggi hanya mendukung Percona xbstream untuk kompresi.

MySQL 5.7 dan versi yang lebih rendah

Perintah berikut membuat cadangan basis data MySQL Anda yang dipecah menjadi beberapa file Gzip. Ganti nilai dengan informasi Anda sendiri.

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

MySQL 5.7 dan versi yang lebih rendah

Perintah berikut membuat cadangan basis data MySQL Anda yang dipecah menjadi beberapa file tar. Ganti nilai dengan informasi Anda sendiri.

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

Semua versi MySQL

Perintah berikut membuat cadangan basis data MySQL Anda yang dipecah menjadi beberapa file xbstream. Ganti nilai dengan informasi Anda sendiri.

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, mungkin karena Anda mencampur format file dalam perintah Anda:

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

Menggunakan cadangan tambahan dengan 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, untuk menghemat waktu, salin direktori dan file cadangan yang ada ke bucket Amazon S3 Anda. Untuk informasi selengkapnya tentang membuat cadangan tambahan menggunakan Percona XtraBackup, lihat Membuat cadangan tambahan di situs web Percona.

Saat menyalin file cadangan penuh dan inkremental yang sudah ada ke bucket Amazon S3, Anda harus menyalin konten direktori dasar secara berulang. Konten tersebut mencakup cadangan penuh dan semua direktori dan file cadangan tambahan. Salinan ini harus menjaga struktur direktori di bucket Amazon S3. Amazon RDS melakukan iterasi pada semua file dan direktori. Amazon RDS menggunakan xtrabackup-checkpoints file yang disertakan dengan setiap cadangan tambahan untuk mengidentifikasi direktori dasar dan untuk memesan cadangan tambahan berdasarkan rentang nomor urutan log (LSN).

Pertimbangan Backup untuk Percona XtraBackup

Amazon RDS menggunakan file cadangan Anda berdasarkan nama file. Beri nama file cadangan Anda dengan ekstensi file yang sesuai berdasarkan format file. Misalnya, gunakan .xbstream untuk file yang disimpan menggunakan format Percona xbstream.

Amazon RDS menggunakan file cadangan Anda sesuai urutan abjad dan urutan angka alami. Untuk memastikan bahwa file cadangan Anda ditulis dan diberi nama dalam urutan yang benar, gunakan split opsi saat Anda mengeluarkan xtrabackup perintah.

Amazon RDS tidak mendukung cadangan sebagian yang dibuat menggunakan Percona. XtraBackup Anda tidak dapat menggunakan opsi berikut untuk membuat cadangan sebagian saat mencadangkan file sumber untuk database Anda:

  • --tables

  • --tables-exclude

  • --tables-file

  • --databases

  • --databases-exclude

  • --databases-file

Penciptaan sebuah peran IAM secara manual

Jika Anda tidak memiliki peran IAM, silakan buat baru secara manual. Namun, jika Anda memulihkan database dengan menggunakan AWS Management Console, kami sarankan Anda memilih agar Amazon RDS membuat peran IAM baru ini untuk Anda. Agar Amazon RDS membuat peran ini untuk Anda, ikuti prosedur di Mengimpor data dari Amazon S3 ke instans DB MySQL baru bagian ini.

Untuk membuat peran IAM baru secara manual untuk mengimpor database Anda dari Amazon S3, buat peran untuk mendelegasikan izin dari Amazon RDS ke bucket Amazon S3 Anda. Saat membuat peran IAM, Anda dapat menyematkan kebijakan kepercayaan dan izin. Untuk mengimpor file cadangan dari Amazon S3, gunakan kebijakan kepercayaan dan izin yang serupa dengan contoh berikut. Untuk informasi selengkapnya tentang membuat peran, lihat Membuat peran untuk mendelegasikan izin ke layanan. AWS

Kebijakan kepercayaan dan izin mengharuskan Anda untuk menyediakan Amazon Resource Name (ARN). Untuk informasi selengkapnya tentang pemformatan ARN, lihat Amazon Resource Names (ARNs) dan AWS ruang nama layanan.

contoh kebijakan kepercayaan untuk mengimpor dari Amazon S3
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "rds.amazonaws.com"}, "Action": "sts:AssumeRole" }] }
contoh kebijakan izin untuk mengimpor dari Amazon S3 - izin pengguna IAM

Dalam contoh berikut, ganti iam_user_id dengan nilai Anda sendiri.

{ "Version":"2012-10-17", "Statement": [ { "Sid":"AllowS3AccessRole", "Effect":"Allow", "Action":"iam:PassRole", "Resource":"arn:aws:iam::iam_user_id:role/S3Access" } ] }
contoh kebijakan izin untuk mengimpor dari Amazon S3 - izin peran

Dalam contoh berikut, ganti amzn-s3-demo-bucket dan prefix dengan nilai Anda sendiri.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix*" }, { // If your bucket is encrypted, include the following permission. This permission allows decryption of your AWS KMS key. "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:region:customer_id:key/key_id*" ] } ] }
catatan

Jika Anda menyertakan sebuah prefiks nama file, sertakan tanda bintang (*) setelah prefiks. Jika Anda tidak ingin menyertakan prefiks, sertakan tanda bintang saja.

Mengimpor data dari Amazon S3 ke instans DB MySQL baru

Anda dapat mengimpor data dari Amazon S3 ke instans MySQL DB baru menggunakan API,, atau RDS. AWS Management Console AWS CLI

Untuk mengimpor data dari Amazon S3 ke instans DB MySQL baru
  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 Wilayah AWS tempat Anda ingin membuat instans DB Anda. Pilih yang Wilayah AWS sama dengan bucket Amazon S3 yang berisi cadangan database Anda.

  3. Di panel navigasi, pilih Basis Data.

  4. Pilih Pulihkan dari S3.

    Halaman Buat basis data dengan memulihkan dari S3 akan muncul.

    Buat database dengan memulihkan dari halaman S3 tempat Anda menentukan detail untuk memulihkan instans DB dari S3.
  5. Di bawah sumber S3:

    1. Pilih Bucket S3 yang berisi cadangan.

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

      Jika Anda tidak menentukan awalan, Amazon RDS akan membuat instans DB Anda menggunakan semua file dan folder di folder root bucket S3. Jika Anda menentukan awalan, Amazon RDS akan membuat instans DB Anda menggunakan file dan folder di bucket S3 tempat jalur untuk file dimulai dengan awalan yang ditentukan.

      Misalnya, Anda menyimpan file cadangan Anda di S3 dalam subfolder bernama backup, dan Anda memiliki beberapa set file cadangan, masing-masing di direktorinya sendiri (gzip_backup1, gzip_backup2, dan sebagainya). Dalam hal ini, untuk memulihkan dari file di folder gzip_backup1, Anda menentukan awalan backups/gzip_backup1.

  6. Di bagian Opsi mesin:

    1. Untuk Jenis mesin, pilih MySQL.

    2. Untuk Versi mesin sumber, pilih versi utama MySQL basis data sumber Anda.

    3. Untuk Versi Engine, pilih versi minor default versi utama MySQL Anda di versi utama MySQL Anda. Wilayah AWS

      Dalam AWS Management Console, hanya versi minor default yang tersedia. Setelah menyelesaikan impor, Anda dapat memutakhirkan instans DB Anda.

  7. Untuk peran IAM, buat atau pilih peran IAM dengan kebijakan kepercayaan dan kebijakan izin yang diperlukan yang memungkinkan Amazon RDS mengakses bucket Amazon S3 Anda. Lakukan salah satu tindakan berikut:

    • (Disarankan) Pilih Buat peran baru, dan masukkan nama peran IAM. Dengan opsi ini, Amazon RDS secara otomatis membuat peran dengan kebijakan kepercayaan dan kebijakan izin untuk Anda.

    • Pilih peran IAM yang ada. Pastikan bahwa peran ini memenuhi semua kriteria diPenciptaan sebuah peran IAM secara manual.

  8. Tentukan informasi instans DB Anda. Untuk informasi tentang setiap pengaturan, lihat Pengaturan untuk instans DB.

    catatan

    Pastikan untuk mengalokasikan penyimpanan yang cukup untuk instans DB baru Anda sehingga operasi pemulihan dapat berhasil.

    Untuk memungkinkan pertumbuhan masa depan secara otomatis, di bawah Konfigurasi penyimpanan tambahan, pilih Aktifkan penskalaan otomatis penyimpanan.

  9. Pilih pengaturan tambahan sesuai kebutuhan.

  10. Pilih Buat basis data.

Untuk mengimpor data dari Amazon S3 ke instans MySQL DB baru dengan menggunakan AWS CLI, jalankan perintah restore-db-instance-from-s3 dengan opsi berikut. Untuk informasi tentang setiap pengaturan, lihat Pengaturan untuk instans DB.

catatan

Pastikan untuk mengalokasikan penyimpanan yang cukup untuk instans DB baru Anda sehingga operasi pemulihan dapat berhasil.

Untuk mengaktifkan penskalaan otomatis penyimpanan dan memungkinkan pertumbuhan masa depan secara otomatis, gunakan opsi ini. --max-allocated-storage

  • --allocated-storage

  • --db-instance-identifier

  • --db-instance-class

  • --engine

  • --master-username

  • --manage-master-user-password

  • --s3-bucket-name

  • --s3-ingestion-role-arn

  • --s3-prefix

  • --source-engine

  • --source-engine-version

contoh

Untuk Linux, macOS, atau Unix:

aws rds restore-db-instance-from-s3 \ --allocated-storage 250 \ --db-instance-identifier my_identifier \ --db-instance-class db.m5.large \ --engine mysql \ --master-username admin \ --manage-master-user-password \ --s3-bucket-name amzn-s3-demo-bucket \ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \ --s3-prefix bucket_prefix \ --source-engine my_sql \ --source-engine-version 8.0.32 \ --max-allocated-storage 1000

Untuk Windows:

aws rds restore-db-instance-from-s3 ^ --allocated-storage 250 ^ --db-instance-identifier my_identifier ^ --db-instance-class db.m5.large ^ --engine mysql ^ --master-username admin ^ --manage-master-user-password ^ --s3-bucket-name amzn-s3-demo-bucket ^ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename ^ --s3-prefix bucket_prefix ^ --source-engine mysql ^ --source-engine-version 8.0.32 ^ --max-allocated-storage 1000

Untuk mengimpor data dari Amazon S3 ke instans MySQL DB baru dengan menggunakan Amazon RDS API, panggil operasi Restore fromS3. DBInstance

Batasan dan pertimbangan untuk mengimpor file cadangan dari Amazon S3 ke Amazon RDS

Batasan dan pertimbangan berikut berlaku untuk mengimpor file cadangan dari Amazon S3 ke RDS untuk instans DB MySQL:

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

  • Anda harus menggunakan Percona XtraBackup untuk mencadangkan data Anda ke Amazon S3. Untuk informasi selengkapnya, lihat Membuat cadangan basis data.

  • Bucket Amazon S3 dan instans RDS untuk MySQL DB harus sama. Wilayah AWS

  • Anda tidak dapat memulihkan dari sumber berikut:

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

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

    • Database MySQL 5.5 atau 5.6.

  • RDS untuk MySQL tidak mendukung Percona Server untuk MySQL sebagai database sumber karena dapat berisi tabel di file. compression_dictionary* mysql schema

  • RDS untuk MySQL tidak mendukung migrasi mundur untuk versi mayor atau versi minor. Misalnya, Anda tidak dapat bermigrasi dari MySQL versi 8.0 ke RDS untuk MySQL 5.7, dan Anda tidak dapat bermigrasi dari MySQL versi 8.0.32 ke RDS untuk MySQL versi 8.0.26.

  • Amazon RDS tidak mendukung pengimporan pada kelas instans db.t2.micro DB dari Amazon S3. Namun, Anda dapat mengembalikan ke kelas instans DB yang berbeda, dan kemudian mengubah kelas instance DB nanti. Untuk informasi selengkapnya tentang kelas instans, lihat Spesifikasi perangkat keras kelas instans DB .

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

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

  • Untuk menyediakan layanan manajemen untuk setiap instans DB, Amazon RDS membuat rdsadmin pengguna saat membuat instans DB. Karena rdsamin merupakan pengguna yang dicadangkan di Amazon RDS, batasan berikut berlaku:

  • Amazon RDS tidak memigrasikan tabel yang dibuat pengguna dalam skema. mysql

  • Anda harus mengkonfigurasi innodb_data_file_path parameter dengan hanya satu file data yang menggunakan nama file data defaultibdata1:12M:autoextend. Anda dapat memigrasikan database dengan dua file data, atau dengan file data dengan nama berbeda, menggunakan metode ini.

    Contoh berikut adalah nama file yang tidak diizinkan Amazon RDS:

    • innodb_data_file_path=ibdata1:50M

    • ibdata2:50M:autoextend

    • 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 tidak terkompresi menggunakan metode ini dibatasi hingga 64 TiB. Untuk cadangan terkompresi, batas ini lebih rendah untuk memperhitungkan persyaratan ruang tanpa kompresi. Dalam kasus seperti itu, ukuran cadangan maksimum yang didukung adalah64 TiB - compressed backup size.

    Untuk informasi tentang ukuran database maksimum yang didukung RDS untuk MySQL, lihat dan. Penyimpanan SSD Tujuan Umum Penyimpanan SSD IOPS yang Tersedia

  • Amazon RDS tidak mendukung pengimporan MySQL dan komponen dan plugin eksternal lainnya.

  • Amazon RDS tidak memulihkan semuanya dari database Anda. Kami menyarankan Anda menyimpan skema database dan nilai untuk item berikut dari database sistem MySQL sumber Anda, dan kemudian menambahkannya ke RDS yang dipulihkan untuk instance MySQL DB setelah dibuat:

    • Akun pengguna

    • Fungsi

    • Prosedur tersimpan

    • Informasi zona waktu. Informasi zona waktu dimuat dari sistem operasi lokal RDS Anda untuk instance MySQL DB. Untuk informasi selengkapnya, lihat Zona waktu lokal untuk instans My SQL DB.

Objek yang disimpan dengan 'rdsamin'@'localhost' sebagai penentu

Amazon RDS tidak mengimpor fungsi, prosedur, tampilan, peristiwa, dan pemicu dengan 'rdsadmin'@'localhost' sebagai definer.

Anda dapat menggunakan skrip SQL berikut pada basis data MySQL sumber Anda untuk menampilkan daftar objek tersimpan yang memiliki pendefinisi yang tidak didukung.

-- This SQL query lists routines with `rdsadmin`@`localhost` as the definer. SELECT ROUTINE_SCHEMA, ROUTINE_NAME FROM information_schema.routines WHERE definer = 'rdsadmin@localhost'; -- This SQL query lists triggers with `rdsadmin`@`localhost` as the definer. SELECT TRIGGER_SCHEMA, TRIGGER_NAME, DEFINER FROM information_schema.triggers WHERE DEFINER = 'rdsadmin@localhost'; -- This SQL query lists events with `rdsadmin`@`localhost` as the definer. SELECT EVENT_SCHEMA, EVENT_NAME FROM information_schema.events WHERE DEFINER = 'rdsadmin@localhost'; -- This SQL query lists views with `rdsadmin`@`localhost` as the definer. SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.views WHERE DEFINER = 'rdsadmin@localhost';

Akun pengguna dengan hak akses yang tidak didukung

Akun pengguna dengan hak istimewa yang tidak didukung RDS untuk MySQL diimpor tanpa hak istimewa yang tidak didukung. Untuk daftar hak akses yang didukung, lihat Model hak istimewa berbasis peran untuk My RDS SQL.

Anda dapat menjalankan kueri SQL berikut pada basis data sumber Anda untuk menampilkan daftar akun pengguna yang memiliki hak akses yang tidak didukung.

SELECT user, host FROM mysql.user WHERE Shutdown_priv = 'y' OR File_priv = 'y' OR Super_priv = 'y' OR Create_tablespace_priv = 'y';