All Products
Search
Document Center

ApsaraDB RDS:Memulihkan cadangan logis RDS MySQL ke database yang dikelola sendiri

Last Updated:Jul 16, 2026

Cadangan logis merupakan file mysqldump standar. Gunakan metode ini ketika Anda perlu memulihkan database atau tabel tertentu dari instans ApsaraDB RDS for MySQL ke database MySQL yang dikelola sendiri di Linux. Panduan ini mencakup pengunduhan cadangan, dekompresi, dan impor data.

Catatan

Untuk pemulihan berdasarkan titik waktu (point-in-time restore), gunakan file cadangan fisik yang dikombinasikan dengan cadangan log. Tidak yakin metode mana yang sesuai untuk situasi Anda? Lihat Ikhtisar metode pemulihan data.

Cara kerja

  1. Unduh file cadangan logis dari Konsol RDS.

  2. Dekompres arsip .tar, lalu dekompres file .sql.gz per database.

  3. Buat database target kosong dan impor file skema serta data menggunakan mysql.

Prasyarat

Sebelum memulai, pastikan Anda memiliki:

  • Instans ApsaraDB RDS for MySQL dengan semua hal berikut (periksa halaman Basic Information):

    • Versi utama: 8.0, 5.7, 5.6, atau 5.5

    • Edisi: Edisi Ketersediaan Tinggi

    • Jenis penyimpanan: Local SSD

  • File cadangan logis yang telah dibuat. Cadangan logis harus dibuat secara manual — sistem membuat cadangan fisik secara default. Lihat Manual backup.

  • Host Linux yang menjalankan versi utama MySQL yang sama dengan instans RDS, dengan ruang disk gratis yang cukup untuk menampung file cadangan setelah didekompresi.

Catatan

Panduan ini menggunakan CentOS 7 dan MySQL 5.7 sebagai contoh.

Mengunduh file cadangan

  1. Buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instans RDS Anda berada, lalu klik ID instans.

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

  3. Di tab Base Backups > Data Backup, temukan file cadangan logis yang ingin Anda pulihkan, lalu klik Download Instance Backup File di kolom Actions.

    Catatan

    Jika Download Instance Backup File tidak tersedia, periksa apakah edisi instans Anda mendukung pengunduhan cadangan.

  4. Di kotak dialog Download Instance Backup File, salin URL unduhan:

    • Jika instance ECS dan instance RDS Anda berada dalam VPC yang sama (disarankan): salin URL jaringan internal. Ini lebih cepat dan stabil, terutama untuk file cadangan besar.

    • Jika tidak: salin URL unduhan eksternal. Kuota gratis berlaku untuk pengunduhan cadangan melalui internet; lalu lintas melebihi kuota akan dikenai biaya. Lihat Billing.

  5. Di host Linux, jalankan perintah berikut untuk mengunduh file cadangan. Ganti <download_url> dengan URL yang telah Anda salin dan <custom_file_name> dengan nama pilihan Anda.

    Flag Description
    -c Mengaktifkan unduhan yang dapat dilanjutkan (resumable downloads), sehingga unduhan dilanjutkan dari titik terakhir jika terputus
    -O Menyimpan file dengan nama yang ditentukan
    wget -c '<download_url>' -O <custom_file_name>.tar

Dekompresi file cadangan

  1. Ekstrak arsip .tar:

    Catatan

    Jika muncul pesan This does not look like a tar archive, pastikan Anda mengunduh file cadangan logis RDS dan bukan cadangan fisik. Jika muncul pesan Wrote only 512 of 10240 bytes, disk Anda penuh — ubah konfigurasi instans untuk menambah kapasitas ruang disk, lalu coba lagi.

    tar xvf <custom_file_name>.tar -C /tmp
  2. Periksa struktur direktori setelah ekstraksi. Arsip berisi satu subdirektori per database, masing-masing berisi file skema dan file data:

    tree /tmp/backup_root/   # Ganti dengan direktori root aktual yang dibuat oleh tar.

    Output yang diharapkan:

    /tmp/backup_root/
    ├── database1/   # Direktori database target 1
    │ ├── schema.sql # File skema database
    │ └── data.sql   # File data
    ├── database2/   # Direktori database target 2
    │ ├── schema.sql
    │ └── data.sql
    └── config.txt    # Metadata cadangan (opsional)
  3. Buka direktori database yang ingin Anda pulihkan:

    cd /tmp/backup_root/<database_name>
  4. Dekompres file .sql.gz:

    gzip -d schema.sql.gz
    gzip -d data.sql.gz

    Proses ini menghasilkan schema.sql dan data.sql, yang akan Anda impor pada langkah berikutnya.

