PolarDB memungkinkan Anda mengekspor cadangan snapshot dari kluster berbasis disk cloud sebagai file CSV atau SQL. File tersebut kemudian dapat digunakan untuk memulihkan data ke database MySQL yang dikelola sendiri.
Skrip pemulihan Python tidak lagi dipelihara. Evaluasi skrip tersebut sebelum menggunakannya.
Prasyarat
PolarDB for MySQL persyaratan kluster
Untuk memastikan pemulihan berhasil, versi database yang dikelola sendiri harus sesuai dengan versi kluster sumber PolarDB for MySQL.
Kluster harus memenuhi persyaratan berikut:
-
Kluster: Fitur ini hanya tersedia untuk Cluster Edition kluster Enterprise Edition.
-
Wilayah: Tiongkok (Chengdu), Tiongkok (Guangzhou), Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Shanghai), Tiongkok (Zhangjiakou), Tiongkok (Hangzhou), Tiongkok (Shenzhen), Tiongkok (Hong Kong), Malaysia (Kuala Lumpur), Indonesia (Jakarta), Jepang (Tokyo), Singapura, AS (Silicon Valley), AS (Virginia), dan Jerman (Frankfurt).
CatatanFitur ini akan segera tersedia di wilayah lain.
-
Lainnya:
-
Pengguna RAM harus memiliki izin untuk mengunduh file backup. Untuk memberikan izin kepada Pengguna RAM, lihat izin Pengguna RAM.
-
Data backup tidak dienkripsi. Anda tidak dapat mengunduh file backup dari kluster PolarDB yang dienkripsi.
-
Hanya satu tugas unduh (sedang berjalan atau gagal) yang diizinkan per kluster atau instans dalam satu waktu.
-
Persyaratan database MySQL yang dikelola sendiri
Pastikan parameter local_infile diaktifkan di database MySQL yang dikelola sendiri Anda.
-
Periksa status parameter
local_infile. NilaiONmenunjukkan bahwa parameter tersebut diaktifkan:SHOW GLOBAL VARIABLES LIKE 'local_infile'; -
Aktifkan parameter
local_infile:SET GLOBAL local_infile=1;
Batasan
Batasan berikut berlaku saat memulihkan data dari backup yang diunduh ke database MySQL yang dikelola sendiri:
-
Tipe field biner berikut tidak didukung: BIT, BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB, dan LONGBLOB.
CatatanJika set cadangan berisi tipe field tersebut, nilainya disimpan dalam format heksadesimal. Anda harus secara manual menggunakan fungsi
UNHEXdalam perintahload data local infileuntuk mengonversi nilai heksadesimal kembali ke format biner aslinya. -
Tipe field spasial berikut tidak didukung: GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, dan GEOMETRYCOLLECTION.
Catatan penggunaan
-
Gunakan versi database yang sama untuk kluster PolarDB for MySQL dan database MySQL yang dikelola sendiri. Fitur yang tidak kompatibel antar versi berbeda dapat menyebabkan operasi pemulihan gagal.
-
Sebelum menjalankan perintah pemulihan, pastikan database tujuan tidak berisi database atau tabel dengan nama yang sama seperti yang ada dalam data backup. Hal ini mencegah konflik data dan potensi kehilangan data. Hapus terlebih dahulu database atau tabel yang bertentangan.
-
Menginterupsi tugas pemulihan dapat mengakibatkan data tidak lengkap atau kegagalan tugas.
Prosedur
Contoh ini menunjukkan cara memulihkan data dari file backup SQL kluster PolarDB for MySQL ke database MySQL yang dikelola sendiri pada instance ECS (CentOS 7.8 64-bit). Sesuaikan perintah tersebut dengan lingkungan spesifik Anda.
-
Di Konsol PolarDB, gunakan fitur Download backup files untuk mengonversi file backup kluster ke format CSV atau SQL. Kemudian, unduh file tersebut ke mesin lokal atau instance ECS Anda.
-
-
Jika file backup dalam format
.tar.gz, jalankan perintah berikut:tar -izxvf <nama_file_terkompresi>.tar.gz -C <direktori_tujuan> # 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 backup dalam format
.tar.zst, jalankan perintah berikut:zstd -d -c <nama_file_terkompresi>.tar.zst | tar -xvf - -C <direktori_tujuan> # 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
-
-
(Opsional) Verifikasi bahwa file backup telah diekstrak ke direktori yang ditentukan (
/home/mysql/data).ls -al /home/mysql/data -
Unduh skrip Python ke mesin lokal atau instance ECS Anda.
PentingSkrip ini hanya sebagai referensi dan mungkin memerlukan modifikasi untuk lingkungan Anda. Gunakan dengan hati-hati.
-
Jadikan skrip
restore_from_downloads.pydapat dieksekusi dengan menjalankan perintah berikut:chmod +x ./restore_from_downloads.py -
Pulihkan data dari file CSV atau SQL ke database yang dikelola sendiri:
python ./restore_from_downloads.py <path_ke_direktori_csv_atau_sql> <database_endpoint> <database_port> <database_username> <database_password>Contoh:
python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********"CatatanJika Anda menutup jendela terminal, skrip akan berhenti berjalan. 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 &Output:
[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.zhxxxPenting-
Pastikan database yang dikelola sendiri Anda tidak berisi database dengan nama yang sama seperti yang ada dalam backup. Jika tidak, operasi pemulihan akan gagal.
-
Jika username atau password database berisi karakter khusus, seperti tanda pagar (#) atau spasi, sertakan nilai tersebut dalam tanda kutip ganda ("") saat diberikan sebagai parameter baris perintah. Misalnya, jika password database adalah
#1234, Anda harus memberikan"#1234"di baris perintah. -
Jika Anda menerima error seperti
Command 'python' not found, artinya Python tidak terinstal atau tidak ada dalam PATH sistem Anda. Verifikasi instalasi Python dan perintah yang digunakan untuk menjalankannya. Misalnya, jika Python 3 terinstal, Anda dapat menggunakanpython3 ./restore_from_downloads.py /home/mysql/data/test1.sql 127.0.0.1 3306 zhtxxxxx "#txxxxx". -
Jika muncul pesan peringatan
[Warning] Using a password on the command line interface can be insecuresaat menjalankan skrip Python, hal ini karena skrip menggunakan perintahmysql -h<database endpoint> -P<database port> -u<database username> -p<database password> -e<SQL>. Metode ini tidak aman karena pengguna lain di sistem dapat melihat password dengan menjalankan perintah seperti ps. Peringatan ini tidak memengaruhi operasi pemulihan Anda. Setelah pemulihan selesai, Anda dapat login ke database MySQL yang dikelola sendiri dan mengganti password akun tersebut. -
Error seperti
Access denied for user 'xxx'@'xxx' (using password: YES)menunjukkan username atau password database salah. Pastikan Anda telah memasukkan kredensial dengan benar.
-