All Products
Search
Document Center

PolarDB:Memulihkan data ke database MySQL yang dikelola sendiri dari file cadangan

Last Updated:Nov 11, 2025

Gunakan fitur unduh cadangan PolarDB untuk mengekspor cadangan snapshot dari instans berbasis disk sebagai file CSV atau SQL. Anda kemudian dapat menggunakan file tersebut untuk memulihkan data ke database MySQL yang dikelola sendiri.

Penting

Tutorial ini hanya untuk referensi. Skrip pemulihan Python tidak lagi dipelihara. Harap evaluasi skrip sebelum menggunakannya.

Prasyarat

PolarDB for MySQL persyaratan kluster

Penting

Untuk memastikan pemulihan berhasil, konfirmasikan bahwa database yang dikelola sendiri dan kluster PolarDB for MySQL target menggunakan versi yang sama sebelum memulai.

Persyaratan wilayah kluster:

    Persyaratan database MySQL yang dikelola sendiri

    Pastikan parameter local_infile diaktifkan untuk database MySQL yang dikelola sendiri.

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

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

    Batasan

    Perhatikan batasan berikut saat memulihkan data ke database MySQL yang dikelola sendiri dari set cadangan yang diunduh:

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

      Catatan

      Jika set cadangan berisi bidang dengan tipe-tipe tersebut, bidang tersebut disimpan dalam format heksadesimal. Saat Anda mengimpor data, MySQL memproses bidang biner ini sebagai string. Dalam kasus ini, Anda harus secara manual menggunakan fungsi UNHEX dalam perintah load data local infile untuk mengonversi nilai heksadesimal menjadi string biner aslinya.

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

    Catatan penggunaan

    • Pastikan kluster PolarDB for MySQL dan database MySQL yang dikelola sendiri menggunakan versi yang sama. Versi database yang berbeda mungkin memiliki fitur yang tidak kompatibel sehingga dapat menyebabkan kegagalan pemulihan.

    • Sebelum menjalankan perintah pemulihan, pastikan tidak ada database atau tabel di database target yang memiliki nama yang sama dengan yang ada dalam data cadangan untuk mencegah konflik atau kehilangan data. Periksa dan hapus secara hati-hati database serta tabel yang bertentangan.

    • Jika Anda menghentikan pekerjaan pemulihan karena alasan apa pun, data mungkin tidak lengkap atau pekerjaan tersebut gagal. Lanjutkan dengan hati-hati.

    Prosedur

    Contoh ini menunjukkan cara memulihkan data dari file SQL dari kluster PolarDB for MySQL ke database MySQL yang dikelola sendiri. Dalam contoh ini, database yang dikelola sendiri berjalan pada instance ECS yang menggunakan CentOS 7.8 64-bit. Perintah-perintah tersebut dapat berbeda tergantung lingkungan Anda.

    1. Masuk ke Konsol PolarDB. Gunakan fitur Unduh file cadangan untuk mengonversi file cadangan kluster menjadi file CSV atau SQL dan mengunduh file tersebut ke komputer atau instance ECS Anda.

    2. Ekstrak file cadangan yang diunduh di komputer atau instance ECS Anda.

    3. (Opsional) Verifikasi bahwa file cadangan telah diekstrak ke lokasi yang ditentukan (/home/mysql/data).

      ls -al /home/mysql/data
    4. Unduh python_script.py ke komputer atau instance ECS Anda.

      Penting

      Skrip ini hanya untuk referensi. Anda mungkin perlu menyesuaikan skrip berdasarkan lingkungan dan kebutuhan Anda. Gunakan dengan hati-hati.

    5. Jalankan perintah berikut untuk memberikan izin pada file skrip Python restore_from_downloads.py:

      chmod +x ./restore_from_downloads.py
    6. Pulihkan data dari file CSV atau SQL ke database yang dikelola sendiri. Perintah pemulihan adalah sebagai berikut:

      python ./restore_from_downloads.py <Path direktori file CSV atau SQL> <Titik akhir database> <Port database> <Akun database> <Kata sandi database>

      Contoh:

      python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********"
      Catatan

      Jika Anda menutup jendela tempat skrip Python berjalan, skrip akan berhenti. Untuk menjalankan skrip di latar belakang, gunakan perintah berikut:

       nohup python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********" > app.log 2>&1 &

      Hasil eksekusi:

      image.png

      Penting
      • Pastikan database yang dikelola sendiri tidak berisi database dengan nama yang sama seperti database dalam data cadangan. Jika tidak, pemulihan akan gagal.

      • Jika nama akun database atau kata sandi berisi karakter khusus, seperti tanda pagar (#) atau spasi, sertakan kata sandi dalam tanda kutip ganda ("") saat meneruskannya sebagai parameter baris perintah. Misalnya, jika kata sandi adalah #1234, masukkan "#1234" dalam perintah.

      • Jika muncul pesan kesalahan seperti Command 'python' not found, hal ini menunjukkan bahwa Python belum diinstal atau perintah Python tidak ada dalam path pencarian sistem. Dalam hal ini, konfirmasi versi Python yang diinstal pada sistem Anda dan pastikan perintah untuk menjalankan Python sudah benar. Misalnya, jika Python 3 diinstal, Anda dapat menggunakan perintah python3 ./restore_from_downloads.py /home/mysql/data/test1.sql 127.0.0.1 3306 zhtxxxxx "#txxxxx".

      • Pesan peringatan [Warning] Using a password on the command line interface can be insecure mungkin muncul saat Anda menjalankan skrip Python. Hal ini karena skrip menggunakan perintah mysql -h<Titik akhir database> -P<Port database> -u<Akun database> -p<Kata sandi database> -e<SQL>. Peringatan ini menunjukkan bahwa pengguna lain di sistem mungkin dapat melihat kata sandi dengan menjalankan perintah seperti ps. Peringatan ini tidak memengaruhi operasi pemulihan. Setelah operasi pemulihan selesai, masuk ke database MySQL yang dikelola sendiri untuk mengubah kata sandi.

      • Jika muncul pesan kesalahan seperti Access denied for user 'xxx'@'xxx' (using password: YES), hal ini menunjukkan bahwa akun atau kata sandi database salah. Pastikan Anda memasukkannya dengan benar.