Untuk membuat snapshot konsisten aplikasi, sistem menangguhkan permintaan tulis guna memastikan integritas dan konsistensi data yang ditangkap dalam snapshot. Menggunakan snapshot ini membantu mengurangi risiko korupsi dan kehilangan data, serta memastikan bahwa aplikasi seperti MySQL dapat dimulai sesuai harapan dengan data tetap dalam keadaan sama seperti saat snapshot dibuat. Topik ini menjelaskan cara membuat snapshot konsisten aplikasi untuk instance Elastic Compute Service (ECS) CentOS 7.9 dengan MySQL 8.0, serta memeriksa apakah snapshot tersebut dapat digunakan untuk memulihkan data sesuai harapan.
Prasyarat
Disk yang terpasang pada instance ECS adalah Enterprise SSD (ESSD) dengan multi-attach dinonaktifkan.
Instance ECS berada dalam status Running. Cloud Assistant harus dalam status Normal pada instance tersebut. Untuk informasi tentang cara memeriksa status Cloud Assistant, lihat Lihat Status Cloud Assistant dan Tangani Anomali.
MySQL telah diinstal pada instance ECS, dan nama pengguna serta kata sandi MySQL telah diperoleh. Untuk informasi lebih lanjut, lihat Deploy Database MySQL pada Instance ECS Linux.
Peran RAM Resource Access Management (RAM) telah dilampirkan ke instance ECS, serta kebijakan kustom yang mencakup izin snapshot konsisten aplikasi telah dilampirkan ke Peran RAM. Untuk informasi lebih lanjut, lihat Buat Peran RAM Instance dan Lampirkan Peran RAM ke Instance ECS.
CatatanSaat membuat snapshot konsisten aplikasi, Anda harus memanggil Cloud Assistant untuk mengakses instance ECS dan menjalankan perintah. Sebelum memanggil Cloud Assistant, pastikan memberikan izin yang diperlukan menggunakan Peran RAM.
Konfigurasikan peran RAM kustom, seperti AppSnapshotRoleName.
Lampirkan kebijakan kustom ke Peran RAM. Contoh kode berikut menunjukkan kebijakan kustom, yang memberikan izin kepada Peran RAM untuk menanyakan snapshot, membuat snapshot, menambahkan tag, dan menanyakan informasi disk.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeSnapshot*", "ecs:CreateSnapshot*", "ecs:TagResources", "ecs:DescribeDisks" ], "Resource": [ "*" ], "Condition": {} } ] }
Alur Kerja
Gambar berikut menunjukkan langkah-langkah yang harus dilakukan untuk membuat snapshot konsisten aplikasi guna memastikan bahwa status database sama dengan status ketika snapshot dibuat, sehingga memastikan konsistensi aplikasi.
Langkah 1: Buat File Skrip prescript.sh dan postscript.sh
Buat file skrip prescript.sh dan postscript.sh untuk pembuatan snapshot konsisten aplikasi. Skrip prescript.sh menangguhkan operasi penulisan database sebelum pembuatan snapshot, sedangkan skrip postscript.sh melanjutkan operasi penulisan setelahnya.
Langkah 2: Siapkan Lingkungan Verifikasi Database
Buat tabel database dan prosedur tersimpan untuk mensimulasikan operasi penulisan data guna verifikasi snapshot konsisten aplikasi nanti. Untuk membuat snapshot konsisten aplikasi untuk database MySQL, sistem menangguhkan database. Bagian ini menjelaskan cara memanggil prosedur tersimpan TestPIT untuk menyisipkan data ke dalam database MySQL sebelum membuat snapshot. Dengan cara ini, Anda dapat memeriksa apakah database MySQL ditangguhkan dan snapshot yang dibuat dapat digunakan sesuai harapan untuk memulihkan data.
Langkah 3: Buat Snapshot Konsisten Aplikasi di Konsol ECS
Buat snapshot konsisten aplikasi untuk instance ECS Linux tempat database MySQL berada dan jalankan skrip untuk menangguhkan serta melanjutkan operasi penulisan database. Saat membuat snapshot, operasi penulisan pada database sementara dihentikan untuk memastikan konsistensi data.
Langkah 4: Periksa Apakah Snapshot Konsisten Aplikasi Telah Dibuat
Periksa apakah snapshot dibuat sesuai harapan dengan melihat hasil eksekusi perintah Cloud Assistant dan memeriksa titik waktu ketika operasi penulisan database ditangguhkan dan dilanjutkan.
Gunakan snapshot konsisten aplikasi untuk memulihkan data pada disk yang terpasang ke instance ECS Linux. Kemudian, bandingkan waktu terakhir data ditulis ke dalam database MySQL dengan waktu ketika skrip prescript.sh dijalankan untuk menentukan apakah data dicadangkan dengan benar dalam snapshot dan dipulihkan sesuai harapan.
Jika waktu terakhir data ditulis ke dalam database MySQL lebih awal dari waktu ketika skrip prescript.sh dijalankan, tidak ada operasi penulisan yang dilakukan selama penangguhan. Data MySQL dipulihkan ke keadaan ketika snapshot dibuat, mencapai konsistensi status.
Jika waktu terakhir data ditulis lebih lambat atau sama dengan waktu ketika skrip prescript.sh dijalankan, operasi penulisan masih dilakukan selama penangguhan. Data MySQL tidak konsisten dengan snapshot.
Prosedur
Langkah 1: Buat file prescript.sh dan postscript.sh
File skrip prescript.sh dan postscript.sh yang digunakan dalam topik ini hanya untuk referensi. Saat membuat snapshot konsisten aplikasi untuk aplikasi, Anda dapat menyusun file skrip berdasarkan skenario bisnis Anda. Untuk informasi lebih lanjut, lihat Buat Snapshot Konsisten Aplikasi.
Hubungkan ke instance ECS sebagai pengguna root.
Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk Terhubung ke Instance Linux melalui SSH.
Buat file skrip /tmp/prescript.sh dan tulis data ke file skrip.
Gunakan akun root untuk membuat file skrip /tmp/prescript.sh.
vim /tmp/prescript.shTekan tombol
Iuntuk masuk ke mode Insert.Tulis file prescript.sh berdasarkan aplikasi Anda.
Tekan tombol
Esc, masukkan:wq, lalu tekan tombol Enter untuk menyimpan dan menutup file skrip.Berikan izin baca, tulis, dan eksekusi pada file skrip hanya kepada akun root.
PentingUntuk alasan keamanan, pastikan hanya akun root yang diberikan izin baca, tulis, dan eksekusi pada file skrip (chmod 700). Jika tidak, pengaturan izin tidak valid dan skrip tidak dapat dijalankan.
chmod 700 /tmp/prescript.sh
Buat file skrip /tmp/postscript.sh dan tulis data ke file skrip.
Gunakan akun root untuk membuat file skrip /tmp/postscript.sh.
vim /tmp/postscript.shTekan tombol
Iuntuk masuk ke mode Insert.Tulis file skrip berdasarkan aplikasi Anda.
Tekan tombol
Esc, masukkan:wq, lalu tekan tombol Enter untuk menyimpan dan menutup file skrip.Berikan izin baca, tulis, dan eksekusi pada file skrip hanya kepada akun root.
PentingUntuk alasan keamanan, pastikan hanya akun root yang diberikan izin baca, tulis, dan eksekusi pada file skrip (chmod 700). Jika tidak, pengaturan izin tidak valid dan skrip tidak dapat dijalankan.
chmod 700 /tmp/postscript.sh
Pergi ke direktori /tmp dan periksa izin pada file skrip.
cd /tmp ls -lKeluaran perintah berikut menunjukkan bahwa izin pada file skrip dikonfigurasi dengan benar.

