MySQLテーブルの内容の変更を監視し、MySQL binlogを有効にする

MySQLテーブルの内容の変更を監視し、MySQL binlogを有効にする

序文

binlog は、MySQL のすべての追加、削除、および変更ステートメントを記録するバイナリ ログ ファイルです。 binlog ログを通じて、データ復旧、マスタースレーブレプリケーションなどを実行できます。ご覧のとおり、この binlog があれば、mysql の完全なバックアップが保持されます。

特定のテーブルの変更を監視してから、何らかの操作を実行する必要があるという要件に頻繁に遭遇します。

テーブル内のデータが追加されるだけで、削除または変更されていない場合は、監視は比較的簡単です。最新の ID を定期的に照会できます。ただし、削除または変更操作が必要な場合は、テーブル全体をスキャンする必要があり、非常に非効率的です。テーブルが変更されたときに、監視のためにイベントをトリガーできると最適です。

これで、binlog を通じて完了できます。 binlog の変更を監視するだけで、ステートメントが実行されるたびに binlog に記録され、監視できるようになります。

Binlog はデフォルトで無効になっています。有効にするには、MySQL 構成ファイルを変更する必要があります。

Mac に brew によってインストールされた MySQL のデフォルトのインストール ディレクトリは /usr/local/Cellar で、バージョンは 5.7.21 です。


ご覧のとおり、ディレクトリ内に構成ファイルはありません。これは他のバージョンとは異なる場合があります。他のバージョンでは、ルート ディレクトリに my.ini または my.cnf ファイルがあったり、support-files に my-default.cnf ファイルがあったりしますが、このバージョンにはそれがありません。

設定ファイルを変更するには、自分で作成する必要があります。

/etc/ ディレクトリに次の内容の my.cnf ファイルを作成します。

[mysqld]
サーバーID = 1
ログ bin = mysql bin
binlog 形式 = ROW

mysql-bin は単なる名前なので、任意の名前を使用できます。今後保存されるログファイル名は、mysql-bin.000001、mysql-bin.000002 になります。

binlog_format は ROW に設定する必要があることに注意してください。これは、STATEMENT モードまたは MIXED モードでは、Binlog は特定のデータなしで SQL ステートメントのみを記録および送信する (ログ サイズを削減するため) ため、データを保存できないためです。

次に、brew restart mysql で mysql を再起動します。次に、mysql -uroot -pコマンドでMySQLコンソールに入り、実行します。

'%log_bin%' のような変数を表示します。 

上の矢印は my.cnf が設定されていない場合、下の矢印は my.cnf が設定されて再起動された後です。

show master statusコマンドを使用すると、現在書き込まれているバイナリログのステータスを表示できます。


次のようなコマンドもあります:

binlog ログ ファイルを更新してログをフラッシュします # 更新後、新しい binlog ログが作成されます。

ログ ファイルをクリアし、マスターをリセットします。

最初の binlog ファイルの内容を表示するにはshow binlog events

指定された binlog ファイルの内容を表示するにはshow binlog events in 'mysql-bin.000004'

バイナリログ ファイルのリストを取得しshow binary logs

binlog だけでは不十分で、binlog を監視するツールも必要です。次の記事: 運河

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • MySQL で binlog を使用する際のフォーマットの選択方法
  • 検証例 MySQL | 同じ値を持つフィールドを更新すると、binlog に記録されます
  • MySQLを監視するためのbinlogログ解析ツールの詳しい説明:Canal
  • MySQL 8.0 の binlog の詳細な説明
  • MYSQL の binlog 最適化に関する考察の要約
  • MySQL フラッシュバック ツール binlog2sql の詳細なインストールと設定のチュートリアル
  • MySQLはmysqldump+binlogを使用して、削除されたデータベースの原理分析を完全に復元します。
  • MySQL バイナリログデータ復旧: 誤ってデータベースを削除した場合の詳細な説明
  • MySQL binlog_ignore_dbパラメータの具体的な使用法

<<:  Linux でスペースを含むファイルを削除する (ディレクトリではない)

>>:  React でインデックスをキーとして使用することが推奨されないのはなぜですか?

推薦する

一意の注文番号を生成するためのMySQLの高同時実行方法

序文このブログ記事が公開された後、何人かの友人からSQL Serverバージョンがあるかどうか尋ねら...

Docker で Oracle 11g イメージ構成をプルダウンする際の問題を分析する

1. イメージをプルするdocker pull レジストリ.cn-hangzhou.aliyuncs...

フロントエンドが習得すべき、複数列の等高レイアウトを実現するための CSS テクニック

1. はじめにページを作成しているときに、複数列のレイアウトに遭遇することがあります。各列の内容が異...

フローティングメニューを実装するjQueryプラグイン

毎日jQueryプラグインを学ぶ - フローティングメニュー、参考までに、具体的な内容は次のとおりで...

MySQL Undo ログと Redo ログの概要

目次元に戻すログUNDOログの生成と破棄UNDOログの保存元に戻すログ機能トランザクションの原子性の...

HTML テーブルタグチュートリアル (26): セルタグ

<TD> タグの属性は、テーブル内のセルのプロパティを設定するために使用されます。表 &...

MySQL における := と = の違いをグラフィカルに紹介

:= と = の違い=設定および更新の場合にのみ、:= と同じ効果、つまり代入効果があり、それ以外の...

CentOS 7.6 への MySQL 5.7 GA バージョンのインストール チュートリアル図

目次環境の準備環境の準備mariadbをアンインストールする rpm -qa | grep mari...

Docker を使用して ELK 環境を迅速にデプロイする方法の詳細な説明 (最新バージョン 5.5.1)

Linux サーバーに Docker をインストールした後、関連する公式 Docker イメージを...

docker run後、ステータスは常にExitedになります

追加するdocker run -it -name test -d nginx:latest /bin...

Docker クリーンアップ環境操作

丁寧に掃除を始めましょう!未使用ボリュームの一覧docker ボリューム ls -qf dangli...

JavaScript Promise の徹底解説

目次1. Promise とは何ですか? 2. なぜ Promise が存在するのでしょうか? 3つ...

mysql バッチで大量のデータを削除する

mysql バッチで大量のデータを削除する1000万件のレコードを持つテーブル(syslogs)があ...

ウェブサイトはいつ広告を掲載すべきでしょうか?

最近、インターネットのベテランと「広告」について議論したのですが、彼から非常に興味深い意見を聞きまし...

Linux が Sudo 権限昇格の脆弱性を公開、どのユーザーでも root コマンドを実行可能

Linux で最も一般的に使用される重要なユーティリティの 1 つである Sudo は、ほぼすべての...