Anda dapat menggunakan fitur unduhan cadangan dari ApsaraDB RDS untuk MySQL untuk mengekspor file cadangan snapshot dari instans Anda yang menggunakan disk cloud sebagai file CSV atau file SQL. Kemudian, Anda dapat memanfaatkan file tersebut untuk memulihkan data dari instans RDS ke instans MySQL yang dikelola sendiri.
Prasyarat
Instans ApsaraDB RDS untuk MySQL harus memenuhi persyaratan berikut:
Versi database: 8.0 atau 5.7 (Instans Serverless didukung)
Jenis penyimpanan: ESSD atau disk performa premium
Status: Berjalan
CatatanInformasi ini dapat dilihat di halaman Basic Information instans.
Fitur unduhan lanjutan tidak didukung untuk instans yang menggunakan disk performa premium dan memiliki fitur pengarsipan data diaktifkan. Tugas unduhan untuk instans ini akan gagal.
Enkripsi Data Transparan (TDE) dinonaktifkan untuk instans RDS. Jika tabel dalam instans dienkripsi menggunakan TDE, kesalahan akan terjadi selama pemulihan. Dalam kasus ini, Anda harus mendekripsi tabel yang dienkripsi sebelum pemulihan. Untuk informasi lebih lanjut, lihat Mengaktifkan Enkripsi Data Transparan (TDE).
Parameter
local_infileharus diatur ke ON untuk instans MySQL yang dikelola sendiri.CatatanUntuk memeriksa apakah parameter local_infile diatur ke ON, jalankan pernyataan berikut:
SHOW GLOBAL VARIABLES LIKE 'local_infile';Untuk mengonfigurasi
local_infile, jalankan pernyataan berikut:SET GLOBAL local_infile=1;
Batasan
Saat memulihkan data ke instans MySQL yang dikelola sendiri menggunakan file CSV atau file SQL yang diunduh, perhatikan batasan berikut:
Bidang dengan tipe data berikut tidak didukung: BIT, BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB, dan LONGBLOB.
CatatanJika file CSV atau file SQL yang diunduh berisi bidang dengan tipe data di atas, bidang tersebut disimpan sebagai representasi heksadesimal. Saat mengimpor file ke instans MySQL yang dikelola sendiri, bidang biner diproses sebagai string. Dalam kasus ini, gunakan fungsi UNHEX dalam perintah
LOAD DATA LOCAL INFILEuntuk mengonversi bidang dari representasi heksadesimal menjadi string biner mentah.Anda dapat menggunakan
mysqldumpuntuk mencadangkan data tipe BLOB dan memulihkan data ke database MySQL yang dikelola sendiri.Perintah untuk mencadangkan data:
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <Nama database yang dikelola sendiri> --skip-triggers --skip-lock-tables > /tmp/<Nama database yang dikelola sendiri>.sqlPerintah untuk memulihkan data:
mysql -h 127.0.0.1 -u NamaPengguna -p NamaDatabase < NamaFileCadangan.sql
Bidang dengan tipe data spasial berikut tidak didukung: GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, dan GEOMETRYCOLLECTION.
Catatan Penggunaan
Skrip: Skrip
restore_from_downloads.pyyang digunakan dalam topik ini hanya untuk referensi. Lakukan verifikasi kompatibilitas sebelum menggunakannya.Konsistensi versi mesin database: Disarankan menggunakan versi mesin database yang sama untuk instans RDS dan instans MySQL yang dikelola sendiri. Versi yang berbeda dapat menyebabkan ketidaksesuaian dan kegagalan pemulihan.
Deduplikasi nama database atau tabel: Pastikan nama database atau tabel dalam instans MySQL yang dikelola sendiri berbeda dari nama dalam instans RDS sebelum menjalankan perintah pemulihan. Jika tidak, pemulihan akan gagal.
Interrupsi tugas: Jika tugas pemulihan diinterupsi, data mungkin tidak sepenuhnya dipulihkan atau tugas pemulihan dapat gagal. Lanjutkan dengan hati-hati.
Karakter khusus: Jika jalur file, akun database, atau kata sandi dalam perintah berisi karakter khusus seperti ampersand (&), pagar (#), atau spasi, tutup dengan tanda kutip ganda (""). Contoh:
# Jika jalur file berisi ampersand (&), tutup dengan tanda kutip ganda (""). python ./restore_from_downloads.py "/path/to/data&test" 127.0.0.1 3306 root zhtpasswordtest # Jika kata sandi berisi pagar dan simbol at (@), tutup dengan tanda kutip ganda (""). python ./restore_from_downloads.py /data 127.0.0.1 3306 root "#Test@20250821"
Prosedur
Berikut ini menjelaskan cara menggunakan file SQL untuk memulihkan data dari instans RDS yang menggunakan disk cloud ke instans MySQL yang dikelola sendiri pada instance Elastic Compute Service (ECS) 64-bit yang menjalankan Alibaba Cloud Linux 3.2104 LTS. Jika Anda menggunakan sistem operasi lain, gunakan perintah yang sesuai.
Unduh dan Ekstrak File Backup
Masuk ke Konsol ApsaraDB RDS dan konversikan file cadangan dari instans RDS yang menggunakan disk cloud menjadi file CSV atau file SQL. Gunakan fitur unduhan cadangan untuk mengunduh file ke komputer atau instans ECS Anda.
Ekstrak file yang diunduh:
Jika file dalam format
.tar.gz, jalankan perintah berikut:tar -izxvf <Nama file yang diunduh>.tar.gz -C <Direktori tempat Anda ingin mengekstrak file> # Perintah sampel berikut mengekstrak file backup.tar.gz ke jalur berikut: /home/mysql/data. Ganti nama file dan direktori dengan nilai aktual. tar -izxvf backup.tar.gz -C /home/mysql/dataJika file dalam format
.tar.zst, jalankan perintah berikut:zstd -d -c <Nama file yang diunduh>.tar.zst | tar -xvf - -C <Direktori tempat Anda ingin mengekstrak file> # Perintah sampel berikut mengekstrak file backup.zst ke jalur berikut: /home/mysql/data. Ganti nama file dan direktori dengan nilai aktual. zstd -d -c backup.tar.zst | tar -xvf - -C /home/mysql/data
Opsional. Periksa apakah file cadangan diekstrak ke direktori /home/mysql/data.
ls -al /home/mysql/data
Menyiapkan skrip pemulihan
Unduh skrip Python MySQL ke komputer atau instans ECS Anda.
PentingSkrip ini hanya untuk referensi. Modifikasi skrip sesuai kebutuhan Anda.
Jalankan perintah berikut untuk memberikan izin yang diperlukan pada file
restore_from_downloads.py:chmod +x ./<Nama skrip>.py # Perintah sampel chmod +x ./restore_from_downloads.py
Memulihkan data dari instans RDS ke instans MySQL yang dikelola sendiri
python ./<Nama skrip>.py <Jalur file CSV atau SQL> <Host database> <Port database> <Nama pengguna akun> <Kata sandi akun> # Perintah sampel python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********"Keluaran:
PentingJika pesan kesalahan
Command 'python' not foundditampilkan, Python tidak diinstal atau perintah untuk menjalankan skrip Python tidak ada dalam jalur pencarian. Dalam kasus ini, periksa versi Python yang diinstal di sistem Anda dan gunakan perintah yang sesuai. Misalnya, jika Python 3 diinstal, jalankan perintahpython3 ./restore_from_downloads.py /home/mysql/data/test1.sql 127.0.0.1 3306 zhtxxxxx "#txxxxx".
Referensi
Metode pemulihan data ini hanya berlaku untuk memulihkan data dari instans RDS yang menggunakan disk cloud. Untuk informasi lebih lanjut tentang cara memulihkan data dari instans RDS yang menggunakan Premium Local SSD, lihat Memulihkan Data dari Instans ApsaraDB RDS untuk MySQL dari File Cadangan Fisik ke Database MySQL yang Dikelola Sendiri atau Memulihkan Data dari Instans ApsaraDB RDS untuk MySQL dari File Cadangan Logis ke Instans MySQL yang Dikelola Sendiri.
Anda juga dapat menggunakan layanan migrasi yang disediakan oleh Alibaba Cloud untuk memigrasi data dari instans RDS ke instans MySQL yang dikelola sendiri. Untuk informasi lebih lanjut, lihat Migrasi Data dari Instans ApsaraDB RDS untuk MySQL ke Database MySQL yang Dikelola Sendiri.
Untuk informasi lebih lanjut tentang metode pemulihan data, lihat Ikhtisar Metode Pemulihan Data.