Langkah 2: Siapkan lingkungan verifikasi database
Buat skrip /root/test.sql.
Buat dan buka file skrip /root/test.sql.
vim /root/test.sqlTekan tombol
Iuntuk masuk ke mode Insert.Kompilasi file skrip.
Skrip ini mencakup pernyataan SQL untuk membuat tabel database bernama PointInTime dan pernyataan SQL untuk membuat prosedur tersimpan bernama TestPIT. Contoh skrip:
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 tombol
Esc, masukkan:wq, lalu tekan tombol Enter untuk menyimpan dan menutup file skrip.
Masuk ke MySQL.
Masukkan perintah berikut, tekan tombol Enter, lalu masukkan kata sandi MySQL Anda sesuai petunjuk:
mysql -u <mysqlUserName> -pGanti
<mysqlUserName>dengan nama pengguna MySQL yang sebenarnya.Buat database bernama AdventureWorks.
CREATE DATABASE AdventureWorks;Jalankan skrip.
source /root/test.sqlPanggil prosedur tersimpan TestPIT.
CALL TestPIT;PentingAnda harus membuat snapshot konsisten aplikasi dalam jendela waktu 3 menit yang diperlukan untuk menjalankan prosedur tersimpan TestPIT.
Langkah 3: Buat snapshot konsisten aplikasi di konsol ECS
Di bilah navigasi atas, pilih wilayah dan grup sumber daya dari sumber daya yang ingin Anda kelola.

