Tempah Konsultasi Hantar Tiket

Meningkatkan Prestasi Sandaran dan Pemulihan MySQL dan PostgreSQL

Pelajari teknik praktikal untuk mengoptimumkan sandaran dan pemulihan pangkalan data MySQL dan PostgreSQL, mengurangkan masa henti dan memenuhi SLA.

Meningkatkan Prestasi Sandaran dan Pemulihan MySQL dan PostgreSQL
Database 6min 47 paparan 2026-06-22
MySQLPostgreSQLSandaranPemulihanPrestasiPentadbiran Pangkalan Data

Senario: Sebagai pentadbir pangkalan data untuk platform e-dagang yang berkembang, anda perlu melakukan sandaran harian pangkalan data MySQL 500GB dan pangkalan data PostgreSQL 200GB. Tetingkap sandaran terhad kepada 4 jam, tetapi sandaran semasa mengambil lebih daripada 6 jam, dan masa pemulihan melebihi 12 jam, berisiko melanggar SLA.

Gejala: Tempoh sandaran >6 jam; pemulihan >12 jam; I/O tinggi menunggu (wa>30); lonjakan ketinggalan replikasi semasa sandaran; penggunaan cakera 100% semasa sandaran; CPU idle rendah akibat mampatan.

Diagnosis: Periksa throughput cakera dengan iostat (contoh: $ iostat -x 1): lihat avgqu-sz dan await yang tinggi. Untuk MySQL, jalankan SHOW ENGINE INNODB STATUS dan periksa umur nombor jujukan log; untuk PostgreSQL, gunakan pg_stat_progress_vacuum dan pg_stat_activity. Kenal pasti sama ada sandaran terikat I/O (bacaan berurutan), terikat CPU (mampatan), atau terikat rangkaian (sandaran jauh). Contoh: mysqldump pada satu utas lambat; pg_dump lalai adalah satu utas.

Arahan: Untuk MySQL, gunakan Percona XtraBackup dengan utas selari: xtrabackup --backup --parallel=4 --compress --compress-threads=4 --target-dir=/backup. Untuk pemulihan lebih cepat, gunakan --decompress dan --parallel. Untuk sandaran logikal, gunakan mysqldump dengan --single-transaction (tanpa kunci) dan belah jadual: for i in $(mysql -e 'show tables' -N db); do mysqldump db $i & done; wait. Untuk PostgreSQL, gunakan pg_dump dengan format direktori dan kerja: pg_dump -Fd -j 4 -f /backup/db. Untuk sandaran fizikal, gunakan pg_basebackup dengan berbilang pekerja WAL: pg_basebackup -D /backup -X stream --progress. Atau gunakan pgBackRest dengan pengarkiban dan pemulihan selari: pgbackrest --stanza=db --type=full backup; pgbackrest --stanza=db --type=full restore. Ubah suai mampatan: gantikan gzip dengan pigz (gzip selari) atau gunakan --compress-level=1 untuk lebih cepat tetapi mampatan kurang.

Kawalan Risiko: Sentiasa uji sandaran dan pemulihan dalam persekitaran pementasan terlebih dahulu. Elakkan menjalankan sandaran pada waktu puncak. Gunakan storan berasingan untuk sandaran (contoh: NFS, S3) untuk mengurangkan beban pada cakera utama. Pastikan log transaksi dikekalkan untuk PITR. Pantau kemajuan sandaran dengan alat seperti mylvmbackup atau skrip tersuai. Untuk MySQL, gunakan --lock-ddl-per-table untuk membenarkan DDL semasa sandaran. Untuk PostgreSQL, pastikan kebolehpulihan dengan mengarkibkan WAL secara berterusan.

Gulung Balik: Jika sandaran gagal, pastikan sandaran berjaya sebelumnya tersedia dan disahkan. Sediakan amaran automatik untuk kegagalan. Untuk pemulihan, jika pemulihan rosak, sediakan sandaran lama. Gunakan sandaran tambahan untuk mengurangkan kekerapan sandaran penuh. Sekiranya pemulihan gagal, hentikan dan periksa log, kemudian pulihkan dari sandaran sah lain.

Pengesahan: Selepas sandaran, sahkan integriti: untuk MySQL, gunakan xtrabackup --verify-backup; untuk PostgreSQL, gunakan pg_verifybackup (untuk manifes sandaran). Lakukan ujian pemulihan berkala ke contoh berasingan dan ukur masa. Periksa bahawa data yang dipulihkan adalah konsisten (contoh: kira baris, semak jumlah jadual). Untuk sandaran logikal, pulihkan ke pangkalan data ujian dan jalankan pertanyaan sampel.

Bila Hantar Tiket OpsGlobal: Jika masa sandaran atau pemulihan secara konsisten melebihi SLA sebanyak 50% selepas penalaan, jika anda menghadapi ralat rasuah, jika anda perlu menyediakan penyelesaian pemulihan bencana merentasi wilayah, atau jika anda memerlukan skrip sandaran tersuai dengan papan pemuka pemantauan. SRE OpsGlobal boleh mengaudit konfigurasi anda, melaksanakan strategi sandaran selari, dan mengautomasikan pengesahan sandaran.

Senario Penggunaan

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

Latar Belakang Masalah

Pelajari teknik praktikal untuk mengoptimumkan sandaran dan pemulihan pangkalan data MySQL dan PostgreSQL, mengurangkan masa henti dan memenuhi SLA.

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