Mengimpor data

  1. Login ke MySQL dan buat database target kosong. Pengguna harus memiliki izin untuk mengeksekusi semua Pernyataan SQL dalam file .sql.

    Placeholder Description Example
    <user> username MySQL root
    <password> password MySQL (tanpa spasi setelah -p) mypassword
    <target_database_name> Nama database kosong yang akan dibuat restored_db
     mysql -u <user> -p<password>
     CREATE DATABASE <target_database_name>;
     EXIT;

    Ganti placeholder sebagai berikut:

  2. Impor skema terlebih dahulu, lalu data:

    Catatan

    Jika muncul pesan Can't find master key from keyring, instans Anda mungkin tidak memenuhi prasyarat yang tercantum dalam panduan ini. Verifikasi edisi dan jenis penyimpanan instans RDS.

     # Impor skema tabel
     mysql -u <user> -p <target_database_name> < schema.sql
    
     # Impor data
     mysql -u <user> -p <target_database_name> < data.sql

    Masukkan kata sandi Anda saat diminta setelah setiap perintah.

Verifikasi pemulihan

  1. Login ke MySQL dan pastikan tabel serta data sudah ada:

     mysql -u <user> -p
     USE <target_database_name>;
     SHOW TABLES;                            -- Periksa apakah tabel ada
     SELECT COUNT(*) FROM <table_name>;      -- Verifikasi jumlah baris

    Jika tabel dan data muncul, pemulihan telah selesai.

FAQ

Mengapa instans saya tidak memiliki cadangan logis?

RDS membuat cadangan fisik secara default. Untuk mendapatkan cadangan logis, buat secara manual. Lihat Manual backup.

Mengapa nilai Restore Point in Time bernilai 0 untuk cadangan logis?

Pemulihan berdasarkan titik waktu memerlukan cadangan fisik yang dikombinasikan dengan cadangan log. Cadangan logis tidak mendukung pemulihan berdasarkan titik waktu, sehingga bidang Restore Point in Time menampilkan nilai 0.

Bagaimana cara memperbaiki `ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty`?

Kesalahan ini berarti database target sudah berisi riwayat pengenal transaksi global (GTID). Gunakan salah satu pendekatan berikut:

  • Aktifkan GTID pada database target dan jalankan kembali impor.

  • Komentari semua baris GTID_PURGED dalam file .sql dan jalankan kembali impor.

  • Jika replikasi primary/secondary tidak digunakan, jalankan RESET MASTER pada database target untuk menghapus riwayat GTID, lalu jalankan kembali impor.

Bagaimana cara memperbaiki `ERROR 3546 (HY000): @@GLOBAL.GTID_PURGED cannot be changed: the added gtid set must not overlap with @@GLOBAL.GTID_EXECUTED`?

File .sql berisi informasi GTID yang bertentangan dengan riwayat GTID yang sudah ada di database target. Jalankan RESET MASTER untuk menghapus riwayat GTID, lalu jalankan kembali impor.

restmaster

Mengapa data yang dipulihkan hanya ada di database utama dan tidak disinkronkan ke database sekunder?

File .sql berisi SESSION.SQL_LOG_BIN= 0, yang menonaktifkan pencatatan biner selama impor dan mencegah perubahan direplikasi ke database sekunder. Periksa file impor untuk pengaturan ini.

SQL_LOG_BIN

Langkah selanjutnya