mysql のファイル mysql-bin.000001 とは何ですか? 削除できますか?

mysql のファイル mysql-bin.000001 とは何ですか? 削除できますか?

ポートを使用して MySQL をインストールした後、しばらくすると /var の容量が不足していることがわかりました。確認したところ、mysql-bin.000001 や mysql-bin.000002 などのファイルが容量を占有していることがわかりました。これらのファイルは何のためにあるのでしょうか?データベースの操作ログです。例えば、テーブルをUPDATEしたり、データをDELETEしたりすると、文に一致するデータがなくても、コマンドがログファイルに保存されます。また、各文の実行時間も記録されます。

これには主に 2 つの目的があります。

1: データの回復 データベースに問題があり、以前にバックアップしたことがある場合は、ログ ファイルを調べて、データベースに問題を引き起こしたコマンドを特定し、損失を回復する方法を見つけることができます。
2: マスターサーバーとスレーブサーバー間でデータを同期する マスターサーバー上のすべての操作はログに記録され、スレーブサーバーはログに基づいて操作を実行し、2 つのサーバーが同期されていることを確認できます。

治療方法は2つあります。
1: MySQL サーバーが 1 つしかない場合は、このオプションをコメント アウトするだけです。
vi /etc/my.cnf で、log-bin 行をコメントアウトし、mysql サービスを再起動します。
2: 環境がマスタースレーブサーバーの場合は、次の操作を行う必要があります。
A: 各スレーブ サーバーで、SHOW SLAVE STATUS を使用して、読み取っているログを確認します。
B: SHOW MASTER LOGS を使用して、マスター サーバーのログのリストを取得します。
C: すべてのスレーブ サーバーの中で最も古いログを決定します。これがターゲット ログです。すべてのスレーブ サーバーが更新された場合、リストの最後のログになります。
D: すべてのログをクリアしますが、スレーブ サーバーはターゲット ログと同期する必要があるため、ターゲット ログはクリアしません。

ログをクリーンアップする方法は次のとおりです。

マスターログを 'mysql-bin.010' に消去します。
'2008-12-19 21:00:00' より前のマスター ログを消去します。

スレーブ サーバーが同期されており、マスター サーバーと同じであることが確実な場合は、直接 RESET MASTER を実行してこれらのファイルを削除できます。

数日使用した後、10G のサーバー容量が 5G に減り、アップロードしたファイルは数百 MB しかなかったことがわかりました。いったい何がそんなに多くの容量を占有したのでしょうか?

Web ルート ディレクトリは /home に配置されています。すべてのファイルの合計は 300 MB 未満ですが、サーバー上で 5 GB 近くのスペースを占有しています。恐ろしいです。最終的に、段階的に確認した後、このフォルダーが多くのスペース リソースを占有していることがわかりました。

つまり、最も多くのスペースを占めるのは、mysql フォルダの下の var ディレクトリです。この中には、何があるのでしょうか? 見てみましょう:

mysql-bin.0000X ファイルが多数見つかりました。これは何でしょうか? mysql の操作ログ ファイルです。データベースは数十 MB しかありませんが、操作ログのサイズは 3 GB 近くあります。

mysql-bin.0000X ログ ファイルを削除するにはどうすればいいですか?

赤は入力されたコマンドを示します。

[root@jiucool var]# /usr/local/mysql/bin/mysql -u root -p
パスワードを入力してください: (パスワードを入力)
MySQL モニターへようこそ。コマンドは ; または /g で終わります。
MySQL接続IDは264001です
サーバーバージョン: 5.1.35-log ソース配布

ヘルプを表示するには、「help;」または「/h」と入力します。現在の入力ステートメントをクリアするには、「/c」と入力します。

mysql> reset master; (ログファイルをクリア)
クエリは正常、影響を受けた行は 0 行 (8.51 秒)

マイSQL>

さて、mysql フォルダがどのくらいの容量を占めているか確認してみましょう。

[root@jiucool var]# du -h –max-depth=1 /usr/local/mysql/
37M /usr/local/mysql/var
70M /usr/local/mysql/mysql-テスト
15M /usr/local/mysql/lib
448K /usr/local/mysql/include
2.9M /usr/local/mysql/share
7.6M /usr/local/mysql/libexec
17M /usr/local/mysql/bin
11M /usr/local/mysql/ドキュメント
2.9M /usr/local/mysql/sql-bench
163M /usr/local/mysql/

さて、見てみましょう。mysql ディレクトリ全体は 163M しか占めていません。問題ありません。mysql-bin.0000X ログ ファイルは多くのスペースを占めており、その存在は特に意味がないので、生成されないようにしましょう。

