Tempah Konsultasi Hantar Tiket

Mempercepat Prestasi Backup dan Recovery MySQL dan PostgreSQL: Satu Analisis Mendalam

Ketahui cara mendiagnosis dan membetulkan masalah prestasi sandaran dan pemulihan dalam MySQL dan PostgreSQL, dengan arahan, kawalan risiko, dan strategi rollback.

Mempercepat Prestasi Backup dan Recovery MySQL dan PostgreSQL: Satu Analisis Mendalam
Database 6min 8 paparan 2026-08-10
KubernetesSRE

Senario

Organisasi anda mengendalikan pangkalan data MySQL dan PostgreSQL dalam Kubernetes. Pekerjaan sandaran malam melebihi tempoh penyelenggaraan, dan latihan pemulihan bencana sering kali gagal memenuhi RTO. Pemulihan yang sepatutnya mengambil masa beberapa minit menjadi berjam-jam. Artikel ini berpandukan libat urus sebenar di mana kami mengoptimumkan prestasi sandaran dan pemulihan untuk kedua-dua enjin.

Gejala

  • Pekerjaan mysqldump atau pg_dump berjalan lebih daripada 4 jam.
  • Sandaran fizikal dengan XtraBackup atau pg_basebackup menghasilkan I/O tinggi, menyebabkan latensi tinggi dalam pengeluaran.
  • Masa pemulihan (restore) jauh lebih lama daripada masa sandaran.
  • Log transaksi berkembang secara tidak dijangka semasa sandaran.
  • Pemantauan menunjukkan CPU hampir 100% pada hos sandaran, tetapi nod pangkalan data menganggur.

Diagnosis

Semak sama ada anda menggunakan sandaran logikal atau fizikal: - Sandaran logikal (mysqldump, pg_dump) adalah intensif CPU dan tidak cekap untuk dataset besar. - Sandaran fizikal (XtraBackup, pg_basebackup) menyalin fail mentah dan intensif I/O, tetapi memerlukan pelarasan yang teliti.

Untuk MySQL: 1. Semak innodb_buffer_pool_size: jika terlalu kecil, XtraBackup membaca lebih banyak dari cakera. 2. Semak keupayaan selari alat sandaran: XtraBackup --parallel=N mempercepatkan pemindahan fail data. 3. Pertimbangkan menggunakan --compress untuk mengurangkan pemindahan rangkaian, tetapi ia menambah overhead CPU. 4. Analisis kapasiti I/O: bacaan dan penulisan berjujukan harus sejajar dengan jenis storan.

Untuk PostgreSQL: 1. pg_basebackup menghantar keseluruhan direktori data melalui protokol replikasi; gunakan --jobs=N untuk pemindahan selari. 2. wal_level=replica dan max_wal_senders mesti cukup tinggi untuk menyokong sandaran dan replikasi. 3. Periksa archive_timeout dan archive_command: jika terlalu rendah, fail WAL akan terkumpul. 4. Gunakan alat seperti pgBackRest yang menyokong penyulitan, pemampatan, dan muat naik selari.

Arahan

MySQL dengan Percona XtraBackup

# Sandaran fizikal dengan selari dan pemampatan
xtrabackup --backup --parallel=8 --compress --compress-threads=4 --target-dir=/backup/mysql

# Sediakan sandaran (juga boleh selari)
xtrabackup --prepare --parallel=8 --target-dir=/backup/mysql

# Sandaran inkremental (andaikan sandaran penuh wujud)
xtrabackup --backup --parallel=8 --incremental-basedir=/backup/mysql/base --target-dir=/backup/mysql/inc

# Pulihkan dari penuh + inkremental
xtrabackup --prepare --apply-log-only --target-dir=/backup/mysql/base
xtrabackup --prepare --apply-log-only --incremental-dir=/backup/mysql/inc --target-dir=/backup/mysql/base
xtrabackup --prepare --target-dir=/backup/mysql/base

PostgreSQL dengan pg_basebackup

# Sandaran fizikal selari
pg_basebackup -h primary-host -D /backup/pgsql -U replicator -Ft -z -j 8 -X stream

# Pulihkan dari sandaran asas
tar -xzf /backup/pgsql/base.tar.gz -C /var/lib/postgresql/16/main
tar -xzf /backup/pgsql/pg_wal.tar.gz -C /var/lib/postgresql/16/main/pg_wal
touch /var/lib/postgresql/16/main/recovery.signal

Kawalan Risiko

  • Sentiasa hadkan kelajuan sandaran: gunakan --throttle untuk XtraBackup atau ionice pada proses sandaran.
  • Jalankan sandaran dari replika untuk mengelakkan beban pengeluaran.
  • Untuk sandaran fizikal, pastikan ruang cakera mencukupi; pemampatan mengurangkan ruang tetapi meningkatkan CPU.
  • Sahkan integriti sandaran secara berkala dengan --verify-backup untuk XtraBackup dan pg_verifybackup untuk sandaran asas.
  • Simpan pelbagai salinan fail WAL/arkib; gunakan storan berasingan untuk mengelakkan titik kegagalan tunggal.

Rollback

Jika pelarasan prestasi menyebabkan ketidakstabilan: - Kembalikan innodb_buffer_pool_size dan tahap selari sandaran kepada nilai sebelumnya. - Untuk PostgreSQL, kembalikan max_wal_senders atau archive_command kepada tetapan asal. - Jika pemulihan gagal, dokumentasikan ralat dan gunakan sandaran terakhir yang diketahui baik. - Sentiasa kekalkan set sandaran sebelumnya sehingga sandaran baru disahkan sepenuhnya.

Pengesahan

  • Ukur masa sandaran dan pemulihan sebelum/selepas perubahan menggunakan time.
  • Sahkan sandaran dengan memulihkan ke contoh pementasan dan menjalankan CHECKSUM TABLE untuk MySQL atau pg_checksums --enable untuk PostgreSQL.
  • Bandingkan kiraan rekod dan nombor jujukan log inkremental.
  • Pantau latensi I/O dan penggunaan CPU semasa tempoh sandaran.

Bila Menghantar Tiket OpsGlobal

Jika pasukan anda kurang pengalaman dalam pelarasan xtrabackup atau pgBackRest, atau jika masalah berterusan walaupun mengikuti panduan ini, hubungi OpsGlobal. SRE kami boleh menjalankan penilaian sandaran, melaksanakan automasi pemulihan bencana, dan menjalankan ujian kekacauan untuk memastikan pematuhan RTO/RPO.

Senario Penggunaan

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

Latar Belakang Masalah

Ketahui cara mendiagnosis dan membetulkan masalah prestasi sandaran dan pemulihan dalam MySQL dan PostgreSQL, dengan arahan, kawalan risiko, dan strategi rollback.

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