Gunakan instans CentOS 7.9 dengan MySQL 8.0 untuk membuat dan memverifikasi snapshot konsisten aplikasi yang mencegah korupsi data selama pencadangan.
Prasyarat
-
Instans ECS menggunakan ESSD, dan fitur multi-attach dinonaktifkan untuk disk tersebut.
Instans ECS berada dalam status Running. Cloud Assistant berada dalam status Normal pada instans tersebut. Untuk melihat status Cloud Assistant, lihat Periksa status Cloud Assistant dan atasi pengecualian.
-
MySQL telah diinstal, dan Anda memiliki username serta password database. Lihat Deploy database MySQL secara manual (Linux).
Peran RAM dengan kebijakan kustom untuk snapshot konsisten aplikasi telah disambungkan ke instans ECS. Lihat Buat peran RAM dan sambungkan ke instans ECS.
CatatanCloud Assistant memerlukan izin tertentu untuk mengakses instans ECS dan menjalankan perintah. Berikan izin ini melalui peran RAM.
Konfigurasikan peran RAM kustom, seperti AppSnapshotRoleName.
Sambungkan kebijakan kustom ke peran RAM tersebut. Kebijakan contoh berikut memberikan izin untuk mengkueri snapshot, membuat snapshot, menambahkan tag, dan mengkueri informasi disk.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeSnapshot*", "ecs:CreateSnapshot*", "ecs:TagResources", "ecs:DescribeDisks" ], "Resource": [ "*" ], "Condition": {} } ] }
Alur kerja
Alur kerja berikut membuat snapshot konsisten aplikasi dan memverifikasi bahwa database dipulihkan ke kondisi persis seperti saat snapshot diambil:
-
Langkah 1: Buat skrip prescript.sh dan postscript.sh
Buat skrip prescript (prescript.sh) untuk menjeda penulisan database dan skrip postscript (postscript.sh) untuk melanjutkannya. Skrip ini diperlukan untuk snapshot konsisten aplikasi.
-
Langkah 2: Siapkan lingkungan verifikasi database
Buat tabel database dan prosedur tersimpan (TestPIT) yang mensimulasikan penulisan berkelanjutan, sehingga Anda dapat memverifikasi efektivitas snapshot setelah rollback.
-
Langkah 3: Buat snapshot konsisten aplikasi di Konsol
Buat snapshot konsisten aplikasi untuk instans Linux yang menjalankan MySQL. Skrip prescript dan postscript secara sementara menjeda dan melanjutkan penulisan database guna memastikan konsistensi data.
-
Langkah 4: Verifikasi bahwa snapshot konsisten aplikasi telah dibuat
Periksa hasil eksekusi perintah Asisten Cloud, termasuk waktu jeda dan waktu melanjutkan database.
-
Langkah 5: Verifikasi pemulihan data dari snapshot konsisten aplikasi
Lakukan rollback disk menggunakan snapshot tersebut. Bandingkan waktu penulisan data terakhir di MySQL dengan waktu eksekusi prescript.sh untuk memverifikasi pemulihan data yang benar.
-
Jika waktu penulisan terakhir lebih awal daripada waktu eksekusi prescript, tidak ada penulisan yang terjadi selama jeda. Data yang dipulihkan sesuai dengan kondisi snapshot.
-
Jika waktu penulisan terakhir sama dengan atau lebih baru daripada waktu eksekusi prescript, berarti terjadi penulisan selama jeda, yang mengindikasikan snapshot tidak bekerja sebagaimana mestinya.
-
Prosedur
Langkah 1: Buat skrip prescript.sh dan postscript.sh
Skrip prescript.sh dan postscript.sh dalam topik ini hanya untuk demonstrasi. Tulis skrip sesuai kebutuhan bisnis aktual Anda. Lihat Buat snapshot konsisten aplikasi.
-
Sambungkan ke instans ECS sebagai pengguna root.
-
Buat /tmp/prescript.sh dan tambahkan konten skrip.
-
Buat /tmp/prescript.sh sebagai root.
vim /tmp/prescript.sh -
Tekan
iuntuk masuk ke mode edit. -
Sesuaikan konten prescript.sh untuk aplikasi Anda.
-
Tekan
Esc, masukkan:wq, lalu tekan Enter untuk menyimpan dan keluar. -
Atur izin menjadi 700 (hanya root).
PentingHanya pengguna root yang boleh memiliki izin baca, tulis, dan eksekusi (700). Jika tidak, eksekusi skrip akan gagal.
chmod 700 /tmp/prescript.sh
-
-
Buat /tmp/postscript.sh dan tambahkan konten skrip.
-
Buat /tmp/postscript.sh sebagai root.
vim /tmp/postscript.sh -
Tekan
iuntuk masuk ke mode edit. -
Sesuaikan konten postscript.sh untuk aplikasi Anda.
-
Tekan
Esc, masukkan:wq, lalu tekan Enter untuk menyimpan dan keluar. -
Atur izin menjadi 700 (hanya root).
PentingHanya pengguna root yang boleh memiliki izin baca, tulis, dan eksekusi (700). Jika tidak, eksekusi skrip akan gagal.
chmod 700 /tmp/postscript.sh
-
-
Masuk ke /tmp dan verifikasi izin skrip.
cd /tmp ls -lOutput berikut menunjukkan izin yang benar.

