Meningkatkan Prestasi Sandaran dan Pemulihan MySQL & PostgreSQL: Panduan Praktikal
Senario
Sebuah platform e-dagang menggunakan MySQL untuk transaksi utama dan PostgreSQL untuk analitik. Pertumbuhan data meningkatkan masa sandaran dari 30 minit ke 4 jam, pemulihan melebihi 8 jam, menjejaskan SLA. Pasukan ops perlu mengoptimumkan tanpa mengganggu pengeluaran.
Gejala
- MySQL:
mysqldumpperlahan, pengumpulan binlog, kependaman replika. - PostgreSQL:
pg_dumpmenyebabkan lonjakan CPU/IO,pg_basebackupmemenuhi rangkaian. - Umum: I/O wait hampir 100%, respons aplikasi merosot semasa sandaran.
Diagnosis
- Kaedah sandaran: MySQL menggunakan sandaran fizikal (XtraBackup) vs logik? PostgreSQL sandaran selari diaktifkan?
- Penggunaan sumber: Periksa
iostat,vmstat,topuntuk kesesakan. - Mampatan & pemindahan: Mampatan diaktifkan? Lebar jalur rangkaian mencukupi?
- Konfigurasi DB: MySQL
innodb_flush_log_at_trx_commit,sync_binlog; PostgreSQLwal_level,max_wal_size.
Arahan
Pengoptimuman MySQL
# Percona XtraBackup untuk sandaran panas fizikal dengan mampatan selari
xtrabackup --backup --parallel=4 --compress --compress-threads=4 --target-dir=/backup/mysql
# Pulih dengan nyahmampatan selari
xtrabackup --prepare --parallel=4 --target-dir=/backup/mysql
Pengoptimuman PostgreSQL
# pg_dump dengan mampatan selari
pg_dump -Fd -j 4 -Z 9 -f /backup/pg_dump mydb
# Sandaran fizikal cekap dengan pgBackRest
pgbackrest --stanza=myapp --type=full backup
Kawalan Risiko
- Semasa sandaran: MySQL gunakan
--lock-ddl-per-tableuntuk kurangkan kunci; PostgreSQL gunakan--snapshotuntuk pandangan konsisten. - Uji pemulihan: Lakukan latihan pemulihan secara berkala dalam persekitaran terpencil.
- Had laju: Gunakan
niceatauioniceuntuk menurunkan keutamaan, ataucgroupsuntuk had sumber.
Gulung Balik
- Jika sandaran menyebabkan masalah pengeluaran, hentikan proses serta-merta.
- MySQL: Padam fail sandaran tidak lengkap, periksa status replika dan aktifkan semula sinkronisasi.
- PostgreSQL: Jika
pg_start_backup()tersekat, laksanakanpg_stop_backup()atau mulakan semula pangkalan data.
Pengesahan
- Integriti data:
pt-table-checksum(MySQL) ataupg_checksums(PG). - Masa pemulihan: Ukur tempoh pemulihan penuh terhadap RTO.
- Garis dasar prestasi: Bandingkan TPS/QPS selepas pemulihan dengan garis dasar.
Bila Menghantar Tiket OpsGlobal
- Pengoptimuman dalaman masih gagal memenuhi SLA.
- Kerosakan data atau ketidakselarasan selepas pemulihan.
- Perlu berpindah ke alat sandaran profesional (pgBackRest, MySQL Enterprise Backup).
- Reka bentuk penyelesaian sandaran rentas wilayah atau pemulihan bencana.
Dengan langkah-langkah ini, platform berjaya mengurangkan sandaran ke 45 minit dan pemulihan di bawah 2 jam. Semakan prestasi berkala dan ujian automatik adalah kunci untuk mengekalkan ketersediaan tinggi.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Database dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Post ini mengupas prestasi sandaran dan pemulihan pangkalan data MySQL dan PostgreSQL, menyediakan diagnosis, pengoptimuman, kawalan risiko, arahan, 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.