[root@jiucool var]# find / -name my.cnf

mysql 構成ファイル my.cnf が見つかり、log-bin=mysql-bin がコメントアウトされました。

# レプリケーションマスターサーバー(デフォルト)
# レプリケーションにはバイナリログが必要です
#ログ bin = mysql bin

mysqlを再起動します。

操作は完了しました。データベースのサイズが数十 MB しかないため、これ以上 N GB のログ ファイルは生成されません。

これらのログ ファイルはひどいです。この新しい VPS に移行してからまだ 20 日ほどですが、ログ ファイルは 1 か月も経たないうちに 3G 近くになっています。1 か月か 2 か月以内にログ ファイルをクリアしないと、大変なことになります。

MySql データ ディレクトリ mysql-bin.000001 ファイルのクリーニング方法

MYSQL インストール ディレクトリのデータ ディレクトリには、すべてのデータベース ファイルが格納されます。このディレクトリには、mysql-bin.000001、mysql-bin.000002、mysql-bin.000003 など、多くのスペースを占めるファイルがいくつかあります。これらのファイルはデータベース操作ログ ファイルであり、削除できます。除去方法:
cmd で、mysql の下の bin ディレクトリに移動し、mysql -u root -p と入力して、パスワードを入力し、正常に入力したら reset master と入力します。
mysql> マスターをリセットします。
クエリは正常、影響を受けた行は 0 行、警告は 1 件 (0.20 秒)
これにより、ログ ファイルが削除されます。これらのログ ファイルを生成したくない場合は、次の操作を実行できます。
mysql ディレクトリの my.ini を開き、log-bin=mysql-bin を見つけてコメントアウトします。
#ログ bin = mysql bin
(データベース設定ファイルを変更するときは、MYSQLデータベースを一時的に閉じることをお勧めします)

<<:  Vue での Vue.prototype の使用に関する詳細な説明

>>:  Linux で Grafana をインストールし、InfluxDB モニタリングを追加する方法

推薦する

Windows オペレーティング システムでの Linux 仮想マシンのインストールと構成のチュートリアル

序文仕事では、Linux 環境で操作する必要があることがよくあります。ここでは、win10 システム...

LinuxでのMySQLのインストール手順

1. mysql tar ファイルをダウンロードします。参考: 2. インストールパッケージがあるデ...

MySQL は対応するクライアント プロセスにどのように接続しますか?

質問特定の MySQL 接続について、それがどのクライアント プロセスからのものであるかをどのように...

CSS 属性値 clear:right が機能しない理由の詳細

clear プロパティを使用してフロートをクリアすることはよくあることであり、clear プロパティ...

Vueはプログレスバーの変更効果を実現します

この記事ではVueを使ってプログレスバーの変更を簡単に実装してみましたので参考にしてください。具体的...

docker runコンテナの自動終了の解決策

今日、Dockerfile を使用してイメージを作成したときに問題が発生し、イメージの実行後にコンテ...

case when文のエラー問題の詳細な説明

序文MySQL データベースでは、if else のような判断演算を使用することがあります。では、M...

Reactプロジェクトで要素を使用する方法

React プロジェクトで要素フレームワークを使用するのは今回が初めてです。非常に単純な問題に遭遇し...

MySQL のインストール方法と設定に関するいくつかの問題の概要

1. MySQL rpm パッケージのインストール # インストールソースをダウンロードします [r...

Ubuntu 18.04 に Nvidia グラフィック カード ドライバーをインストールするチュートリアル (画像とテキスト付き)

0. 事前準備BIOS でセキュア ブートを無効にします。無効にしないと、サードパーティ ソースを...

HTMLを使用してシンプルなメールテンプレートを作成する

今日は、「ローテク」の問題について書きたいと思います。ちなみに、私は JavaScript Week...

Linuxでのソフトウェア(ライブラリ)の更新コマンドの詳しい説明

Ubuntu サーバーにパッケージをインストールする場合、sudo apt-get install ...

jQueryをベースにカルーセル効果を実現する

この記事では、カルーセルマップの効果を実現するためのjQueryの具体的なコードを参考までに共有しま...

完全なショッピングカートを実装するためのミニプログラム

ミニプログラムは、参考までに完全なショッピングカート[すべて選択/選択解除して金額を計算/加算と減算...

Docker ベースの Jenkins のデプロイに関する詳細なチュートリアル

このドキュメントを作成した当時は2019年12月頃で、er2.200が最新バージョンでした。 1.画...