Langkah 2: Siapkan lingkungan verifikasi database
-
Buat skrip uji /root/test.sql.
-
Buat dan buka /root/test.sql.
vim /root/test.sql -
Tekan
iuntuk masuk ke mode edit. -
Tambahkan skrip SQL verifikasi.
Skrip ini membuat tabel (PointInTime) dan prosedur tersimpan (TestPIT):
USE AdventureWorks; CREATE TABLE PointInTime(id int, t datetime); DELIMITER $$ CREATE PROCEDURE `TestPIT`() BEGIN DECLARE i int; SET i=1; WHILE i < 180 DO INSERT INTO PointInTime VALUES(i, now()); SELECT SLEEP(1); SET i=i+1; END WHILE; END $$ DELIMITER ; -
Tekan
Esc, masukkan:wq, lalu tekan Enter untuk menyimpan dan keluar.
-
-
Masuk ke MySQL.
Jalankan perintah berikut dan masukkan password MySQL saat diminta.
mysql -u <mysqlUserName> -pGanti
<mysqlUserName>dengan username MySQL Anda. -
Buat database bernama AdventureWorks.
CREATE DATABASE AdventureWorks; -
Jalankan skrip uji.
source /root/test.sql -
Panggil prosedur tersimpan (TestPIT).
CALL TestPIT;PentingAnda harus membuat snapshot konsisten aplikasi sebelum TestPIT selesai. Prosedur ini berjalan sekitar 3 menit.
Langkah 3: Buat snapshot konsisten aplikasi di Konsol
Di pojok kiri atas halaman, pilih wilayah dan kelompok sumber daya.
-
Pada tab Snapshot-consistent Groups, klik Create Snapshot-consistent Group.
-
Pada kotak dialog Create Snapshot, konfigurasikan grup konsistensi snapshot.
-
Resource Types secara default adalah Instance.
-
Pilih instans dan disk ESSD-nya.
-
Bentangkan Advanced Settings dan aktifkan snapshot konsisten aplikasi.
-
Pilih Enable Application-consistent Snapshot.
-
Atur path prescript.sh dan postscript.sh ke skrip yang dibuat di Langkah 1.
-
Atur durasi untuk File System I/O Pause and Resume.
-
-
-
Klik OK.
Perintah mengembalikan ID eksekusi Cloud Assistant. Gunakan ID ini untuk melihat hasil eksekusi.
Langkah 4: Verifikasi bahwa snapshot konsisten aplikasi telah dibuat
-
Klik ID eksekusi Cloud Assistant untuk melihat hasilnya.

Exit Code bernilai
0menunjukkan snapshot berhasil dibuat. Output menampilkan ID snapshot dan grup konsistensi snapshot.CatatanJika Exit Code bukan
0, atasi masalah berdasarkan kode kesalahan Exit Code. Lihat Kode kesalahan. -
Lihat waktu jeda dan lanjut database dalam output Cloud Assistant.
Cari waktu mulai prescript.sh dan waktu selesai postscript.sh.
-
Prescript.sh dijalankan pada
2024-08-27 15:27:55, menandakan database menjeda penulisan pada waktu ini.
-
Postscript.sh dijalankan pada
2024-08-27 15:27:57, menandakan database melanjutkan penulisan pada waktu ini.
-
-
Lihat grup konsistensi snapshot dan snapshot disk.
-
Pada tab Snapshot-consistent Groups, klik ID grup konsistensi snapshot untuk melihat detailnya.
-
Pada bagian Snapshot Information, verifikasi bahwa tag snapshot mengonfirmasi konsistensi aplikasi.
Tag snapshot disk
APPConsistent:Truemengonfirmasi bahwa snapshot konsisten aplikasi telah dibuat.
-
Sambungkan ke MySQL dan periksa waktu jeda commit data.
-
Sambungkan ke instans ECS.
-
Masuk ke MySQL.
Jalankan perintah berikut dan masukkan password MySQL saat diminta.
mysql -u <mysqlUserName> -pGanti
<mysqlUserName>dengan username MySQL Anda. -
Kueri tabel PointInTime.
USE AdventureWorks; SELECT * FROM PointInTime; -
Lihat waktu jeda database dalam hasil kueri.
Tidak ada data yang dimasukkan antara
2024-08-27 15:27:55dan2024-08-27 15:27:58.
-
Langkah 5: Verifikasi pemulihan data dari snapshot konsisten aplikasi
-
Lakukan rollback disk menggunakan grup konsistensi snapshot.
-
Masuk ke MySQL dan kueri tabel PointInTime.
-
Sambungkan ke instans ECS.
-
Masuk ke MySQL.
Jalankan perintah berikut dan masukkan password MySQL saat diminta.
mysql -u <mysqlUserName> -pGanti
<mysqlUserName>dengan username MySQL Anda. -
Kueri tabel PointInTime.
USE AdventureWorks; SELECT * FROM PointInTime; -
Lihat timestamp catatan terakhir setelah pemulihan data.
Catatan terakhir dimasukkan pada
2024-08-27 15:27:54, lebih awal daripada waktu jeda2024-08-27 15:27:55yang dicatat di Langkah 4. Hal ini mengonfirmasi bahwa data telah dipulihkan dengan benar dari snapshot konsisten aplikasi.
-