全部产品
Search
文档中心

ApsaraDB RDS:Memulihkan Data dari Instance ApsaraDB RDS untuk MySQL ke Database MySQL yang Dikelola Sendiri dari File Cadangan Fisik

更新时间:Jul 06, 2025

Topik ini menjelaskan cara menggunakan Percona XtraBackup untuk memulihkan data dari instance ApsaraDB RDS untuk MySQL dari file cadangan fisik ke database MySQL yang dikelola sendiri.

Informasi latar belakang

ApsaraDB RDS untuk MySQL memungkinkan Anda memulihkan data dari instance RDS melalui file cadangan ke database yang dikelola sendiri. Berbagai metode pemulihan didukung, seperti pemulihan dari file cadangan fisik dan logis. Untuk informasi lebih lanjut tentang cara memilih metode pemulihan data, lihat Pemulihan.

Anda dapat melakukan operasi berikut untuk memeriksa metode cadangan instance RDS Anda: Masuk ke Konsol ApsaraDB RDS dan buka halaman detail instance RDS Anda. Di panel navigasi kiri halaman detail instance, klik Backup and Restoration. Pada halaman yang muncul, pilih Base Backups > Data Backup.

image

Catatan

Jika tidak ada file cadangan fisik yang dibuat, Anda dapat membuat file cadangan fisik secara manual sebelum melakukan operasi yang dijelaskan dalam topik ini. Untuk informasi lebih lanjut, lihat Membuat Cadangan Manual Instance ApsaraDB RDS untuk MySQL.

Skenario

Jika Anda tidak ingin menggunakan instance RDS Anda untuk jangka waktu panjang, atau jika Anda telah mengunduh file cadangan fisik dari instance RDS yang sudah dilepaskan, Anda dapat memulihkan data dari instance RDS tersebut dari file cadangan fisik ke database MySQL yang dikelola sendiri. Dengan cara ini, data dari instance RDS Anda dapat dipertahankan.

Prasyarat

  • Instance RDS Anda harus memenuhi persyaratan berikut:

    • Instance RDS menjalankan MySQL 8.0, MySQL 5.7, MySQL 5.6, atau MySQL 5.5.

    • Instance RDS menjalankan Edisi Ketersediaan Tinggi RDS.

    • Instance RDS menggunakan Premium Local SSD.

    Catatan
    • Anda dapat pergi ke halaman Basic Information instance RDS Anda untuk mendapatkan informasi di atas.

    • File cadangan fisik hanya dapat diunduh ketika instance RDS menjalankan Edisi Ketersediaan Tinggi RDS. Jika instance RDS Anda menjalankan Edisi Dasar RDS, Anda dapat memulihkan data dari instance RDS berdasarkan instruksi yang diberikan di FAQ Lainnya.

  • Tabel dalam instance RDS tidak dienkripsi menggunakan Transparent Data Encryption (TDE). Untuk informasi lebih lanjut, lihat Konfigurasi TDE.

    Penting
    • Jika beberapa tabel dienkripsi menggunakan TDE, kesalahan terjadi selama pemulihan. Sebelum Anda mengunduh file cadangan instance RDS, Anda harus mendekripsi tabel yang dienkripsi. Untuk informasi lebih lanjut, lihat Konfigurasi TDE.

    • Anda dapat melakukan operasi berikut untuk memeriksa apakah TDE diaktifkan: Buka halaman Data Security instance RDS Anda. Kemudian, klik tab TDE.

  • Pengguna RAM yang Anda gunakan untuk masuk ke instance RDS Anda diberi izin untuk mengunduh file cadangan. Untuk informasi lebih lanjut tentang cara memberikan izin kepada pengguna RAM, lihat Otorisasi Pengguna RAM dengan Izin Baca-Saja untuk Mengunduh File Cadangan.

Batasan

Dampak

  • Jika layanan lain sedang berjalan di database MySQL yang dikelola sendiri Anda, layanan tersebut menjadi tidak tersedia setelah Anda memulihkan data dari instance RDS Anda dari file cadangan fisik ke database MySQL yang dikelola sendiri.

  • Metode pemulihan yang dijelaskan dalam topik ini digunakan untuk memulihkan data dari instance RDS Anda ke direktori data baru di database MySQL yang dikelola sendiri Anda. Ini tidak memengaruhi data asli di database yang dikelola sendiri.

Implementasi

Bagian ini menjelaskan langkah-langkah yang harus Anda lakukan untuk memulihkan data dari file cadangan fisik:

  1. Lakukan cadangan fisik penuh pada instance RDS Anda.

  2. Unduh file cadangan fisik ke komputer Anda dan gunakan alat qpress untuk mengekstrak file tersebut.

  3. Gunakan Percona XtraBackup untuk memulihkan data ke direktori data database MySQL yang dikelola sendiri Anda dari file cadangan yang diekstraksi.

  4. Mulai ulang database MySQL yang dikelola sendiri Anda. Kemudian, Anda dapat melihat data dari instance RDS Anda di database MySQL yang dikelola sendiri.

Catatan Penggunaan

  • URL unduhan valid hanya selama 1 jam setelah dihasilkan. Jika URL unduhan kedaluwarsa, Anda dapat menyegarkan halaman untuk mendapatkan URL unduhan terbaru.

  • Jangan modifikasi atau hapus file cadangan fisik. Jika tidak, file tersebut mungkin rusak dan tidak dapat dipulihkan. Jika Anda perlu memodifikasi file cadangan fisik dari instance RDS, pulihkan data dari instance RDS dari file cadangan fisik ke database MySQL yang dikelola sendiri terlebih dahulu, lalu modifikasi file tersebut.

