Tempah Konsultasi Hantar Tiket

Meningkatkan Prestasi Pemulihan Sandaran MySQL dan PostgreSQL: Panduan SRE Praktikal

Pelajari cara mendiagnosis dan meningkatkan prestasi sandaran dan pemulihan untuk MySQL dan PostgreSQL di Kubernetes, dengan arahan yang boleh dilaksanakan dan kawalan risiko.

Meningkatkan Prestasi Pemulihan Sandaran MySQL dan PostgreSQL: Panduan SRE Praktikal
Database 6min 3 paparan 2026-08-16
KubernetesSREPangkalan DataPrestasi Sandaran

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
  • --parallel mengawal bilangan urutan yang menyalin fail InnoDB.
  • --throttle menghadkan operasi I/O sesaat untuk melindungi pengeluaran.
  • --compress-threads membolehkan 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-rate mengehadkan kadar pemindahan.
  • --compress menggunakan mampatan zstd; zstd:3 ialah 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

  1. Lakukan ujian pemulihan dan ukur masa sebenar untuk memulihkan contoh baharu.
  2. Gunakan mysqlbinlog atau pg_verifybackup PostgreSQL untuk mengesahkan integriti sandaran.
  3. Pantau penggunaan sumber semasa pemulihan untuk memastikan tiada kebuluran.
  4. 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.

Tiket Hubungi WhatsApp Konsultasi