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 PROCESSLISTuntuk mengenal pasti pertanyaan yang berjalan. - Periksa status InnoDB:
SHOW ENGINE INNODB STATUS\Guntuk 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_activityuntuk proses pemulihan aktif. - Gunakan
pg_stat_bgwriterdanpg_stat_waluntuk menjejak aktiviti checkpoint dan WAL. - Periksa
pg_current_wal_lsndan ketinggalan replikasi jika berkenaan. - Gunakan
pg_stat_statementsjika diaktifkan untuk mengenal pasti pertanyaan mahal.
Arahan
MySQL
- Sandaran:
xtrabackup --backup --target-dir=/backup - Pemulihan:
xtrabackup --prepare --target-dir=/backupkemudianxtrabackup --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
mysqlpumpdengan--parallel-schemasataumydumperdengan 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;danpg_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_sizeataushared_buffersyang 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 TABLEdalam MySQL atau gunakanpg_checksumsdalam 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.