Aturan Penagihan

  • Jika Anda perlu melakukan cadangan manual, perhatikan penyimpanan cadangan yang digunakan untuk menyimpan file cadangan manual. Jika penggunaan penyimpanan cadangan melebihi kuota gratis, Anda akan dikenakan biaya untuk penyimpanan cadangan tambahan yang Anda gunakan.

  • Jika database MySQL yang dikelola sendiri Anda diterapkan di mesin lokal Anda, Anda harus mengunduh file cadangan melalui Internet. Jika lalu lintas yang dihasilkan saat Anda mengunduh file cadangan melebihi kuota gratis, Anda akan dikenakan biaya untuk lalu lintas Internet tambahan.

    Catatan

    Jika database MySQL yang dikelola sendiri Anda diterapkan di instance Elastic Compute Service (ECS) yang berada di wilayah dan virtual private cloud (VPC) yang sama dengan instance RDS Anda, Anda dapat mengunduh file cadangan melalui jaringan internal. Dalam hal ini, tidak ada biaya lalu lintas yang dihasilkan.

Persiapan

Persiapan Lingkungan

  1. Dalam contoh ini, CentOS 7.9 64-bit digunakan. Jika database MySQL yang dikelola sendiri Anda menjalankan distribusi Linux lainnya, gunakan perintah yang diperlukan.

  2. Terapkan database MySQL yang dikelola sendiri. Versi mesin utama database harus sama dengan versi mesin utama instance RDS Anda. Misalnya, database MySQL yang dikelola sendiri dan instance RDS keduanya menjalankan MySQL 8.0.

    Anda dapat menjalankan perintah berikut untuk menanyakan versi mesin utama database MySQL yang dikelola sendiri:

    mysql --version
  3. Tanyakan direktori file konfigurasi dari database MySQL yang dikelola sendiri.

    Direktori file konfigurasi bervariasi berdasarkan versi mesin utama database MySQL yang dikelola sendiri. Dalam contoh ini, direktori berikut terlibat:

    • MySQL 8.0 atau MySQL 5.7: /etc/my.cnf.

    • MySQL 5.6: /usr/my.cnf.

    • MySQL 5.5: Anda harus menjalankan perintah echo "[mysqld]" | sudo tee /etc/my.cnf untuk membuat direktori.

    Anda dapat menjalankan perintah berikut untuk menanyakan direktori file konfigurasi dari database MySQL yang dikelola sendiri:

    sudo find / -name my.cnf
    Catatan

    Jika hasil query tidak sesuai dengan direktori yang terdaftar, gunakan direktori yang benar saat Anda menjalankan perintah berikutnya.

  4. Buat direktori dekompresi cadangan bernama mysql_bkdata untuk menyimpan file cadangan yang diekstraksi.

    Anda dapat menjalankan perintah berikut untuk membuat direktori dekompresi cadangan:

    sudo mkdir /var/mysql_bkdata
    sudo chown -R $USER:$USER /var/mysql_bkdata
    Catatan

    Parameter $USER:$USER dalam perintah di atas menunjukkan pengguna dan grup pengguna saat ini. Nilainya diambil dari variabel lingkungan. Anda tidak perlu mengubah nilai parameter ini.

  5. Buat direktori data bernama mysql_newdata ke mana data dari file cadangan dipulihkan. Data dalam direktori ini digunakan saat database Anda dimulai.

    Anda dapat menjalankan perintah berikut untuk membuat direktori data:

    sudo mkdir /var/mysql_newdata
    sudo chown -R $USER:$USER /var/mysql_newdata
    Catatan

    Parameter $USER:$USER dalam perintah di atas menunjukkan pengguna dan grup pengguna saat ini. Nilainya diambil dari variabel lingkungan. Anda tidak perlu mengubah nilai parameter ini.

Persiapan Alat

  1. Instal Percona XtraBackup.

    MySQL 8.0

    Jika instance RDS menjalankan MySQL 8.0, unduh Percona XtraBackup berdasarkan sistem operasi (OS) host tempat instance berada. Kemudian, unggah paket yang diunduh ke server dan instal Percona XtraBackup. Jika Anda perlu mengunggah Percona XtraBackup ke instance ECS, lihat Unggah atau Unduh File.

    Penting

    Instance RDS yang menjalankan MySQL 8.0 mendukung file redo log. Percona XtraBackup open source mungkin memiliki masalah kompatibilitas pada instance ini. Kami merekomendasikan agar Anda menggunakan alat XtraBackup yang disediakan oleh ApsaraDB RDS.

    Lingkungan host

    Instal XtraBackup 8.0

    Contoh perintah instalasi

    Catatan

    Dalam contoh ini, XtraBackup 8.0 diunduh ke direktori /Xtrabackup8.0. Perintah instalasi aktual bervariasi berdasarkan direktori unduhan. Sesuaikan perintah instalasi berdasarkan direktori unduhan aktual XtraBackup 8.0.

    Linux 6 (x86_64)

    RDS XtraBackup 8.0

    sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios6.x86_64

    Linux 7 (x86_64)

    RDS XtraBackup 8.0

    sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.x86_64.rpm

    Linux 7 (ARM AArch64)

    RDS XtraBackup 8.0

    sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.aarch64.rpm

    Linux 8 (ARM AArch64)

    RDS XtraBackup 8.0

    sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.al8.aarch64.rpm
    Catatan

    Setelah instalasi, file eksekusi untuk Percona XtraBackup disimpan di direktori /u01/xtrabackup80/bin, dan direktori tersebut tidak ditambahkan ke variabel lingkungan PATH sistem Linux.

    Jika Anda ingin menjalankan perintah terkait Percona XtraBackup di direktori apa pun, Anda dapat menggunakan metode berikut:

    • Anda dapat menjalankan perintah dengan menentukan jalur lengkapnya. Dalam topik ini, jalur lengkap ditentukan dalam beberapa perintah. Contoh: /u01/xtrabackup80/bin/xtrabackup --xxxxxx.

    • Anda dapat menambahkan direktori /u01/xtrabackup80/bin secara manual ke variabel lingkungan PATH sistem.

    MySQL 5.7, MySQL 5.6, atau MySQL 5.5

    Jika instance RDS menjalankan MySQL 5.7, MySQL 5.6, atau MySQL 5.5, unduh dan instal Percona XtraBackup 2.4.

    Dalam contoh ini, Percona XtraBackup 2.4.28 diinstal. Contoh perintah:

    wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.28/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm
    sudo yum localinstall -y percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm
  2. Instal alat qpress.

    ## Unduh paket TAR dari file yang dapat dieksekusi.
    wget "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230406/flxd/qpress-11-linux-x64.tar"
    
    ## Ekstrak paket TAR yang diunduh.
    tar -xvf qpress-11-linux-x64.tar
    
    ## Konfigurasikan izin eksekusi pada file qpress.
    sudo chmod 775 qpress
    
    ## Salin file qpress ke direktori /usr/bin untuk mengizinkan akses global.
    sudo cp qpress /usr/bin

