全部产品
Search
文档中心

ApsaraDB RDS:Memulihkan Data dari Instans ApsaraDB RDS untuk MySQL ke Instans MySQL yang Dikelola Sendiri Menggunakan File Cadangan Snapshot

更新时间:Sep 17, 2025

Anda dapat menggunakan fitur unduhan cadangan dari ApsaraDB RDS untuk MySQL untuk mengekspor file cadangan snapshot dari instans Anda yang menggunakan disk cloud sebagai file CSV atau file SQL. Kemudian, Anda dapat memanfaatkan file tersebut untuk memulihkan data dari instans RDS ke instans MySQL yang dikelola sendiri.

Prasyarat

  • Instans ApsaraDB RDS untuk MySQL harus memenuhi persyaratan berikut:

    • Versi database: 8.0 atau 5.7 (Instans Serverless didukung)

    • Jenis penyimpanan: ESSD atau disk performa premium

    • Status: Berjalan

    Catatan
    • Informasi ini dapat dilihat di halaman Basic Information instans.

    • Fitur unduhan lanjutan tidak didukung untuk instans yang menggunakan disk performa premium dan memiliki fitur pengarsipan data diaktifkan. Tugas unduhan untuk instans ini akan gagal.

  • Enkripsi Data Transparan (TDE) dinonaktifkan untuk instans RDS. Jika tabel dalam instans dienkripsi menggunakan TDE, kesalahan akan terjadi selama pemulihan. Dalam kasus ini, Anda harus mendekripsi tabel yang dienkripsi sebelum pemulihan. Untuk informasi lebih lanjut, lihat Mengaktifkan Enkripsi Data Transparan (TDE).

  • Parameter local_infile harus diatur ke ON untuk instans MySQL yang dikelola sendiri.

    Catatan
    • Untuk memeriksa apakah parameter local_infile diatur ke ON, jalankan pernyataan berikut: SHOW GLOBAL VARIABLES LIKE 'local_infile';

    • Untuk mengonfigurasi local_infile, jalankan pernyataan berikut: SET GLOBAL local_infile=1;

Batasan

Saat memulihkan data ke instans MySQL yang dikelola sendiri menggunakan file CSV atau file SQL yang diunduh, perhatikan batasan berikut:

  • Bidang dengan tipe data berikut tidak didukung: BIT, BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB, dan LONGBLOB.

    Catatan
    • Jika file CSV atau file SQL yang diunduh berisi bidang dengan tipe data di atas, bidang tersebut disimpan sebagai representasi heksadesimal. Saat mengimpor file ke instans MySQL yang dikelola sendiri, bidang biner diproses sebagai string. Dalam kasus ini, gunakan fungsi UNHEX dalam perintah LOAD DATA LOCAL INFILE untuk mengonversi bidang dari representasi heksadesimal menjadi string biner mentah.

    • Anda dapat menggunakan mysqldump untuk mencadangkan data tipe BLOB dan memulihkan data ke database MySQL yang dikelola sendiri.

      Perintah untuk mencadangkan data: mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <Nama database yang dikelola sendiri> --skip-triggers --skip-lock-tables > /tmp/<Nama database yang dikelola sendiri>.sql

      Perintah untuk memulihkan data: mysql -h 127.0.0.1 -u NamaPengguna -p NamaDatabase < NamaFileCadangan.sql

  • Bidang dengan tipe data spasial berikut tidak didukung: GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, dan GEOMETRYCOLLECTION.

