Rumah pangkalan data tutorial mysql 记一次mysql数据库binlog丢失引起的故障

记一次mysql数据库binlog丢失引起的故障

Jun 07, 2016 pm 05:38 PM
insert program java pernyataan sql apl

线上某业务需要对日志信息入库并进行分析最后呈现在管理后台上。某天突然发现后台没有前一天的分析数据。首先认为是java程序问题,于是查看应用程序日志,发现数

线上某业务需要对日志信息入库并进行分析最后呈现在管理后台上。某天突然发现后台没有前一天的分析数据。首先认为是java程序问题,于是查看应用程序日志,发现数据缺失的那天应用程序日志也没有记录,很是奇怪。接着手动执行jar包,本想看屏幕输出的报错信息,结果程序刚启动运行,执行了3条入库的sql语句(insert)后便卡住不动了,反复尝试了2-3次都是这种情况,接着怀疑是远程的mysql数据库问题导致无法插入新数据。

连接到远程数据库上,首先查看磁盘的分区df-h,果然mysql所在的数据库分区(/data)磁盘空间使用率居然达到了100%,太吓人了。果断du-sch*/data定位到具体的目录下的大文件,发现均为mysql的binlog文件

233930722.jpg

每个文件均为1.1G,这是mysql数据库binlog的默认值

234328632.jpg

查看mysql错误日志,如下信息:

131019 3:00:12 [ERROR] /usr/local/mysql/bin/mysqld: Disk is full writing './mysql-bin.000261' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space) 131019 3:00:12 [ERROR] /usr/local/mysql/bin/mysqld: Retry in 60 secs. Message reprinted in 600 secs 131019 3:10:12 [ERROR] /usr/local/mysql/bin/mysqld: Retry in 60 secs. Message reprinted in 600 secs

基本可以断定是应用程序在insert新的数据时,由于磁盘空间不足导致无法写入binlog文件导致无法插入新数据。

情急之下先删除了部分binlog,后设置max_binlog_size=500M,文件被truncate了,然后重启mysql数据库,悲剧的事情发生了,数据无法正常启动,再次查看错误日志:

/usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13)

有时出现这个错误是文件权限不正确导致,确定了mysql-bin.index文件的权限是没有问题的,属主和属组都是mysql

关闭mysqlbinlog的功能,在/etc/my.cnf中加入log-bin=0,数据库还是无法启动。

最后查看mysql-bin.index文件里的内容,描述的binlog文件都被删除了,问题就在这里。

只有重新初始化数据库,第一次没有指定datadir重启后出错:

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

再次初始化数据库,记得在/etc/my.cnf里把log-bin=0删除或者注释,因为需要开启binlog功能,连同binlog相关参数一起初始化,否则会报错。

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql --datadir=/data/mysql/core

再次重启终于,数据终于起来了,执行应用程序入库也正常了,将之前的测试数据清除,,以免插入重复数据,最后执行应用程序入库。

以上为对一次案例的排错主要过程,期间还有一些小的经过,最终把问题解决。

总结:binlog是可以关闭的,但是很少有人这么做,可以通过showvariableslike'expire_logs_days'查看binlog的过期时间;setglobalexpire_logs_days=10设置binlog的过期时间,但是一般都是会对binlog定期删除,比如7天以上的打tar包,一个月以上的删除tar包等,当然重要的需要单独保留。

本文出自 “老徐的私房菜” 博客,谢绝转载!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menanyakan jumlah dua lajur data pada masa yang sama di ThinkPhp6? Bagaimana untuk menanyakan jumlah dua lajur data pada masa yang sama di ThinkPhp6? Apr 01, 2025 pm 02:54 PM

Pertanyaan Pangkalan Data ThinkPhp6: Cara Menggunakan TP6 Untuk Melaksanakan Penyata SQL SelectSum (Jin), Sum (Chu) FromSySdBuil dalam Rangka ThinkPhp6, Cara Menggunakan Penyata SQL Pilih ...

