binlog は、MySQL のすべての DML 操作を記録するバイナリ ログ ファイルです。 binlog ログを通じて、データ復旧、増分バックアップ、マスター間レプリケーション、マスター スレーブ レプリケーションなどを実行できます。開発者は binlog にあまり注意を払わないかもしれませんが、運用や保守、アーキテクチャ担当者にとっては非常に重要です。 MySQL 5.7 では、デフォルトでは binlog が有効になっていません。有効にする方法の詳細については、https://www.jb51.net/article/207953.htm を参照してください。 binlog が正常に有効化されると、my.inf 構成ファイルで binlog ファイルの場所を確認できます。 MySQL コマンドラインでも表示できます。コマンドラインビューコードは次のとおりです。 '%log_bin%' のような変数を表示します。 現在のMySQLのbinlogの状況も見てみましょう マスターステータスを表示します。 上の図からわかるように、現在 binlog ファイルは 1 つだけあり、ファイル名は mysql-bin.000001 です。再起動するたびに、binlog ファイルが自動的に生成されます。再起動後に同じコマンドを再度実行すると、内容は次のようになります。 binlog が保存されているディレクトリにもこのようなファイルが存在します。 もちろん、binlog ファイルを手動で更新することもできます。ログをフラッシュすると、新しい binlog ファイルも作成されます。実際、サーバーが再起動されると、ログのフラッシュ操作も呼び出されます。 これらのファイルをすべて消去したい場合は、リセットマスターを使用して処理できます。 次に、単一のファイルの操作を見てみましょう。まず、ファイルの内容を確認します。 binlogディレクトリを探します。たとえば、mysql-bin.000001を確認します。 vi mysql-bin.000001 意味不明な文字が並んでいます。これは一連のバイナリ ファイルであることはわかっているので、バイナリ ファイルをテキストとして開くと何か問題が発生するはずです。では、このファイルの内容を表示するにはどうすればよいでしょうか。 MySQLは、 mysqlbinlogと呼ばれるbinlogログを表示するためのツールを提供しています。 mysqlbinlog myql-bin.000001 このファイルはかなり長いです。一度で読み終えられない場合はどうすればいいでしょうか? Linux パイプを使用することができます。ここでは詳しく説明しません。Linux に関する知識は自分で調べることができます。 上記のスクリーンショットには位置フィールドがあることに注意してください。このフィールドはポインターに似ています。このフィールドの現在の値は 154 で、これはバイナリログの現在の位置を示しています。 DML 操作を実行するたびに、位置が変更されます。たとえば、データテストを作成しましょう 作成する前に、便宜上、binlog ログをクリアし、リセット マスターを使用できます。実稼働環境では、この操作は非常に危険なので、フラッシュ ログを使用して処理し、新しい binlog ファイルを生成することができます。使用する方法に関係なく、テスト環境では新しい binlog ファイルのみが必要です。新しいbinlogファイルを生成した後、show master statusでステータスを確認できます。 dmlステートメントを実行してみましょう。たとえば、テストデータベースを作成します。 データベーステストを作成します。 次に、作成後のステータスを確認してみましょう。以下に示すように、位置が 154 から 313 に変更されていることがわかります。これは、操作が 154 と 313 の間で行われていることを意味します。次に、binlog の内容を確認してみましょう。 次のように、154 から 313 の間の binlog の内容を傍受します。 # 154 で #170708 9:24:02 サーバー ID 12345 end_log_pos 219 CRC32 0x30763ffe Anonymous_GTID last_committed=0 シーケンス番号=1 @@SESSION.GTID_NEXT を 'ANONYMOUS'/*!*/ に設定します。 # 219 で #170708 9:24:02 サーバー ID 12345 end_log_pos 313 CRC32 0x4d0140b3 クエリ thread_id=5 exec_time=0 error_code=0 タイムスタンプを 1499477042/*!*/ に設定します。 @@session.pseudo_thread_id=5/*!*/ を設定します。 @@session.foreign_key_checks=1、@@session.sql_auto_is_null=0、@@session.unique_checks=1、@@session.autocommit=1/*!*/ を設定します。 @@session.sql_mode を 1436549152/*!*/ に設定します。 @@session.auto_increment_increment=1、@@session.auto_increment_offset=1/*!*/ を設定します。 /*!\C utf8 *//*!*/; @@session.character_set_client=33、@@session.collation_connection=33、@@session.collation_server=8/*!*/ を設定します。 @@session.lc_time_names=0/*!*/ を設定します。 @@session.collation_database=DEFAULT/*!*/ を設定します。 データベーステストの作成 //*!*/; SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* mysqlbinlog によって追加されました */ /*!*/; 区切り文字 ; # ログファイルの終了 /*!50003 COMPLETION_TYPE を @OLD_COMPLETION_TYPE に設定*/; /*!50530 @@SESSION.PSEUDO_SLAVE_MODE を 0 に設定します*/; MySQL は多くの暗黙的な操作を実行していることがわかります。注意深い友人は次の文に気付くでしょう: create database test; バイナリログを簡単にまとめてみましょう: 1. サービスが開始すると、binlog ファイルが新しいファイルを作成します。 2. フラッシュログを使用して手動でログを更新し、新しいバイナリログファイルを生成することができます。 3. show master statusでbinlogのステータスを確認できます。 4. マスターをリセットすることで、binlogログファイルをクリアできます。 5. binlogログの内容はmysqlbinlogツールで表示できます。 6. dmlを実行すると、mysqlは自動的にbinlogを記録します。 MySQL binlog ログの詳細な使用方法に関するこの記事はこれで終わりです。MySQL binlog ログの使用に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: ローカル Docker に Postgres 12 + pgadmin をインストールする方法 (Apple M1 をサポート)
>>: ウェブサイトのデザインでは色の階層感覚に注意を払う必要があります
概要いずれかのデータベースに対する操作は他のデータベースに自動的に適用され、2 つのデータベースのデ...
JSONデータはHTMLページ上に表示されフォーマットされます1. 表示効果図説明:すべてのキー値は...
docker-compose.yml に extra_hosts キーワードを追加すると、コンテナの...
これは多くの人がやったことがあるはずです。ただうずうずして書きたかったので、時間をかけていじってダー...
目次序文webSocket の操作と例について:ウェブソケット1. webSocketについて2. ...
MyISAM、MySQLでよく使われるストレージエンジン特性: 1. 同時実行性とロックレベル2. ...
zip インストール パッケージをダウンロードします。 MySQL8.0 For Windows z...
CSSファイルに書き込むコードをコピーコードは次のとおりです。 01.html {グレイスケール(1...
ウェブサイトリンク: http://strml.net/サミュエル・リード著ヒント: 昨日、Mome...
検索ページ: search.wxml ページ: <view class="form&...
概要async/await と Promise の基本的な違いは、await fn() は現在の関数...
1. データベースとデータベースインスタンスMySQL の研究では、データベースとデータベース イン...
LinuxにMySQLがすでにインストールされているかどうかを確認する sudo service m...
データ管理の大部分は検索であり、SELECT はその大部分を占めています。 SELECT selec...
当初の意図は、element-ui の $notify 通知をコンポーネントにカプセル化することでし...