Senario
Pangkalan data pengeluaran sering menghadapi kemerosotan prestasi semasa operasi sandaran dan pemulihan, terutamanya apabila berjalan di Kubernetes di mana penyimpanan, rangkaian, dan had sumber menambah kerumitan. Tetingkap sandaran mungkin memanjang, dan masa pemulihan boleh melebihi SLA.
Gejala
- Tempoh sandaran secara konsisten melebihi tetingkap yang dibenarkan (mis., >4 jam untuk 500GB).
- Operasi pemulihan sangat perlahan; sandaran 500GB mungkin mengambil masa lebih 6 jam.
- I/O wait tinggi, penggunaan CPU rendah, dan latensi cakera tinggi diperhatikan dalam alat pemantauan.
- Alat sandaran (pg_dump, XtraBackup) tamat masa atau gagal dengan ralat yang sukar difahami.
Diagnosis
- Periksa kekangan sumber:
bash kubectl top pods -n databaseSahkan had CPU dan memori mencukupi. - Analisis prestasi I/O:
bash iostat -x 1Cari nilai %util dan await yang tinggi. - Dalaman pangkalan data:
- MySQL:
sql SHOW ENGINE INNODB STATUS\G;- PostgreSQL:sql SELECT * FROM pg_stat_activity WHERE state = 'active'; - Semak log alat sandaran:
- XtraBackup: Periksa
xtrabackup_log. - pg_dump: Gunakan--verbose.
Arahan
Pengoptimuman Sandaran MySQL
- Sandaran selari:
bash xtrabackup --backup --parallel=4 --target-dir=/backup - Sandaran mampat:
bash xtrabackup --backup --compress --compress-threads=4 --target-dir=/backup - Had laju:
bash xtrabackup --backup --throttle=100 --target-dir=/backup
Pengoptimuman Sandaran PostgreSQL
- Format direktori untuk selari:
bash pg_dump -Fd -j 4 -f /backup mydb - Format tersuai mampat:
bash pg_dump -Fc -Z 9 -f /backup/dump.gz mydb
Pengoptimuman Pemulihan
- MySQL: Gunakan
--apply-logdengan memori tambahan:bash xtrabackup --prepare --use-memory=4G --target-dir=/backup - PostgreSQL: Tingkatkan
maintenance_work_mem:sql SET maintenance_work_mem = '1GB';
Kawalan Risiko
- Jadual sandaran semasa trafik rendah.
- Gunakan had laju I/O.
- Simpan sandaran pada volum kekal berasingan.
- Uji prestasi pemulihan dalam persekitaran pementasan.
Pengembalian
- Jika sandaran gagal akibat perubahan parameter, kembali ke lalai.
- Jika pemulihan menghasilkan data rosak, hentikan serta-merta dan pulihkan daripada sandaran penuh yang diketahui baik.
Pengesahan
- Selepas pemulihan, jalankan pemeriksaan ketekalan:
- MySQL:
checksum tableataupt-table-checksum. - PostgreSQL:
pg_checksumsatauANALYZE. - Sahkan pertanyaan perniagaan kembali betul.
Bila Hantar Tiket OpsGlobal
- Masa sandaran/pemulihan secara konsisten melebihi SLA (mis., >4 jam).
- Berlaku kerosakan data atau kegagalan pemulihan.
- Anda memerlukan cadangan seni bina (mis., kelas penyimpanan, talaan parameter pangkalan data).
- Anda tidak pasti tentang konfigurasi kawalan risiko.
Mengikuti langkah-langkah ini, kebanyakan isu prestasi boleh diselesaikan. Jika masalah berterusan, pasukan SRE OpsGlobal boleh memberikan analisis dan pengoptimuman mendalam.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Database dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Penerokaan mendalam untuk mendiagnosis dan meningkatkan kelajuan sandaran/pemulihan pangkalan data MySQL dan PostgreSQL yang berjalan di Kubernetes, dengan arahan dan kawalan risiko yang boleh dilaksanakan.
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.