Langkah 1: Unduh file cadangan

  1. Masuk ke Konsol ApsaraDB RDS dan buka halaman Instance. Di bilah navigasi atas, pilih wilayah tempat instance RDS berada. Kemudian, temukan instance RDS dan klik ID instance.

  2. Di panel navigasi kiri, klik Backup and Restoration.

  3. Di halaman yang muncul, pilih Base Backups > Data Backup. Temukan file cadangan fisik yang ingin Anda unduh dan klik Download Instance Backup di kolom Actions.

  4. Di kotak dialog Download Instance Backup Set, klik Copy Internal URL atau Copy Public URL.

    Penting
    • Jika Anda menggunakan URL internal untuk mengunduh file cadangan, pastikan bahwa server tempat Anda masuk dan instance RDS berada di VPC yang sama. Jika server dan instance RDS berada di VPC lintas wilayah atau jika server berada di jaringan klasik dan instance RDS berada di VPC, Anda tidak dapat mengunduh file cadangan menggunakan URL internal.

    • Jika Anda menggunakan URL eksternal untuk mengunduh file cadangan, Anda akan dikenakan biaya untuk lalu lintas Internet tambahan yang Anda konsumsi. Untuk informasi lebih lanjut, lihat Aturan Penagihan.

    • URL unduhan valid hanya selama 1 jam setelah dihasilkan. Jika URL unduhan kedaluwarsa, Anda dapat menyegarkan halaman untuk mendapatkan URL unduhan terbaru.

    • Kami merekomendasikan agar Anda tidak memodifikasi atau menghapus file cadangan fisik. Jika Anda memodifikasi atau menghapus file cadangan fisik, file tersebut mungkin rusak dan tidak dapat dipulihkan. Jika Anda perlu memodifikasi file cadangan fisik, kami merekomendasikan agar Anda memulihkan data dari instance RDS dari file cadangan fisik ke database MySQL yang dikelola sendiri, lalu modifikasi file tersebut.

  5. Masuk ke server Linux tempat database MySQL yang dikelola sendiri Anda berada dan jalankan perintah berikut untuk mengunduh file cadangan fisik:

    wget -c 'https://****.bak.rds.aliyuncs.com/****_xb.qp?****' -O test_xb.qp
    Catatan
    • Ganti https://****.bak.rds.aliyuncs.com/****_xb.qp?**** dalam perintah dengan URL unduhan yang Anda salin. Setelah Anda mengunduh file cadangan, simpan file tersebut dan jaga kerahasiaannya.

    • Dalam perintah, test_xb.qp menentukan nama baru dari file yang ingin Anda simpan. Anda dapat menentukan nama file kustom, tetapi ekstensi nama file harus sama dengan yang ditentukan dalam URL unduhan.

      Nama file cadangan ApsaraDB RDS untuk MySQL yang diunduh berakhiran ekstensi _xb.qp atau _qp.xb. Anda dapat melihat ekstensi file cadangan di URL unduhannya.

    • Jika instance RDS Anda menjalankan MySQL 5.5, ekstensi nama file dari file cadangan fisik adalah tar.gz.

