Senario
Seorang pelanggan OpsGlobal menjalankan MySQL dan PostgreSQL di Kubernetes, dengan sandaran dihantar ke storan objek. Kebelakangan ini, kerja sandaran mengambil masa yang semakin lama, dan proses pemulihan memerlukan berjam-jam, menjejaskan objektif masa pemulihan (RTO). Pelanggan perlu mempercepatkan sandaran dan pemulihan tanpa menjejaskan prestasi pengeluaran.
Gejala
- Tempoh kerja sandaran meningkat dari 30 minit hingga lebih 2 jam.
- Penggunaan CPU dan I/O meningkat semasa sandaran, menjejaskan trafik langsung.
- Ujian pemulihan menunjukkan bahawa pemulihan dari sandaran mengambil masa lebih 4 jam.
- Pengguna melaporkan respons pertanyaan lebih perlahan, terutamanya semasa sandaran dijalankan.
Diagnosis
Kami bermula dengan mengumpul garis dasar prestasi. Alat seperti top, iostat, dan vmstat digunakan untuk memantau sumber sistem, manakala log pertanyaan perlahan dan status pemboleh ubah pangkalan data disemak.
Untuk MySQL, kami memeriksa SHOW ENGINE INNODB STATUS dan peristiwa menunggu dalam performance_schema. Untuk PostgreSQL, kami bergantung pada pg_stat_statements dan pg_stat_activity.
Metrik utama termasuk: - Daya pemprosesan alat sandaran (MB/s) - Nisbah mampatan - Penggunaan lebar jalur rangkaian - Kependaman tulis ke storan sasaran
Analisis mendedahkan bahawa alat sandaran berjalan dalam mod bersiri, tidak menggunakan CPU berbilang teras. Selain itu, sandaran tidak mempunyai had kadar, menyebabkan pertikaian I/O dengan beban kerja pengeluaran.
Arahan dan Pengoptimuman
MySQL (menggunakan XtraBackup)
Membolehkan sandaran selari dengan xtrabackup meningkatkan kelajuan secara drastik:
xtrabackup --backup --parallel=4 --target-dir=/backup/mysql \
--throttle=100 --compress --compress-threads=4
--parallelmengawal bilangan urutan yang menyalin fail InnoDB.--throttlemenghadkan operasi I/O sesaat untuk melindungi pengeluaran.--compress-threadsmembolehkan mampatan selari.
PostgreSQL (menggunakan pg_basebackup)
pg_basebackup menyokong had kadar dan mampatan selari:
pg_basebackup -h localhost -U replicator -D /backup/pg \
--max-rate=100M --compress=zstd:3 --pgdata /backup/pg \
--wal-method=stream
--max-ratemengehadkan kadar pemindahan.--compressmenggunakan mampatan zstd;zstd:3ialah tahap mampatan.
Selain itu, menyesuaikan parameter pangkalan data untuk kelajuan pemulihan:
- MySQL: tingkatkan innodb_buffer_pool_size dan innodb_log_file_size; sementara naikkan innodb_flush_log_at_trx_commit semasa pemulihan.
- PostgreSQL: laraskan max_wal_senders dan wal_keep_size; pertimbangkan recovery_parallelism (PostgreSQL 16+).
Kawalan Risiko
- Sahkan penalaan dalam persekitaran pra-pengeluaran sebelum digunakan pada pengeluaran.
- Sentiasa gunakan parameter had kadar untuk mengelakkan beban berlebihan pada storan pengeluaran.
- Pastikan penyulitan sandaran dan pemindahan selamat, tetapi ingat penyulitan menggunakan CPU.
- Gunakan sandaran tambahan atau fizikal untuk mengurangkan jumlah data.
- Sentiasa lakukan latihan pemulihan selepas sandaran untuk mengesahkan ketersediaan.
Penggulungan
Jika penalaan menyebabkan masalah (contohnya, kegagalan sandaran atau penurunan prestasi), ikuti langkah ini:
1. Pulihkan skrip sandaran atau parameter asal.
2. Jika menggunakan pilihan mampatan pg_basebackup, sahkan sokongan versi sasaran.
3. Mulakan semula perkhidmatan pangkalan data jika perlu untuk membersihkan perubahan konfigurasi.
4. Jalankan semula ujian sandaran untuk mengesahkan prestasi kembali ke garis dasar.
Pengesahan
- Lakukan ujian pemulihan dan ukur masa sebenar untuk memulihkan contoh baharu.
- Gunakan
mysqlbinlogataupg_verifybackupPostgreSQL untuk mengesahkan integriti sandaran. - Pantau penggunaan sumber semasa pemulihan untuk memastikan tiada kebuluran.
- Bandingkan RTO sebelum dan selepas pengoptimuman untuk mengesahkan pencapaian sasaran.
Bila Menghantar Tiket OpsGlobal
Jika pasukan anda tidak mempunyai kepakaran penalaan pangkalan data yang mendalam, atau jika isu sandaran/pemulihan melibatkan seni bina ketersediaan tinggi yang kompleks, hantar tiket kepada OpsGlobal. Kami menyediakan sokongan SRE 24/7 untuk membantu mereka bentuk strategi sandaran, mengoptimumkan prestasi, dan melaksanakan latihan pemulihan untuk memastikan data anda selamat.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Database dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Pelajari cara mendiagnosis dan meningkatkan prestasi sandaran dan pemulihan untuk MySQL dan PostgreSQL di Kubernetes, dengan arahan yang boleh dilaksanakan dan kawalan risiko.
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.