All Products
Search
Document Center

ApsaraDB RDS:Memulihkan file cadangan snapshot ApsaraDB RDS for MySQL ke database yang dikelola sendiri

Last Updated:Jun 22, 2026

Gunakan fitur Download Backup untuk mengonversi cadangan snapshot dari instans berbasis disk ApsaraDB RDS for MySQL menjadi file CSV atau SQL, lalu pulihkan file tersebut ke database MySQL yang dikelola sendiri di mesin lokal atau Instance ECS.

Prasyarat

  • Instans ApsaraDB RDS for MySQL memenuhi persyaratan berikut:

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

    • Tipe penyimpanan: ESSD atau disk premium performance

    • Status: running

    Catatan
    • Anda dapat melihat informasi ini di halaman Basic Information instans.

    • Fitur unduh advanced tidak didukung untuk instans yang menggunakan disk premium performance dan telah mengaktifkan fitur pengarsipan data. Tugas unduh untuk instans tersebut akan gagal.

  • TDE harus dinonaktifkan pada instans ApsaraDB RDS for MySQL. Jika instans berisi tabel terenkripsi, proses pemulihan akan gagal. Anda harus mendekripsi tabel tersebut terlebih dahulu.

  • Parameter local_infile harus diaktifkan pada database MySQL yang dikelola sendiri Anda.

    Catatan
    • Untuk memeriksa status parameter local_infile (ON menunjukkan bahwa parameter tersebut diaktifkan), jalankan perintah berikut: SHOW GLOBAL VARIABLES LIKE 'local_infile';

    • Untuk mengaktifkan parameter local_infile, jalankan perintah berikut: SET GLOBAL local_infile=1;

Batasan

Batasan berikut berlaku untuk tipe data saat Anda memulihkan set cadangan yang diunduh ke database MySQL yang dikelola sendiri.

  • Tipe field biner yang tidak didukung: BIT, BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB, dan LONGBLOB.

    Catatan
    • Jika set cadangan berisi tipe data ini, data tersebut disimpan dalam format heksadesimal. Saat impor, MySQL memperlakukannya sebagai string. Anda harus secara manual menggunakan fungsi UNHEX() dalam perintah load data local infile untuk mengonversinya kembali ke format biner.

    • Sebagai alternatif, untuk data BLOB, Anda dapat menggunakan mysqldump untuk mencadangkan dan memulihkan data ke database MySQL lokal Anda.

      Cadangkan data: mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <self-managed_database_name> --skip-triggers --skip-lock-tables > /tmp/<self-managed_database_name>.sql

      Pulihkan data: mysql -h 127.0.0.1 -u username -p database_name < backup_file.sql

  • Tipe data spasial yang tidak didukung: GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, dan GEOMETRYCOLLECTION.

Sebelum memulai

  • Pemeliharaan skrip: Skrip restore_from_downloads.py yang disediakan dalam topik ini hanya bersifat referensi dan tidak lagi dipelihara. Gunakan dengan hati-hati dan verifikasi kompatibilitasnya dengan lingkungan Anda.

  • Konsistensi versi database: Pastikan versi utama database MySQL yang dikelola sendiri Anda sesuai dengan instans ApsaraDB RDS for MySQL. Ketidaksesuaian versi dapat menyebabkan kegagalan pemulihan akibat ketidakcocokan fitur.

  • Konflik penamaan: Pastikan database yang dikelola sendiri tidak memiliki konflik nama dengan database atau tabel dalam set cadangan. Konflik nama akan menyebabkan pemulihan gagal.

  • Gangguan tugas: Menginterupsi tugas pemulihan dapat mengakibatkan data tidak lengkap atau pemulihan gagal. Jangan menghentikan proses setelah dimulai.

  • Penanganan karakter khusus: Jika path file, akun database, atau password berisi karakter khusus, seperti &, #, atau spasi, Anda harus membungkus nilai tersebut dalam tanda kutip ganda (""). Jika tidak, perintah akan gagal. Contohnya:

    # Jika path file berisi karakter khusus, seperti &, bungkus path dalam tanda kutip ganda.
    python ./restore_from_downloads.py "/path/to/data&test" 127.0.0.1 3306 root zhtpasswordtest
    
    # Jika password berisi karakter khusus, seperti # atau @, bungkus password dalam tanda kutip ganda.
    python ./restore_from_downloads.py /data 127.0.0.1 3306 root "#Test@20250821"

