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.
Tutorial ini hanya untuk referensi. Skrip pemulihan Python tidak lagi dipelihara. Harap evaluasi skrip sebelum menggunakannya.
Prasyarat
PolarDB for MySQL persyaratan kluster
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.
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.
CatatanJika 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 infileuntuk 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.
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.
Ekstrak file cadangan yang diunduh di komputer atau instance ECS Anda.
(Opsional) Verifikasi bahwa file cadangan telah diekstrak ke lokasi yang ditentukan (
/home/mysql/data).ls -al /home/mysql/dataUnduh python_script.py ke komputer atau instance ECS Anda.
PentingSkrip ini hanya untuk referensi. Anda mungkin perlu menyesuaikan skrip berdasarkan lingkungan dan kebutuhan Anda. Gunakan dengan hati-hati.
Jalankan perintah berikut untuk memberikan izin pada file skrip Python
restore_from_downloads.py:chmod +x ./restore_from_downloads.pyPulihkan 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********"CatatanJika 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:
PentingPastikan 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 perintahpython3 ./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 insecuremungkin muncul saat Anda menjalankan skrip Python. Hal ini karena skrip menggunakan perintahmysql -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.