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 モニタリングを追加する方法

推薦する

ReactとReduxの配列処理の説明

この記事では、reduce()、filter()、map()、every()、some()、spre...

CSS3 フィルターを使用して PNG 画像の色を変更するサンプル コード

この方法は、CSS3のdrop-shadow filterを使用して、png画像の不透明部分に任意の...

WeChatアプレットでSVGアイコンを使用する方法

SVG は、さまざまな利点があるため、近年広く使用されています。残念ながら、WeChat ミニプログ...

Javascript と Vue を組み合わせて、あらゆる迷路画像の自動パス検索を実現します。

目次序文2次元配列、一方向基本インターフェースのマッピング幅優先、包括的検索マップ編集経路探索アルゴ...

Uniappがスライディングスコアリング効果を実現

この記事では、スライディングスコアリングを実装するためのuniappの具体的なコードを参考までに共有...

Vueはページを更新するために3つの方法を使用する

プロジェクトを作成しているときに、ユーザーがアクションを実行し、特定の状態を変更し、ページを更新して...

8桁の割引コードをランダムに生成し、MySQLデータベースに保存します。

現在、多くの企業が割引コードを通じてプロモーションを行っています。今では、8桁の割引コードを実装して...

1 つの記事で Vuex を理解する

目次概要Vuex の 4 つの主要オブジェクト状態の使用突然変異の使用ゲッターの使用アクションの使用...

MySQLは、統計クエリを最適化するために、sum、case、whenを巧みに使用します。

私は最近、会社で統計レポートの開発に関わるプロジェクトに取り組んでいました。データの量が比較的多かっ...

VUE ユニアプリの基本コンポーネントの簡単な紹介

1. スクロールビュー垂直スクロールを使用する場合は、固定の高さを指定して CSS で高さを設定する...

Vue の親子コンポーネントの値転送と一方向データフローの問題の詳細な説明

目次序文1. 親コンポーネントが子コンポーネントに値を渡す2. サブコンポーネントのprops型制約...

Vue3 ミックスインの使い方

目次1. mixin の使い方は? 2. ミックスイン使用時の注意2.1. ミックスイン オブジェク...

Linux での JDK のインストール (OpenJDK のアンインストールを含む) の概要

1. openjdkを表示する rpm -qa|grep jdk 2. openjdk を削除します...

HTML メタの使用例

使用例コードをコピーコードは次のとおりです。 <!DOCTYPE html> <!...

Linuxで静的ネットワーク接続を構成する方法

Linux システムのネットワーク接続を構成するのは難しい場合があります。幸いなことに、多くの新しい...