Catatan Penggunaan

  • Skrip: Skrip restore_from_downloads.py yang digunakan dalam topik ini hanya untuk referensi. Lakukan verifikasi kompatibilitas sebelum menggunakannya.

  • Konsistensi versi mesin database: Disarankan menggunakan versi mesin database yang sama untuk instans RDS dan instans MySQL yang dikelola sendiri. Versi yang berbeda dapat menyebabkan ketidaksesuaian dan kegagalan pemulihan.

  • Deduplikasi nama database atau tabel: Pastikan nama database atau tabel dalam instans MySQL yang dikelola sendiri berbeda dari nama dalam instans RDS sebelum menjalankan perintah pemulihan. Jika tidak, pemulihan akan gagal.

  • Interrupsi tugas: Jika tugas pemulihan diinterupsi, data mungkin tidak sepenuhnya dipulihkan atau tugas pemulihan dapat gagal. Lanjutkan dengan hati-hati.

  • Karakter khusus: Jika jalur file, akun database, atau kata sandi dalam perintah berisi karakter khusus seperti ampersand (&), pagar (#), atau spasi, tutup dengan tanda kutip ganda (""). Contoh:

    # Jika jalur file berisi ampersand (&), tutup dengan tanda kutip ganda ("").
    python ./restore_from_downloads.py "/path/to/data&test" 127.0.0.1 3306 root zhtpasswordtest
    
    # Jika kata sandi berisi pagar dan simbol at (@), tutup dengan tanda kutip ganda ("").
    python ./restore_from_downloads.py /data 127.0.0.1 3306 root "#Test@20250821"

Prosedur

Berikut ini menjelaskan cara menggunakan file SQL untuk memulihkan data dari instans RDS yang menggunakan disk cloud ke instans MySQL yang dikelola sendiri pada instance Elastic Compute Service (ECS) 64-bit yang menjalankan Alibaba Cloud Linux 3.2104 LTS. Jika Anda menggunakan sistem operasi lain, gunakan perintah yang sesuai.

  1. Unduh dan Ekstrak File Backup

    1. Masuk ke Konsol ApsaraDB RDS dan konversikan file cadangan dari instans RDS yang menggunakan disk cloud menjadi file CSV atau file SQL. Gunakan fitur unduhan cadangan untuk mengunduh file ke komputer atau instans ECS Anda.

    2. Ekstrak file yang diunduh:

      • Jika file dalam format .tar.gz, jalankan perintah berikut:

        tar -izxvf <Nama file yang diunduh>.tar.gz -C <Direktori tempat Anda ingin mengekstrak file>
        
        # Perintah sampel berikut mengekstrak file backup.tar.gz ke jalur berikut: /home/mysql/data. Ganti nama file dan direktori dengan nilai aktual.
        tar -izxvf backup.tar.gz -C /home/mysql/data
      • Jika file dalam format .tar.zst, jalankan perintah berikut:

        zstd -d -c <Nama file yang diunduh>.tar.zst | tar -xvf - -C <Direktori tempat Anda ingin mengekstrak file>
        
        # Perintah sampel berikut mengekstrak file backup.zst ke jalur berikut: /home/mysql/data. Ganti nama file dan direktori dengan nilai aktual.
        zstd -d -c backup.tar.zst | tar -xvf - -C /home/mysql/data
    3. Opsional. Periksa apakah file cadangan diekstrak ke direktori /home/mysql/data.

      ls -al /home/mysql/data
  2. Menyiapkan skrip pemulihan

    1. Unduh skrip Python MySQL ke komputer atau instans ECS Anda.

      Penting

      Skrip ini hanya untuk referensi. Modifikasi skrip sesuai kebutuhan Anda.

    2. Jalankan perintah berikut untuk memberikan izin yang diperlukan pada file restore_from_downloads.py:

      chmod +x ./<Nama skrip>.py
      
      # Perintah sampel
      chmod +x ./restore_from_downloads.py
  3. Memulihkan data dari instans RDS ke instans MySQL yang dikelola sendiri

    python ./<Nama skrip>.py <Jalur file CSV atau SQL> <Host database> <Port database> <Nama pengguna akun> <Kata sandi akun>
    
    # Perintah sampel
    python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********"

    Keluaran:

    image.png

    Penting

    Jika pesan kesalahan Command 'python' not found ditampilkan, Python tidak diinstal atau perintah untuk menjalankan skrip Python tidak ada dalam jalur pencarian. Dalam kasus ini, periksa versi Python yang diinstal di sistem Anda dan gunakan perintah yang sesuai. Misalnya, jika Python 3 diinstal, jalankan perintah python3 ./restore_from_downloads.py /home/mysql/data/test1.sql 127.0.0.1 3306 zhtxxxxx "#txxxxx".

Referensi