Tempah Konsultasi Hantar Tiket

Mengoptimumkan Prestasi Pemulihan Sandaran untuk MySQL dan PostgreSQL

Ketahui cara mendiagnosis dan meningkatkan prestasi sandaran dan pemulihan untuk pangkalan data MySQL dan PostgreSQL. Artikel ini merangkumi senario biasa pemulihan lambat, langkah diagnostik, arahan, kawalan risiko, prosedur rollback, dan teknik pengesahan untuk meminimumkan masa henti.

Mengoptimumkan Prestasi Pemulihan Sandaran untuk MySQL dan PostgreSQL
Database 6min 4 paparan 2026-07-31
Pangkalan DataSandaranPemulihanPrestasiMySQLPostgreSQLSRE

Senario

Pangkalan data MySQL atau PostgreSQL pengeluaran anda telah ranap. Anda memulakan pemulihan dari sandaran, tetapi ia mengambil masa berjam-jam lebih lama daripada jangkaan, menyebabkan masa henti yang panjang dan kehilangan pendapatan. Senario ini biasa apabila strategi sandaran tidak dioptimumkan untuk prestasi.

Gejala

  • Throughput pemulihan di bawah throughput cakera yang dijangkakan.
  • I/O menunggu tinggi semasa pemulihan.
  • Log pangkalan data menunjukkan checkpoint atau WAL replay perlahan.
  • Penggunaan CPU rendah tetapi I/O tepu.

Diagnosis

Untuk MySQL

  • Gunakan SHOW PROCESSLIST untuk mengenal pasti pertanyaan yang berjalan.
  • Periksa status InnoDB: SHOW ENGINE INNODB STATUS\G untuk panjang sejarah, nombor jujukan log.
  • Pantau I/O dengan iostat -x 1.
  • Analisis pertanyaan perlahan semasa pemulihan menggunakan log pertanyaan perlahan.

Untuk PostgreSQL

  • Query pg_stat_activity untuk proses pemulihan aktif.
  • Gunakan pg_stat_bgwriter dan pg_stat_wal untuk menjejak aktiviti checkpoint dan WAL.
  • Periksa pg_current_wal_lsn dan ketinggalan replikasi jika berkenaan.
  • Gunakan pg_stat_statements jika diaktifkan untuk mengenal pasti pertanyaan mahal.

Arahan

MySQL

  • Sandaran: xtrabackup --backup --target-dir=/backup
  • Pemulihan: xtrabackup --prepare --target-dir=/backup kemudian xtrabackup --copy-back --target-dir=/backup
  • Tala InnoDB: SET GLOBAL innodb_buffer_pool_size = 80% daripada RAM; SET GLOBAL innodb_log_file_size = 4G;
  • Pemulihan selari: Gunakan mysqlpump dengan --parallel-schemas atau mydumper dengan thread.

PostgreSQL

  • Sandaran: pg_dump -Fc -d dbname > db.dump
  • Pemulihan: pg_restore -d dbname -j 4 db.dump (pekerjaan selari)
  • Tala: ALTER SYSTEM SET maintenance_work_mem = '2GB'; ALTER SYSTEM SET max_parallel_maintenance_workers = 4;
  • Checkpoint: CHECKPOINT; dan pg_switch_wal();

Kawalan Risiko

  • Sentiasa uji pemulihan pada persekitaran pentas sebelum pengeluaran.
  • Gunakan sandaran yang dimampatkan dan disulitkan untuk mengurangkan I/O tetapi pastikan overhead CPU terurus.
  • Pantau prestasi cakera dan pertimbangkan penggunaan SSD.
  • Untuk pangkalan data besar, gunakan sandaran inkremental untuk mengurangkan masa pemulihan.
  • Laksanakan pemulihan titik-dalam-masa (PITR) dengan pengarkiban WAL untuk MySQL (log binari) dan PostgreSQL (WAL).
  • Tetapkan innodb_buffer_pool_size atau shared_buffers yang sesuai untuk mengelakkan disk thrashing.

Rollback

Jika pemulihan gagal atau mengambil masa terlalu lama: 1. Hentikan proses pemulihan. 2. Sahkan integriti fail sandaran. 3. Pulihkan dari titik sandaran lain jika tersedia. 4. Jika rasuah dikesan, pulihkan dari sandaran penuh dan gunakan log. 5. Maklumkan pasukan dan pertimbangkan untuk meningkatkan ke OpsGlobal.

Pengesahan

  • Jalankan CHECKSUM TABLE dalam MySQL atau gunakan pg_checksums dalam PostgreSQL.
  • Bandingkan kiraan baris antara jadual dan nilai yang dijangkakan.
  • Sahkan fungsi aplikasi dengan menjalankan beberapa pertanyaan.
  • Periksa replikasi jika menggunakan replika.

Bila untuk Menghantar Tiket OpsGlobal

  • Sandaran/pemulihan anda secara konsisten melebihi RTO lebih daripada 50%.
  • Anda mengalami degradasi prestasi yang tidak dapat dijelaskan semasa pemulihan.
  • Anda memerlukan bantuan untuk menala parameter pangkalan data untuk pemulihan.
  • Anda memerlukan semakan strategi sandaran yang komprehensif.

Senario Penggunaan

Sesuai untuk pasukan yang menyelesaikan isu Database dan memerlukan aliran kerja yang jelas.

Latar Belakang Masalah

Ketahui cara mendiagnosis dan meningkatkan prestasi sandaran dan pemulihan untuk pangkalan data MySQL dan PostgreSQL. Artikel ini merangkumi senario biasa pemulihan lambat, langkah diagnostik, arahan, kawalan risiko, prosedur rollback, dan teknik pengesahan untuk meminimumkan masa henti.

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