Senario
Sebuah platform e-dagang menggunakan pangkalan data PostgreSQL 2TB dan MySQL 500GB. Pekerjaan sandaran mengambil masa berjam-jam dan RTO sering dilampaui. Semasa sandaran, respons pangkalan data menjadi perlahan, menjejaskan perniagaan.
Gejala
- Tempoh sandaran meningkat secara berterusan dari 30 minit hingga 2 jam.
- Pemantauan sistem menunjukkan I/O cakera menunggu pada 90% semasa sandaran.
- Latihan pemulihan dari sandaran penuh mengambil masa lebih lama daripada RTO yang ditetapkan (4 jam) untuk data 1TB.
Diagnosis
PostgreSQL
- Semak ketinggalan WAL menggunakan
pg_stat_replication. - Semak statistik titik semak dalam
pg_stat_bgwriter. - Pantau I/O dengan
htopatauiostat.
MySQL
- Gunakan
SHOW ENGINE INNODB STATUS\Guntuk memeriksa nombor jujukan log (LSN) dan titik semak. - Gunakan
performance_schema.file_summary_by_instanceuntuk mengenal pasti fail I/O tinggi.
Arahan dan Parameter Penalaan
Pengoptimuman Sandaran PostgreSQL
# Gunakan pg_basebackup dengan mampatan dan pekerja berbilang
pg_basebackup -h localhost -U replicator -D /backup -Ft -z -P --wal-method=stream --compress=9 --workers=4 --max-rate=100M
Pelarasan parameter dalam postgresql.conf:
- wal_compression = on
- checkpoint_completion_target = 0.9
- max_wal_senders = 10
Pengoptimuman Sandaran MySQL
# Gunakan Percona XtraBackup dengan utas selari
xtrabackup --backup --target-dir=/backup --parallel=4 --compress --compress-threads=4
Pelarasan parameter dalam my.cnf:
- Tetapkan innodb_buffer_pool_size kepada 70% memori fizikal untuk mengelakkan I/O yang tidak menentu.
- Tingkatkan innodb_log_file_size kepada 4GB untuk mengurangkan pertukaran log.
- Tala innodb_io_capacity untuk memadankan prestasi cakera.
Kawalan Risiko
- Sentiasa membuat sandaran dari replika untuk mengelakkan beban utama.
- Gunakan
ioniceatau cgroups untuk mengawal keutamaan I/O sandaran. - Pastikan sumber sistem (CPU, memori, cakera) mempunyai sekurang-kurangnya 20% ruang kosong sebelum sandaran.
Pengembalian dan Pengesahan
Pengembalian
Jika sandaran gagal atau rosak, hentikan segera dan bersihkan fail sementara. Pulihkan dari sandaran penuh terakhir yang baik:
# PostgreSQL
pg_ctl start -D /data -o '-P 1' # masuki mod pemulihan luar talian
# MySQL
systemctl stop mysql
cp -r /backup/latest /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql
Pengesahan
- Jalankan pemeriksaan integriti data:
pg_checksums -c -D /data(PG);mysqlcheck -A(MySQL). - Laksanakan pertanyaan asas untuk mengesahkan masa tindak balas.
Bila Hantar Tiket OpsGlobal
- Persekitaran dengan awan hibrid atau topologi rangkaian kompleks di mana lebar jalur sandaran tidak dapat dioptimumkan secara praktikal.
- Saiz pangkalan data melebihi 5TB dan alat semasa tidak dapat memenuhi RTO.
- Ketidakseragaman data atau kegagalan berulang semasa sandaran/pemulihan memerlukan analisis forensik pakar.
OpsGlobal menawarkan sokongan SRE jarak jauh 24/7 untuk membantu anda mereka bentuk strategi sandaran yang cekap dan menyelesaikan kesesakan prestasi.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Database dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Terokai kesesakan prestasi dalam operasi sandaran/pemulihan MySQL dan PostgreSQL, termasuk gejala, alat diagnostik, parameter penalaan dan amalan terbaik untuk membantu pasukan SRE meningkatkan kecekapan operasi pangkalan data.
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.