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 でインデックスをキーとして使用することが推奨されないのはなぜですか?

推薦する

JavaScriptの記事では、Webフォームの操作方法を説明します。

1. はじめに先ほど、ウェブページの急速な発展について紹介しました。今回は、より深い内容についてお...

MySQL5.7+ MySQL Workbenchのインストールと設定方法のグラフィックチュートリアル(MAC)

この記事では、主にMACオペレーティングシステムでのMySQL5.7とMySQLWorkbenchの...

MySQLインデックスが失敗するいくつかの状況の詳細な分析

1. 先頭のあいまいクエリではインデックスを使用できません (「%XX」や「%XX%」など)コード値...

JS ES6における構造化分解についてお話しましょう

概要es6 では、配列またはオブジェクトから指定された要素を取得する新しい方法が追加されました。これ...

HTML の順序なしリストタグと順序付きリストタグの使用例

1. 上部と下部のリストタグ: <dl>..</dl>:上dt下層dd: カ...

ネイティブ js カスタム右クリック メニュー

この記事の例では、参考のためにjsカスタム右クリックメニューの具体的なコードを共有しています。具体的...

Nginx 書き換えジャンプの適用シナリオの詳細な説明

アプリケーションシナリオ1: ドメイン名ベースのリダイレクト会社の古いドメイン名は www.accp...

React コードを共有するためのベストプラクティス

プロジェクトがある程度複雑になると、必然的にロジックの再利用の問題に直面することになります。 Rea...

Vue3 がコンポーネント通信に mitt を使用する手順

目次1. インストール2. プロジェクトにインポートしてマウントする3. 使用Vue2.x はコンポ...

jQueryフレームワークは、要素の表示と非表示の3つのアニメーションメソッドを実装しています。

目次1. デフォルトで表示と非表示を切り替える2. スライドして表示と非表示を切り替える3. フェー...

時刻を保存するために適切な MySQL の datetime 型を選択する方法

データベースを構築してプログラムを書くとき、日付と時刻の使用は避けられません。データベースには、ti...

MySQLでANDとORを組み合わせる問題を解決する

以下のように表示されます。 SELECT prod_name,prod_price FROM pro...

方言変換のためのApache Calciteコード

意味Calcite は、Sql を SqlNode に解析し、次に SqlNode を特定のデータベ...

HTML テーブル マークアップ チュートリアル (15): テーブル タイトル

<br />このタグを使用すると、表のタイトルを直接追加し、タイトル テキストの配置プロ...

Linux でのファイルの編集、保存、終了の実践的な説明

Linux でファイルを編集した後、保存して終了するにはどうすればよいですか?保存して終了するコマン...