Pada tab Snapshot-consistent Groups, klik Create Snapshot-consistent Group.
Dalam kotak dialog Create Snapshot, konfigurasikan parameter yang dijelaskan pada tabel berikut.
Secara default, parameter Resource Type diatur ke Instance.
Pilih instance dari daftar drop-down Select Instances. Kemudian, di bagian Select Cloud Disks, pilih ESSD tempat Anda ingin membuat snapshot dari instance tersebut.
Perluas Advanced Settings dan konfigurasikan pengaturan snapshot konsisten aplikasi.
Pilih Enable Application-consistent Snapshot.
Atur jalur skrip prescript.sh dan jalur skrip postscript.sh sama dengan jalur skrip yang dibuat di Langkah 1.
Pilih Enable untuk mengaktifkan fitur Penangguhan dan Pemulihan I/O Sistem File serta tentukan periode timeout.
Klik OK.
Setelah grup snapshot konsisten dibuat, pesan yang berisi ID perintah Cloud Assistant dan ID tugas akan ditampilkan. Anda dapat memeriksa apakah snapshot konsisten aplikasi telah dibuat berdasarkan ID tugas.
Buka ECS Console - Snapshot-consistent Groups.
Langkah 4: Periksa apakah snapshot konsisten aplikasi telah dibuat
Di halaman ECS Cloud Assistant, klik ID tugas dan lihat hasil eksekusi perintah.

Jika snapshot konsisten aplikasi berhasil dibuat dalam tugas, nilai balik dari ExitCode adalah
0, serta ID snapshot konsisten aplikasi dan grup konsisten-snapshot akan ditampilkan dalam keluaran perintah, seperti yang ditunjukkan pada gambar sebelumnya.CatatanJika nilai balik dari ExitCode bukan
0, terjadi kesalahan. Lakukan pemecahan masalah berdasarkan kode kesalahan yang dikembalikan di kolom ExitCode. Untuk informasi lebih lanjut, lihat Kode Kesalahan.Dalam data pengembalian Cloud Assistant, lihat titik waktu ketika database ditangguhkan dan dilanjutkan.
Dalam data pengembalian, temukan waktu ketika skrip prescript.sh mulai dijalankan dan waktu ketika skrip postscript.sh berhenti dijalankan.
Skrip prescript.sh mulai dijalankan pada
2024-08-27 15:27:55, menunjukkan bahwa database menangguhkan operasi tulis pada titik waktu ini.
Skrip postscript.sh berhenti dijalankan pada
2024-08-27 15:27:57, menunjukkan bahwa database melanjutkan operasi tulis pada titik waktu ini.
Lihat grup konsisten-snapshot yang dibuat dan snapshot disk.
Pada tab Snapshot-consistent Groups, temukan grup konsisten-snapshot yang Anda buat dan klik ID grup konsisten-snapshot untuk melihat detail snapshot.
Di bagian Snapshot Information, periksa apakah snapshot yang dibuat dalam grup konsisten-snapshot adalah snapshot konsisten aplikasi berdasarkan tag yang ditambahkan ke snapshot.
Jika snapshot yang dibuat adalah snapshot konsisten aplikasi, tag
APPConsistent:Trueakan ditampilkan di kolom Tag yang sesuai dengan snapshot, seperti yang ditunjukkan pada gambar berikut.
Pergi ke ECS console - Snapshot-consistent Groups.
Hubungkan ke database MySQL untuk melihat waktu ketika operasi insert ditangguhkan.
Hubungkan ke instance ECS Linux.
Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk terhubung ke instance Linux melalui SSH.
Masuk ke MySQL.
Masukkan perintah berikut, tekan tombol Enter, lalu masukkan kata sandi MySQL Anda sesuai petunjuk:
mysql -u <mysqlUserName> -pGanti
<mysqlUserName>dengan nama pengguna MySQL yang sebenarnya.Tanyakan isi tabel PointInTime.
USE AdventureWorks; SELECT * FROM PointInTime;Dalam hasil query, lihat titik waktu ketika database ditangguhkan.
Keluaran perintah menunjukkan bahwa tidak ada data yang dimasukkan selama periode dari
2024-08-27 15:27:55hingga2024-08-27 15:27:58.
Langkah 5: Periksa apakah snapshot konsisten aplikasi dapat digunakan untuk memulihkan data sesuai harapan
Kembalikan disk menggunakan grup konsisten-snapshot yang telah dibuat.
Untuk informasi lebih lanjut, lihat Kembalikan disk menggunakan grup konsisten-snapshot.
Masuk ke MySQL dan periksa isi tabel PointInTime.
Hubungkan ke instance ECS Linux.
Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk terhubung ke instance Linux melalui SSH.
Masuk ke MySQL.
Masukkan perintah berikut, tekan tombol Enter, lalu masukkan kata sandi MySQL Anda sesuai petunjuk:
mysql -u <mysqlUserName> -pGanti
<mysqlUserName>dengan nama pengguna MySQL yang sebenarnya.Periksa isi tabel PointInTime.
USE AdventureWorks; SELECT * FROM PointInTime;Dalam hasil query, periksa waktu ketika data terakhir kali ditulis ke database MySQL setelah pemulihan.
Keluaran perintah menunjukkan bahwa catatan data terakhir yang dimasukkan ke database adalah pada titik waktu
2024-08-27 15:27:54, yang lebih awal dari2024-08-27 15:27:55yang diperoleh dalam Langkah 4. Oleh karena itu, snapshot konsisten aplikasi mencadangkan data dengan benar untuk MySQL.