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
CatatanAnda 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_infileharus 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 perintahload data local infileuntuk mengonversinya kembali ke format biner. -
Sebagai alternatif, untuk data BLOB, Anda dapat menggunakan
mysqldumpuntuk 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>.sqlPulihkan 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.pyyang 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
&,#, atauspasi, 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.
-
Unduh dan ekstrak file cadangan
-
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.
-
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
-
-
(Opsional) Jalankan perintah berikut untuk memverifikasi bahwa file cadangan telah diekstrak ke lokasi yang ditentukan (/home/mysql/data):
ls -al /home/mysql/data
-
-
Siapkan skrip pemulihan
-
Siapkan skrip pemulihan.
Unduh file skrip Python MySQL ke mesin lokal atau Instance ECS Anda.
PentingSkrip ini hanya disediakan sebagai referensi. Modifikasi skrip agar sesuai dengan lingkungan Anda. Gunakan skrip ini dengan hati-hati.
-
Jalankan perintah berikut untuk memberikan izin eksekusi pada skrip:
chmod +x ./<script_name>.py # Contoh: chmod +x ./restore_from_downloads.py
-
-
Jalankan perintah pemulihan
PentingJika muncul pesan error seperti
Command 'python' not found, artinya Python belum terinstal atau perintahpythontidak 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 perintahpython3 ./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
-
Solusi ini hanya berlaku untuk memulihkan cadangan snapshot dari instans berbasis disk. Jika Anda perlu memulihkan cadangan dari instans dengan disk lokal berkinerja-tinggi, lihat Memulihkan file cadangan fisik dari ApsaraDB RDS for MySQL ke database yang dikelola sendiri atau Memulihkan file cadangan logis dari ApsaraDB RDS for MySQL ke database yang dikelola sendiri.
-
Alibaba Cloud juga menyediakan Data Transmission Service (DTS) untuk membantu Anda melakukan migrasi data dari instans ApsaraDB RDS for MySQL ke database MySQL yang dikelola sendiri.
-
Untuk solusi pemulihan data lainnya, lihat Ikhtisar solusi pemulihan data.