Prosedur

Contoh ini menunjukkan cara memulihkan file SQL dari instans berbasis disk ApsaraDB RDS for MySQL ke database MySQL yang dikelola sendiri. Database yang dikelola sendiri dalam contoh ini berjalan di Instance ECS dengan Alibaba Cloud Linux 3.2104 LTS 64-bit. Sesuaikan perintah sesuai lingkungan Anda.

  1. Unduh dan ekstrak file cadangan

    1. Masuk ke Konsol RDS dan gunakan fitur Download Backup untuk mengonversi file cadangan dari instans berbasis disk ApsaraDB RDS for MySQL Anda menjadi file CSV atau SQL, lalu unduh file tersebut ke mesin lokal atau Instance ECS Anda.

    2. Ekstrak file cadangan yang diunduh di mesin lokal atau Instance ECS Anda.

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

        tar -izxvf <compressed_file_name>.tar.gz -C <destination_directory>
        # Contoh: Ekstrak file backup.tar.gz ke direktori /home/mysql/data. Nama file dan direktori dalam perintah hanya sebagai referensi.
        tar -izxvf backup.tar.gz -C /home/mysql/data
      • Jika file cadangan dalam format .tar.zst, jalankan perintah berikut:

        zstd -d -c <compressed_file_name>.tar.zst | tar -xvf - -C <destination_directory>
        # Contoh: Ekstrak file backup.zst ke direktori /home/mysql/data. Nama file dan direktori dalam perintah hanya sebagai referensi.
        zstd -d -c backup.tar.zst | tar -xvf - -C /home/mysql/data
    3. (Opsional) Jalankan perintah berikut untuk memverifikasi bahwa file cadangan telah diekstrak ke lokasi yang ditentukan (/home/mysql/data):

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

    1. Siapkan skrip pemulihan.

      Unduh file skrip Python MySQL ke mesin lokal atau Instance ECS Anda.

      Penting

      Skrip ini hanya disediakan sebagai referensi. Modifikasi skrip agar sesuai dengan lingkungan Anda. Gunakan skrip ini dengan hati-hati.

    2. Jalankan perintah berikut untuk memberikan izin eksekusi pada skrip:

      chmod +x ./<script_name>.py
      # Contoh:
      chmod +x ./restore_from_downloads.py
  3. Jalankan perintah pemulihan

    Penting

    Jika muncul pesan error seperti Command 'python' not found, artinya Python belum terinstal atau perintah python tidak ada di PATH sistem. Dalam hal ini, periksa versi Python yang terinstal dan gunakan perintah yang tepat untuk menjalankan skrip. Misalnya, jika Anda memiliki Python 3 terinstal, jalankan perintah python3 ./restore_from_downloads.py /home/mysql/data/test1.sql 127.0.0.1 3306 zhtxxxxx "#txxxxx".

    python ./<script_name>.py <path_to_CSV_or_SQL_directory> <database_host> <database_port> <database_account> <database_password>
    # Contoh:
    python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********"
    [root@ixxx ~]# python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tesxxx"
    [INFO]: restore data from /home/mysql/data to 127.xxx:3306
    mysql: [Warning] Using a password on the command line interface can be insecure.
    [INFO]: restore structure database: zhxxx ends
    mysql: [Warning] Using a password on the command line interface can be insecure.
    [INFO]: restore structure table: zhxxx ends
    [INFO]: trying to exec: mysql -h127.xxx -P3306 -uroot -p#Tesxxx </home/mysql/data/zxxx
    mysql: [Warning] Using a password on the command line interface can be insecure.
    [INFO]: restore data [1/1] of table zhxxx.zhxxx

Referensi