FAQ tentang pengunduhan file

  • Mengapa kesalahan dilaporkan ketika saya mengunduh file data?

    Jika Anda menjalankan perintah wget -c 'https://****.bak.rds.aliyuncs.com/****_xb.qp?****' -O test_xb.qp untuk mengunduh file data, Anda harus menggunakan sepasang tanda kutip tunggal (') untuk mengapit URL unduhan. Dengan cara ini, aplikasi dapat mengenali URL unduhan.

Langkah 2: Dekompresi file cadangan

Gunakan salah satu metode berikut untuk mendekompresi file cadangan yang diunduh berdasarkan ekstensinya:

Penting

Sebelum Anda menjalankan perintah, pastikan bahwa Percona XtraBackup dan qpress diinstal pada server tempat database MySQL yang dikelola sendiri Anda berada. Untuk informasi lebih lanjut, lihat Persiapan.

_xb.qp

Saat menjalankan perintah berikut, ganti test_xb.qp dengan nama file cadangan yang Anda simpan dan ganti /var/mysql_bkdata/ dengan direktori dekompresi cadangan yang Anda buat.

### MySQL 8.0
qpress -do  test_xb.qp | /u01/xtrabackup80/bin/xbstream -x -v -C /var/mysql_bkdata/

### MySQL 5.5/5.6/5.7
qpress -do  test_xb.qp | xbstream -x -v -C /var/mysql_bkdata/

_qp.xb

Saat menjalankan perintah berikut, ganti test_qp.xb dengan nama file cadangan yang Anda simpan dan ganti /var/mysql_bkdata/ dengan direktori dekompresi cadangan yang Anda buat.

## Langkah 1: Parsing file.
cat test_qp.xb | xbstream -x -v -C /var/mysql_bkdata/

## Langkah 2: Mendekompresi file.
### MySQL 5.5/5.6/5.7
innobackupex --decompress --remove-original /var/mysql_bkdata/

### MySQL 8.0
/u01/xtrabackup80/bin/xtrabackup --decompress --remove-original --target-dir=/var/mysql_bkdata/

.tar.gz

Saat menjalankan perintah berikut, ganti test.tar.gz dengan nama file cadangan yang Anda simpan dan ganti /var/mysql_bkdata/ dengan direktori dekompresi cadangan yang Anda buat.

tar -izxvf test.tar.gz -C /var/mysql_bkdata/

.xb.gz

Saat menjalankan perintah berikut, ganti test.xb.gz dengan nama file cadangan yang Anda simpan dan ganti /var/mysql_bkdata/ dengan direktori dekompresi cadangan yang Anda buat.

### MySQL 8.0
gzip -d -c test.xb.gz | /u01/xtrabackup80/bin/xbstream -x -v -C /var/mysql_bkdata/

### MySQL 5.5/5.6/5.7
gzip -d -c test.xb.gz | xbstream -x -v -C /var/mysql_bkdata/

FAQ tentang dekompresi

  • Apa yang harus saya lakukan jika sistem melaporkan kesalahan saat saya mendekompresi file cadangan yang saya unduh?

    Lakukan operasi berikut untuk mengidentifikasi penyebab kesalahan dan menyelesaikan kesalahan:

    Periksa apakah file cadangan merupakan file cadangan fisik.

    Periksa apakah file cadangan memiliki salah satu ekstensi nama file yang valid berikut: xb.qp, .tar.gz, .xb.gz, dan _qp.xb.

    Perintah dekompresi bervariasi berdasarkan ekstensi nama file dari file cadangan.

    Pesan kesalahan berikut mungkin ditampilkan selama dekompresi:

    • Pesan kesalahan sh: qpress: command not found ditampilkan.

      Solusi: Periksa apakah qpress diinstal pada server tempat database MySQL yang dikelola sendiri Anda berada. Untuk informasi lebih lanjut, lihat Prasyarat.

    • Pesan kesalahan yang menunjukkan bahwa innobackupex tidak ditemukan ditampilkan. Kesalahan ini dilaporkan jika ekstensi nama file cadangan adalah _qp.xb.

      Solusi: Periksa apakah Percona XtraBackup diinstal pada server tempat database MySQL yang dikelola sendiri Anda berada. Untuk informasi lebih lanjut, lihat Prasyarat.

    • Pesan kesalahan can't change to dir to xx( errorcode:no such file or directory) ditampilkan saat Anda menjalankan perintah cat sebelumnya. Kesalahan ini dilaporkan jika ekstensi nama file cadangan adalah _qp.xb.

      Solusi: Periksa apakah direktori tempat Anda ingin menyimpan file yang diekstraksi atau nama file sudah benar.

Langkah 3: Memulihkan data

Penting

Sebelum Anda memulihkan data ke database MySQL yang dikelola sendiri Anda, hentikan database tersebut.

Anda dapat menjalankan perintah ps -ef | grep '[m]ysql' untuk memeriksa apakah proses terkait MySQL ada. Jika proses terkait MySQL ada, Anda dapat menjalankan perintah sudo kill -9 <PID> untuk menghentikan proses tersebut.

Memulihkan data dari instance RDS yang menjalankan MySQL 8.0

  1. Persiapkan pemulihan.

    /u01/xtrabackup80/bin/xtrabackup --defaults-file=/var/mysql_bkdata/backup-my.cnf  --prepare --target-dir=/var/mysql_bkdata/

    Parameter

    Parameter

    Deskripsi

    --defaults-file

    Direktori file konfigurasi yang berisi pengaturan default MySQL.

    Setelah file cadangan fisik diekstraksi, file bernama backup-my.cnf diperoleh dan disimpan di direktori dekompresi cadangan, yaitu /var/mysql_bkdata/ dalam contoh ini.

    --prepare

    Perintah yang digunakan untuk mempersiapkan Percona XtraBackup.

    --target-dir

    Direktori dekompresi cadangan, yaitu /var/mysql_bkdata/ dalam contoh ini.

  2. Ubah parameter datadir dari database MySQL yang dikelola sendiri.

    1. Ubah file konfigurasi database.

      sudo vim /etc/my.cnf

      Untuk informasi lebih lanjut tentang cara menanyakan direktori file konfigurasi, lihat Persiapan.

    2. Tekan i untuk masuk ke mode sisipan dan ubah nilai parameter datadir menjadi /var/mysql_newdata.

      datadir = /var/mysql_newdata

      mysql_newdata menentukan direktori data baru dari database MySQL yang dikelola sendiri Anda. Untuk informasi lebih lanjut, lihat Persiapan.

    3. Ubah kepemilikan direktori data baru.

      chown -R mysql:mysql /var/mysql_newdata 
    4. Tekan tombol Esc untuk keluar dari mode edit, dan masukkan :wq untuk menyimpan file dan keluar.

  3. Pulihkan data.

    sudo xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/var/mysql_bkdata/

    Parameter

    Parameter

    Deskripsi

    --defaults-file

    Direktori file my.cnf. Anda dapat memperoleh direktori data tempat data dipulihkan dari parameter datadir dalam file konfigurasi.

    --copy-back

    Perintah pemulihan yang dijalankan oleh Percona XtraBackup.

    --target-dir

    Direktori dekompresi cadangan, yaitu /var/mysql_bkdata/ dalam contoh ini. Percona XtraBackup memulihkan data dalam direktori ini ke direktori data dari database MySQL yang dikelola sendiri.

Memulihkan data dari instance RDS yang menjalankan MySQL 5.7

  1. Persiapkan pemulihan.

    innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/

    Parameter

    Parameter

    Deskripsi

    --defaults-file

    Direktori file konfigurasi yang berisi pengaturan default MySQL.

    Setelah file cadangan fisik diekstraksi, file bernama backup-my.cnf diperoleh dan disimpan di direktori dekompresi cadangan, yaitu /var/mysql_bkdata/ dalam contoh ini.

    --apply-log

    Perintah yang digunakan untuk mempersiapkan Percona XtraBackup.

    Parameter ini diikuti oleh direktori dekompresi cadangan, yaitu /var/mysql_bkdata/ dalam contoh ini. Direktori dekompresi cadangan menyimpan file cadangan.

  2. Ubah file konfigurasi my.cnf dari database MySQL yang dikelola sendiri.

    1. Ubah file konfigurasi database.

      sudo vim /etc/my.cnf

      Untuk informasi lebih lanjut tentang cara menanyakan direktori file konfigurasi, lihat Persiapan.

    2. Tekan i untuk masuk ke mode sisipan dan ubah nilai parameter datadir menjadi /var/mysql_newdata.

      datadir = /var/mysql_newdata

      mysql_newdata menentukan direktori data baru dari database MySQL yang dikelola sendiri Anda. Untuk informasi lebih lanjut, lihat Persiapan.

    3. Tambahkan konten berikut ke file my.cnf:

      innodb_undo_tablespaces=2
      innodb_undo_directory=/var/mysql_newdata
      Penting

      Nilai parameter innodb_undo_tablespaces harus sama dengan nilai dalam file /var/mysql_bkdata/backup-my.cnf. Anda dapat menjalankan perintah cat /var/mysql_bkdata/backup-my.cnf | grep innodb_undo_tablespaces untuk menanyakan nilainya.

    4. Tekan tombol Esc untuk keluar dari mode edit, dan masukkan :wq untuk menyimpan file dan keluar.

  3. Pulihkan data.

    sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/

    Parameter

    Parameter

    Deskripsi

    --defaults-file

    Direktori file my.cnf. Anda dapat memperoleh direktori data tempat data dipulihkan dari parameter datadir dalam file konfigurasi.

    --copy-back

    Perintah pemulihan yang dijalankan oleh Percona XtraBackup.

    Parameter ini diikuti oleh direktori dekompresi cadangan, yaitu /var/mysql_bkdata/ dalam contoh ini. Percona XtraBackup memulihkan data dalam direktori ini ke direktori data dari database MySQL yang dikelola sendiri.

Memulihkan data dari instance RDS yang menjalankan MySQL 5.6

  1. Persiapkan pemulihan.

    innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/

    Parameter

    Parameter

    Deskripsi

    --defaults-file

    Direktori file konfigurasi yang berisi pengaturan default MySQL.

    Setelah file cadangan fisik diekstraksi, file bernama backup-my.cnf diperoleh dan disimpan di direktori dekompresi cadangan, yaitu /var/mysql_bkdata/ dalam contoh ini.

    --apply-log

    Perintah yang digunakan untuk mempersiapkan Percona XtraBackup.

    Parameter ini diikuti oleh direktori dekompresi cadangan, yaitu /var/mysql_bkdata/ dalam contoh ini. Direktori dekompresi cadangan menyimpan file cadangan.

  2. Ubah parameter datadir dari database MySQL yang dikelola sendiri.

    1. Ubah file konfigurasi database.

      sudo vim /usr/my.cnf

      Untuk informasi lebih lanjut tentang cara menanyakan direktori file konfigurasi, lihat Persiapan.

    2. Tekan i untuk masuk ke mode sisipan dan tambahkan pengaturan parameter datadir.

      datadir = /var/mysql_newdata

      mysql_newdata menentukan direktori data baru dari database MySQL yang dikelola sendiri Anda. Untuk informasi lebih lanjut, lihat Persiapan.

    3. Tekan tombol Esc untuk keluar dari mode edit, dan masukkan :wq untuk menyimpan file dan keluar.

  3. Pulihkan data.

    sudo innobackupex --defaults-file=/usr/my.cnf --copy-back /var/mysql_bkdata/

    Parameter

    Parameter

    Deskripsi

    --defaults-file

    Direktori file my.cnf. Anda dapat memperoleh direktori data tempat data dipulihkan dari parameter datadir dalam file konfigurasi.

    --copy-back

    Perintah pemulihan yang dijalankan oleh Percona XtraBackup.

    Parameter ini diikuti oleh direktori dekompresi cadangan, yaitu /var/mysql_bkdata/ dalam contoh ini. Percona XtraBackup memulihkan data dalam direktori ini ke direktori data dari database MySQL yang dikelola sendiri.

Memulihkan data dari instance RDS yang menjalankan MySQL 5.5

  1. Persiapkan pemulihan.

    innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/

    Parameter

    Parameter

    Deskripsi

    --defaults-file

    Direktori file konfigurasi yang berisi pengaturan default MySQL.

    Setelah file cadangan fisik didekompresi, file bernama backup-my.cnf akan diperoleh dan disimpan di direktori dekompresi cadangan, yaitu /var/mysql_bkdata/ dalam contoh ini.

    --apply-log

    Perintah yang digunakan untuk mempersiapkan Percona XtraBackup.

    Parameter ini diikuti oleh direktori dekompresi cadangan, yaitu /var/mysql_bkdata/ dalam contoh ini. Direktori dekompresi cadangan menyimpan file cadangan.

  2. Ubah file konfigurasi my.cnf dari database MySQL yang dikelola sendiri.

    1. Ubah file konfigurasi database.

      sudo vim /etc/my.cnf

      Untuk informasi lebih lanjut tentang cara menanyakan direktori file konfigurasi, lihat Persiapan.

    2. Tekan i untuk masuk ke mode sisipan dan tambahkan pengaturan parameter datadir.

      datadir = /var/mysql_newdata

      mysql_newdata menentukan direktori data baru dari database MySQL yang dikelola sendiri Anda. Untuk informasi lebih lanjut, lihat Persiapan.

    3. Tambahkan konten berikut ke file my.cnf:

      innodb_log_file_size=1048576000
      Penting

      Nilai parameter innodb_log_file_size harus sama dengan nilai dalam file /var/mysql_bkdata/backup-my.cnf. Anda dapat menjalankan perintah cat /var/mysql_bkdata/backup-my.cnf | grep innodb_log_file_size untuk menanyakan nilainya.

    4. Tekan tombol Esc untuk keluar dari mode edit, dan masukkan :wq untuk menyimpan file dan keluar.

  3. Pulihkan data.

    sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/

    Parameter

    Parameter

    Deskripsi

    --defaults-file

    Direktori file my.cnf. Anda dapat memperoleh direktori data tempat data dipulihkan dari parameter datadir dalam file konfigurasi.

    --copy-back

    Perintah pemulihan yang dijalankan oleh Percona XtraBackup.

    Parameter ini diikuti oleh direktori dekompresi cadangan, yaitu /var/mysql_bkdata/ dalam contoh ini. Percona XtraBackup memulihkan data dalam direktori ini ke direktori data dari database MySQL yang dikelola sendiri.

FAQ tentang pemulihan data

  • Apa yang harus saya lakukan jika pesan kesalahan xtrabackup: Unknown error 3613 ditampilkan?

    Perbarui Percona XtraBackup ke versi terbaru dan coba lagi.

  • Apa yang harus saya lakukan jika pesan kesalahan Original data directory /var/mysql_newdata is not empty! ditampilkan?

    Jalankan perintah sudo rm -rf /var/mysql_newdata/* untuk membersihkan file dalam folder tersebut. Kemudian, lakukan operasi pemulihan kembali.

  • Apa yang harus saya lakukan jika pesan kesalahan InnodDB: Encryption information in datafile: ./xxx.ibd can't be decrypted, please check if a keyring plugin is loaded and initialized successfully. ditampilkan?

    Periksa apakah TDE diaktifkan untuk instance RDS Anda.

    • Jika TDE diaktifkan, periksa apakah ada tabel yang dienkripsi menggunakan TDE. Jika ada tabel yang dienkripsi menggunakan TDE, dekripsi tabel tersebut dan kemudian pulihkan data berdasarkan instruksi yang diberikan dalam topik ini. Untuk informasi lebih lanjut, lihat Prasyarat dan Konfigurasi TDE.

    • Jika TDE dinonaktifkan, pastikan bahwa versi Percona XtraBackup yang diperlukan telah diinstal. Untuk informasi lebih lanjut, lihat Persiapan.

  • Apa yang harus saya lakukan jika file cadangan yang diunduh berisi data terenkripsi dan terjadi kesalahan saat saya memulihkan data?

    Anda tidak dapat menggunakan file cadangan yang diunduh untuk memulihkan data. Jika ada tabel terenkripsi dalam instance RDS, kesalahan akan terjadi saat Anda memulihkan data. Untuk menyelesaikan kesalahan, dekripsi tabel tersebut dan kemudian pulihkan data berdasarkan instruksi yang diberikan dalam topik ini. Untuk informasi lebih lanjut, lihat Prasyarat dan Konfigurasi TDE.

  • Apa yang harus saya lakukan jika pesan kesalahan innobackupex: File 'undo001' not found (Errcode: 2 - No Such file or directory) ditampilkan selama pemulihan data?

    File undo adalah file sistem. File tersebut bervariasi berdasarkan versi database. Untuk menyelesaikan masalah, periksa apakah database MySQL yang dikelola sendiri menjalankan versi database yang sama dengan instance RDS.

Langkah 4: Mulai database

MySQL 8.0 atau MySQL 5.7

  1. Opsional. Masuk ke Konsol ApsaraDB RDS dan lihat nilai parameter lower_case_table_names berdasarkan instruksi yang diberikan di Lihat Parameter Instance ApsaraDB RDS untuk MySQL. Jika nilainya adalah 1, Anda harus mengubah file konfigurasi my.cnf dari database MySQL yang dikelola sendiri.

    1. Ubah file konfigurasi database.

      sudo vim /etc/my.cnf

      Untuk informasi lebih lanjut tentang cara menanyakan direktori file konfigurasi, lihat Persiapan.

    2. Tekan i untuk masuk ke mode sisipan dan tambahkan konten berikut ke file:

      lower_case_table_names=1
    3. Tekan tombol Esc untuk keluar dari mode edit, dan masukkan :wq untuk menyimpan file dan keluar.

  2. Berikan izin pada direktori data.

    sudo chown -R mysql:mysql /var/mysql_newdata
  3. Jalankan perintah berikut untuk memulai proses MySQL:

    sudo mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_newdata &

    Parameter

    Parameter

    Deskripsi

    --defaults-file

    Direktori file konfigurasi dari database MySQL yang dikelola sendiri. Dalam contoh ini, /etc/my.cnf digunakan. Anda dapat memperoleh direktori file konfigurasi berdasarkan bagian Persiapan.

    --user

    Pengguna yang memulai database. Nilainya tetap sebagai mysql.

    --datadir

    Direktori data yang digunakan untuk memulai database. Dalam contoh ini, /var/mysql_newdata digunakan. Anda dapat memperoleh direktori data berdasarkan bagian Persiapan.

MySQL 5.6

  1. Opsional. Masuk ke Konsol ApsaraDB RDS dan lihat nilai parameter lower_case_table_names berdasarkan instruksi yang diberikan di Lihat Parameter Instance ApsaraDB RDS untuk MySQL. Jika nilainya adalah 1, Anda harus mengubah file konfigurasi my.cnf dari database MySQL yang dikelola sendiri.

    1. Ubah file konfigurasi database.

      sudo vim /usr/my.cnf

      Untuk informasi lebih lanjut tentang cara menanyakan direktori file konfigurasi, lihat Persiapan.

    2. Tekan i untuk masuk ke mode sisipan dan tambahkan konten berikut ke file:

      lower_case_table_names=1
    3. Tekan tombol Esc untuk keluar dari mode edit, dan masukkan :wq untuk menyimpan file dan keluar.

  2. Berikan izin pada direktori data.

    sudo chown -R mysql:mysql /var/mysql_newdata
  3. Jalankan perintah berikut untuk memulai proses MySQL:

    sudo mysqld --defaults-file=/usr/my.cnf --user=mysql --datadir=/var/mysql_newdata &

    Parameter

    Deskripsi

    --defaults-file

    Direktori file konfigurasi dari database MySQL yang dikelola sendiri. Dalam contoh ini, /usr/my.cnf digunakan. Anda dapat memperoleh direktori file konfigurasi berdasarkan bagian Persiapan.

    --user

    Pengguna yang memulai database. Nilainya tetap sebagai mysql.

    --datadir

    Direktori data yang digunakan untuk memulai database. Dalam contoh ini, /var/mysql_newdata digunakan. Anda dapat memperoleh direktori data berdasarkan bagian Persiapan.

MySQL 5.5

  1. Berikan izin pada direktori data.

    sudo chown -R mysql:mysql /var/mysql_newdata
  2. Jalankan perintah berikut untuk memulai proses MySQL:

    sudo mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_newdata &

    Parameter

    Deskripsi

    --defaults-file

    Direktori file konfigurasi dari database MySQL yang dikelola sendiri. Dalam contoh ini, /etc/my.cnf digunakan. Anda dapat memperoleh direktori file konfigurasi berdasarkan bagian Persiapan.

    --user

    Pengguna yang memulai database. Nilainya tetap sebagai mysql.

    --datadir

    Direktori data yang digunakan untuk memulai database. Dalam contoh ini, /var/mysql_newdata digunakan. Anda dapat memperoleh direktori data berdasarkan bagian Persiapan.

FAQ tentang startup

  • Mengapa pesan kesalahan mysqld: [ERROR] Failed to open required defaults file: /etc/my.cnf ditampilkan di sistem operasi Ubuntu? Apa yang harus saya lakukan?

    Kesalahan terjadi karena program keamanan AppArmor disediakan dalam sistem operasi Ubuntu. Jika Anda menggunakan sistem operasi Ubuntu, pesan kesalahan tersebut akan ditampilkan. Dalam hal ini, Anda harus menjalankan perintah apt install -y apparmor-utils dan aa-complain /usr/sbin/mysqld untuk mengubah pengaturan AppArmor.

  • Setelah tugas pemulihan selesai, apa yang harus saya lakukan jika pesan kesalahan error 1105 Unknown error ditampilkan saat saya menggunakan database MySQL yang dikelola sendiri atau jika database MySQL yang dikelola sendiri tidak dapat dimulai?

    Jalankan pernyataan SQL berikut untuk mengubah mesin penyimpanan:

    USE mysql;
    ALTER TABLE proc engine=myisam;
    ALTER TABLE event engine=myisam;
    ALTER TABLE func engine=myisam;
    Catatan

    Jika pesan kesalahan ERROR 1067 (42000): Invalid default value for 'modified' ditampilkan saat Anda menjalankan pernyataan di atas, jalankan pernyataan SET SQL_MODE='ALLOW_INVALID_DATES'; terlebih dahulu.

  • Apakah kata sandi pengguna root setelah data dipulihkan?

    Anda dapat menggunakan salah satu metode berikut untuk mendapatkan kata sandi:

    • Jika instance RDS menjalankan MySQL 5.7 atau MySQL 8.0, kata sandi pengguna root dari instance RDS sama dengan kata sandi pengguna root dari database MySQL yang dikelola sendiri.

    • Jika instance RDS menjalankan MySQL 5.5 atau MySQL 5.6, Anda harus menyetel ulang kata sandi pengguna root dari instance RDS. Untuk informasi lebih lanjut, lihat dokumentasi MySQL sumber terbuka.

  • Apa yang harus saya lakukan jika pesan kesalahan InnodDB: Assertion failure in thread 140xxx in file page0zip.icne xxx ditampilkan selama startup?

    Kesalahan mungkin terjadi karena ruang disk tidak mencukupi. Anda dapat menyesuaikan ukuran disk server tempat database MySQL yang dikelola sendiri berada dan coba lagi.

  • Apa yang harus saya lakukan jika pesan kesalahan [ERROR] Failed to open the relay log xxx, [ERROR] Slave: Failed to initialize the master info xxx, dan [ERROR] Failed to create or recover replication info repositories. ditampilkan selama startup?

    Instance RDS bekerja dalam mode ketersediaan tinggi (HA), tetapi database MySQL yang dikelola sendiri tidak melibatkan node utama dan sekunder. Ini tidak memengaruhi startup database. Anda dapat mengabaikan pesan kesalahan tersebut.

  • Apa yang harus saya lakukan jika pesan kesalahan [ERROR] Data Dictionary initialization failed ditampilkan selama startup?

    Kesalahan mungkin terjadi karena ketidaksesuaian sistem operasi. Instance RDS menggunakan Linux sebagai sistem operasi dasar. Oleh karena itu, kami merekomendasikan agar Anda melakukan pemulihan dalam sistem operasi Linux untuk menghindari masalah kompatibilitas.

  • Apa yang harus saya lakukan jika gagal memulai database MySQL yang dikelola sendiri dengan menjalankan perintah sudo systemctl start mysqld?

    Penyebab potensial dari kegagalan adalah Security-Enhanced Linux (SELinux) berjalan dalam mode enforcing. Anda dapat menjalankan perintah getenforce untuk menanyakan mode SELinux.

    • Dalam lingkungan pengembangan atau pengujian, kami merekomendasikan agar Anda mengubah mode SELinux menjadi permissive dan kemudian menjalankan perintah sudo systemctl start mysqld untuk memulai database MySQL yang dikelola sendiri.

    • Dalam lingkungan produksi, kami merekomendasikan agar Anda memeriksa log SELinux untuk mengidentifikasi penyebab kegagalan dan kemudian mengubah pengaturan SELinux berdasarkan penyebabnya.

Langkah 5: Hubungkan ke database dan verifikasi pemulihan

  1. Jalankan perintah berikut untuk masuk ke database MySQL yang dikelola sendiri dan verifikasi bahwa MySQL sedang berjalan:

    mysql -u<Nama pengguna akun yang digunakan untuk menghubungkan ke instance RDS> -p<Kata sandi akun tersebut>
    Catatan
    • Perintah ini digunakan untuk memeriksa apakah pemulihan berhasil. Jika Anda hanya ingin menanyakan data dalam tabel, Anda dapat menggunakan akun yang memiliki izin pada tabel untuk menjalankan perintah ini.

    • Jika Anda lupa akun atau kata sandi Anda, tambahkan opsi --skip-grant-tables saat menjalankan perintah untuk mengabaikan pemeriksaan izin. Dengan cara ini, Anda dapat masuk ke database tanpa perlu memasukkan akun dan kata sandi. Anda dapat menyetel ulang akun dan kata sandi setelah masuk ke database.

  2. Jalankan pernyataan SQL berikut untuk memeriksa apakah database dalam instance RDS ada:

    SHOW DATABASES;

FAQ tentang koneksi dan verifikasi

  • Setelah saya memulihkan data dari instance RDS saya dari file cadangan fisik ke database MySQL yang dikelola sendiri, waktu yang ditunjukkan oleh bidang waktu data dan waktu lokal server tempat database MySQL yang dikelola sendiri berada termasuk dalam zona waktu yang berbeda. Mengapa? Bagaimana cara memastikan bahwa waktu yang ditunjukkan oleh bidang waktu data dan waktu lokal termasuk dalam zona waktu yang sama?

    Jika zona waktu database MySQL yang dikelola sendiri berbeda dari zona waktu instance RDS Anda, Anda harus mengubah nilai parameter time_zone untuk database MySQL yang dikelola sendiri untuk memastikan konsistensi dengan nilai parameter time_zone untuk instance RDS Anda. Jika parameter time_zone instance RDS Anda disetel ke system, Anda harus menanyakan wilayah tempat instance RDS berada dan menyetel parameter time_zone database MySQL yang dikelola sendiri ke zona waktu wilayah tersebut.

  • Apa yang harus saya lakukan jika pesan kesalahan Access denied for user 'XXX' ditampilkan saat saya menghubungkan ke database MySQL yang dikelola sendiri?

    Periksa apakah nama pengguna dan kata sandi akun yang digunakan untuk menghubungkan ke instance RDS sudah benar. Akun tersebut harus dibuat pada instance RDS.

  • Apa yang harus saya lakukan jika saya lupa kata sandi saat menghubungkan ke database MySQL yang dikelola sendiri?

    Jika Anda lupa nama pengguna atau kata sandi akun Anda, konfigurasikan parameter --skip-grant-tables saat Anda menjalankan perintah untuk memulai proses MySQL. Setelah proses dimulai, pemeriksaan izin diabaikan, dan Anda dapat masuk ke database dalam mode tanpa kata sandi. Harap dicatat bahwa risiko keamanan dapat terjadi jika Anda menggunakan metode ini untuk masuk ke database. Kami merekomendasikan agar Anda segera mengubah nama pengguna dan kata sandi akun setelah Anda masuk ke database.

  • Apa yang harus saya lakukan jika saya hanya dapat melihat database sistem atau beberapa database setelah saya menghubungkan ke database yang dikelola sendiri?

    Mulai ulang database yang dikelola sendiri. Kemudian, gunakan akun root atau akun istimewa dari instance RDS asli untuk menghubungkan ke database yang dikelola sendiri.

Apa yang harus dilakukan selanjutnya

FAQ Lainnya

Apakah saya dapat memulihkan data instance RDS saya dari file cadangan yang diunduh ke instance RDS lain?

Tidak, Anda tidak dapat memulihkan data instance RDS ke instance RDS lain menggunakan file cadangan yang diunduh. Namun, Anda dapat menggunakan salah satu solusi berikut untuk memulihkan data:

Bagaimana cara memulihkan data instance RDS saya dalam rentang waktu tertentu ke database MySQL yang dikelola sendiri?

Anda dapat mengunduh file cadangan log yang dihasilkan dalam rentang waktu tertentu melalui konsol ApsaraDB RDS. Kemudian, gunakan file cadangan log tersebut untuk memulihkan data instance RDS ke database MySQL yang dikelola sendiri. Untuk informasi lebih lanjut, lihat Unduh file cadangan dan Pulihkan data ke titik waktu tertentu.

Bagaimana cara memulihkan data instance RDS for MySQL saya ke database MySQL yang dikelola sendiri?

Bagaimana cara memulihkan atau memigrasikan data instance RDS saya yang menjalankan RDS Basic Edition?

Instance RDS yang menjalankan RDS Basic Edition hanya mendukung cadangan snapshot. Jika instance RDS Anda menggunakan RDS Basic Edition, Anda dapat memilih salah satu metode berikut untuk memulihkan atau memigrasikan data:

Apakah saya bisa memulihkan data dari beberapa instance RDS dari file cadangan fisik ke database MySQL yang dikelola sendiri?

Tidak, Anda tidak dapat memulihkan data dari beberapa instance RDS ke satu database MySQL yang dikelola sendiri menggunakan file cadangan fisik. Namun, Anda dapat memulihkan data dari masing-masing instance RDS ke database MySQL yang dikelola sendiri yang berbeda. Setelah itu, gunakan DTS atau mysqldump untuk memigrasikan data. Untuk informasi lebih lanjut, lihat Migrasikan data dari database MySQL yang dikelola sendiri ke instance ApsaraDB RDS for MySQL atau Gunakan ekstensi mysqldump untuk memigrasikan data dari instance MySQL yang dikelola sendiri ke instance ApsaraDB RDS for MySQL.

Saya membuat akun istimewa untuk instance RDS saya di latar belakang. Setelah saya membuat cadangan fisik untuk mencadangkan instance RDS ke komputer saya, apakah akun istimewa tersebut masih memiliki izin aslinya?

Ya, akun istimewa tersebut tetap memiliki izin aslinya. Izin akun tidak terpengaruh oleh proses cadangan.