Senario
Sebuah platform e-dagang menggunakan MySQL 8.0 dan PostgreSQL 13 dengan sandaran logik (mysqldump/pg_dump). Apabila pangkalan data berkembang ke 500GB, masa pemulihan meningkat dari 20 minit ke 2 jam, melebihi RTO 1 jam.
Gejala
- Penggunaan CPU 100% semasa pemulihan, masa menunggu I/O cakera >50%
- Jalur lebar rangkaian tepu semasa pemindahan fail sandaran
- Ralat konsistensi data (contoh: pelanggaran kekunci asing) selepas pemulihan
Diagnosis
- Kaedah sandaran: Sandaran logik mengimbas baris demi baris; sandaran fizikal (Xtrabackup/pg_basebackup) adalah salinan blok dan lebih pantas. Periksa kaedah semasa dengan
mysqldump --versionataupg_dump --version. - Bottleneck I/O: Gunakan
iostat -x 1untuk melihat avgqu-sz (>10) dan await (>30ms), menunjukkan storan perlahan. - Mampatan vs CPU: Sandaran menggunakan gzip/pigz; penyahmampatan menjadi CPU-bound semasa pemulihan. Masa setiap fasa dengan arahan
time. - Parameter pangkalan data: Periksa jika MySQL
innodb_buffer_pool_sizeatau PostgreSQLshared_buffersterlalu besar, menyebabkan persaingan memori.
Arahan
- MySQL:
- Batalkan pemulihan:
KILL QUERY+ROLLBACK(peringkat pernyataan) - Lumpuhkan log binari:
SET SQL_LOG_BIN=0;(mengurangkan penulisan log) - Pemulihan selari dengan
mysqlpump:mysqlpump --parallel-schemas=4:dbname --default-parallelism=4 - PostgreSQL:
- Laraskan
checkpoint_completion_target=0.9untuk mengurangkan lonjakan IO - Pemulihan selari:
pg_restore -j 4 -d dbname backup.dump - Lumpuhkan komit segerak:
SET synchronous_commit=off; - Sistem:
nice -n19 tar czf - /backup | pv -b -t -e > /dev/nulluntuk mengurangkan keutamaan I/O
Kawalan Risiko
- Lakukan pemulihan semasa tetingkap penyelenggaraan dengan snapshot terkini tersedia
- Gunakan
ionice -c2 -n7untuk menetapkan keutamaan I/O proses sandaran kepada melahu (idle) - Sahkan integriti sandaran: MySQL
CHECKSUM TABLE; PostgreSQLpg_checksums - Pantau beban sistem dengan
sar -u -b 1
Undur (Rollback)
Jika pemulihan gagal atau melebihi masa:
1. Hentikan proses pemulihan (pkill pg_restore)
2. Tukar lalu lintas ke replika baca sahaja (contoh: standby yang disediakan)
3. Bina semula utama dari snapshot: tar tulis ganti fail fizikal (memerlukan penutupan pangkalan data)
4. Sahkan data: SELECT COUNT(*) FROM key_table;
Pengesahan
- Kiraan baris:
SELECT COUNT(*) FROM key_table;pada sumber dan yang dipulihkan - Checksum: MySQL
pt-table-checksum; PostgreSQLpg_comparator - Ujian aplikasi: Jalankan pertanyaan biasa dan periksa latensi
- Replikasi:
SHOW SLAVE STATUSataupg_replication_slots
Bila Menghantar Tiket OpsGlobal
- Masa pemulihan secara konsisten melebihi RTO perniagaan walaupun telah dioptimumkan
- Kekurangan kepakaran dalaman dalam penalaan prestasi pangkalan data atau storan
- Perlu pemulihan merentas rantau (contoh: dari pusat DR jauh)
- Keperluan pematuhan (contoh: GDPR) memerlukan audit pihak ketiga
- Apabila strategi sandaran (contoh: kekerapan sandaran penuh) memerlukan reka bentuk semula oleh pakar
Semasa menghantar, sertakan: versi pangkalan data, saiz ruang jadual, arahan sandaran, tempoh pemulihan, data pemantauan sumber (CPU/IO/rangkaian), dan langkah yang telah dicuba.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Database dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan praktikal untuk mendiagnosis dan mengoptimumkan prestasi sandaran dan pemulihan untuk MySQL dan PostgreSQL, termasuk arahan, kawalan risiko, prosedur undur, dan bila perlu menghubungi OpsGlobal.
Langkah Penyelesaian
Sahkan impak dan perubahan terkini, kumpul log, konfigurasi dan metrik, kemudian baiki mengikut risiko.
Contoh Arahan
Gantikan contoh dengan nama sumber sebenar dan simpan kata laluan, token atau kunci dalam pembolehubah persekitaran.
Risiko
Sebelum operasi produksi, semak sandaran, akses, tetingkap perubahan dan pelan rollback.
Pelan Rollback
Simpan konfigurasi dan versi asal; rollback konfigurasi, imej atau perubahan pangkalan data jika metrik tidak normal.
Senarai Serahan
Rekod punca isu, arahan penting, langkah pembaikan, hasil pengesahan dan cadangan susulan.
Perlu bantuan isu teknikal serupa?
Jika pelayan, Kubernetes, Docker, CI/CD, pangkalan data atau pemantauan anda bermasalah, hantar log dan konfigurasi untuk diagnosis jauh.