Bagaimana untuk menyusun senarai produk dengan menyeret dan memastikan bahawa penyebaran itu berkesan? Bagaimana untuk menyusun senarai produk dengan menyeret dan memastikan bahawa penyebaran itu berkesan? Apr 02, 2025 pm 01:00 PM

Bagaimana untuk melaksanakan penyortiran senarai produk dengan menyeret. Semasa berurusan dengan penyortiran senarai produk front-end, kami menghadapi keperluan yang menarik: Pengguna melakukannya dengan menyeret produk ...

Bagaimana untuk menyusun senarai produk dan menyokong operasi penyebaran dengan menyeret? Bagaimana untuk menyusun senarai produk dan menyokong operasi penyebaran dengan menyeret? Apr 02, 2025 pm 01:12 PM

Bagaimana untuk menyusun senarai produk dengan menyeret? Semasa berurusan dengan platform e-dagang atau aplikasi yang serupa, anda sering memenuhi keperluan untuk menyusun senarai produk ...

Penggunaan medan berganda yang berbeza Penggunaan medan berganda yang berbeza Apr 03, 2025 pm 10:21 PM

Berbeza boleh deduplikasi data untuk pelbagai bidang, dan hanya jika nilai -nilai semua medan yang ditentukan adalah sama, menjaga baris yang unik. Apabila menggunakan yang berbeza, anda perlu memberi perhatian kepada deduplikasi mengikut kombinasi medan yang ditentukan dan tidak boleh menjadi deduplikasi berdasarkan beberapa bidang. Di samping itu, untuk jadual besar, menggunakan yang berbeza boleh menjejaskan prestasi, dan disyorkan untuk mengindeks atau mengira hasilnya untuk mengoptimumkan kelajuan pertanyaan.

Bolehkah saya memasang mysql pada windows 7 Bolehkah saya memasang mysql pada windows 7 Apr 08, 2025 pm 03:21 PM

Ya, MySQL boleh dipasang pada Windows 7, dan walaupun Microsoft telah berhenti menyokong Windows 7, MySQL masih serasi dengannya. Walau bagaimanapun, perkara berikut harus diperhatikan semasa proses pemasangan: Muat turun pemasang MySQL untuk Windows. Pilih versi MySQL yang sesuai (komuniti atau perusahaan). Pilih direktori pemasangan yang sesuai dan set aksara semasa proses pemasangan. Tetapkan kata laluan pengguna root dan simpan dengan betul. Sambung ke pangkalan data untuk ujian. Perhatikan isu keserasian dan keselamatan pada Windows 7, dan disyorkan untuk menaik taraf ke sistem operasi yang disokong.

Cara Menggunakan MySQL Selepas Pemasangan Cara Menggunakan MySQL Selepas Pemasangan Apr 08, 2025 am 11:48 AM

Artikel ini memperkenalkan operasi pangkalan data MySQL. Pertama, anda perlu memasang klien MySQL, seperti MySqlworkbench atau Command Line Client. 1. Gunakan perintah MySQL-Uroot-P untuk menyambung ke pelayan dan log masuk dengan kata laluan akaun root; 2. Gunakan CreateTatabase untuk membuat pangkalan data, dan gunakan Pilih pangkalan data; 3. Gunakan createtable untuk membuat jadual, menentukan medan dan jenis data; 4. Gunakan InsertInto untuk memasukkan data, data pertanyaan, kemas kini data dengan kemas kini, dan padam data dengan padam. Hanya dengan menguasai langkah -langkah ini, belajar menangani masalah biasa dan mengoptimumkan prestasi pangkalan data anda boleh menggunakan MySQL dengan cekap.

Kenapa keputusan pesanan oleh pernyataan dalam penyortiran SQL kadang -kadang kelihatan rawak? Kenapa keputusan pesanan oleh pernyataan dalam penyortiran SQL kadang -kadang kelihatan rawak? Apr 02, 2025 pm 05:24 PM

Keliru mengenai penyortiran hasil pertanyaan SQL. Dalam proses pembelajaran SQL, anda sering menghadapi beberapa masalah yang mengelirukan. Baru-baru ini, penulis membaca "Asas Mick-SQL" ...

See all articles