MySQL Binlogログ
4057 ワード
Thresh
Binlogレコードモード
Redo LogはInnoDBエンジン特有のログであり、MySQL Serverにも独自のログ、すなわちBinary log(バイナリログ)、略称Binlogがある.
Binlogは、すべてのデータベースのテーブル構造の変更やテーブルデータの変更を記録するバイナリログであり、SELECTやSHOWなどの操作は記録されません.
Binlogログはイベント形式で記録され、文の実行にかかる時間も含まれます.
Binlogログを開くには、次の2つの最も重要な使用シーンがあります.
Binlogファイル名のデフォルトは、oak_などの「ホスト名_binlog-シリアル番号」形式です.binlog-000001、プロファイルに名前を指定することもできます.
ファイル記録モードは、STATEMENT、ROW、MIXEDの3種類があり、具体的な意味は以下の通りである. ROW(row-based replication, RBR)
ログには、各行のデータが変更されたことが記録され、slave側で同じデータが変更されます. STATMENT(statement-based replication, SBR)
各変更されたデータのSQLはmasterのBinlogに記録され、slaveはコピー時にSQLプロセスが元のmaster側で実行したものと同じSQLとして再実行されるように解析されます.SQL文コピーと略称します. MIXED(mixed-based replication, MBR)
以上の2つのモードの混合使用は、一般的にはSTATEMENTモードでbinlogを保存し、STATEMENTモードでコピーできない操作ではROWモードでbinlogを保存し、MySQLは実行したSQL文に基づいて書き込みモードを選択します.
Binlog書き込みメカニズム
よく使われるロゴイベントには、Query event、Row event、Xid eventなどがあります.binlogファイルの内容は各種ログイベントの集合である.は、記録モードおよび動作に基づいてeventイベントをトリガするlog event(イベントトリガ実行機構) を生成する.トランザクション実行中にlog eventがバッファに書き込まれ、各トランザクションスレッドに1つのバッファ がある.トランザクションは、コミットフェーズで生成されたlog eventを外部binlogファイルに書き込む.
Binlogファイルアクション
Binlogステータスの表示
Binlog機能をオンにするにはmyを変更する必要があります.cnfかmy.iniプロファイル、[mysqld]の下にlog_を追加bin=mysql_bin_ロゴ、MySQLサービスを再起動します.
オープン文の実行
show binlog eventsコマンドの使用
mysqlが持っているツールmysqlbinlogで
binlogを使用してデータをリカバリする
mysqldump:データベースデータを定期的にすべてバックアップします.mysqlbinlog:インクリメンタルバックアップとリカバリ操作ができます.
Binlogファイルの削除
expire_を設定できます.logs_daysパラメータを使用して自動クリーンアップ機能を起動します.デフォルト値が0の場合、有効になっていません.1に設定するとbinlogファイルが1日を超えると自動的に削除されます
Redo LogとBinlogの違い Redo LogはInnoDBエンジン機能に属し、BinlogはMySQL Serverに属する機能であり、バイナリファイルで記録されている. Redo Logは物理ログに属し、このデータページの更新状態の内容を記録し、Binlogは論理ログであり、更新プロセスを記録する. Redoログはループライトで、ログ空間の大きさは固定で、Binlogは追加ライトで、1つを書き終わって次を書き終わって、上書きして使用しません. Redo Logはサーバ異常ダウンタイム後のトランザクションデータの自動リカバリとして使用され、Binlogはプライマリ・レプリケーションとデータ・リカバリとして使用できます.Binlogには自動crash-safe能力がありません.
(crash-safeはInnoDBストレージエンジンにおいて、トランザクションのコミット中に任意の段階でMySQLが突然潰れ、再起動後にトランザクションの完全性が保証され、コミットされたデータが失われず、コミットされていないデータが自動的にロールバックされる.この能力はredo logとunod logの2つのログに依存する.)
Binlogレコードモード
Redo LogはInnoDBエンジン特有のログであり、MySQL Serverにも独自のログ、すなわちBinary log(バイナリログ)、略称Binlogがある.
Binlogは、すべてのデータベースのテーブル構造の変更やテーブルデータの変更を記録するバイナリログであり、SELECTやSHOWなどの操作は記録されません.
Binlogログはイベント形式で記録され、文の実行にかかる時間も含まれます.
Binlogログを開くには、次の2つの最も重要な使用シーンがあります.
: Binlog , Binlog , Binlog 。
: mysqlbinlog 。
Binlogファイル名のデフォルトは、oak_などの「ホスト名_binlog-シリアル番号」形式です.binlog-000001、プロファイルに名前を指定することもできます.
ファイル記録モードは、STATEMENT、ROW、MIXEDの3種類があり、具体的な意味は以下の通りである.
ログには、各行のデータが変更されたことが記録され、slave側で同じデータが変更されます.
: , 。
: , , alter table 。
各変更されたデータのSQLはmasterのBinlogに記録され、slaveはコピー時にSQLプロセスが元のmaster側で実行したものと同じSQLとして再実行されるように解析されます.SQL文コピーと略称します.
: , IO,
: , last_insert_id()、now() 。
以上の2つのモードの混合使用は、一般的にはSTATEMENTモードでbinlogを保存し、STATEMENTモードでコピーできない操作ではROWモードでbinlogを保存し、MySQLは実行したSQL文に基づいて書き込みモードを選択します.
Binlog書き込みメカニズム
よく使われるロゴイベントには、Query event、Row event、Xid eventなどがあります.binlogファイルの内容は各種ログイベントの集合である.
Log Event binlog_cache_mngr , , stmt_cache, ; trx_cache, 。
log event binlog , log event binlog , log event。
Binlogファイルアクション
Binlogステータスの表示
show variables like 'log_bin';
Binlog機能をオンにするにはmyを変更する必要があります.cnfかmy.iniプロファイル、[mysqld]の下にlog_を追加bin=mysql_bin_ロゴ、MySQLサービスを再起動します.
#log-bin=ON
#log-bin-basename=mysqlbinlog
binlog-format=ROW
log-bin=mysqlbinlog
オープン文の実行
set global log_bin=mysqllogbin;
show binlog eventsコマンドの使用
show binary logs; // show master logs;
show master status;
show binlog events;
show binlog events in 'mysqlbinlog.000001'\G;
:
Log_name: mysql_bin.000001 // log
Pos: 174 //log bin-log
Event_type: Intvar //log
Server_id: 1 // server_id, log
End_log_pos: 202 //log bin-log
Info: INSERT_ID=2 //log ,
mysqlが持っているツールmysqlbinlogで
mysqlbinlog " " mysqlbinlog " " > " :test.sql"
binlogを使用してデータをリカバリする
//
mysqlbinlog --start-datetime="2020-04-25 18:00:00" --stop-datetime="2020-04-26 00:00:00" mysqlbinlog.000002 | mysql -uroot -p1234
//
mysqlbinlog --start-position=154 --stop-position=957 mysqlbinlog.000002 | mysql -uroot -p1234
mysqldump:データベースデータを定期的にすべてバックアップします.mysqlbinlog:インクリメンタルバックアップとリカバリ操作ができます.
Binlogファイルの削除
purge binary logs to 'mysqlbinlog.000001'; //
purge binary logs before '2020-04-28 00:00:00'; //
reset master; //
expire_を設定できます.logs_daysパラメータを使用して自動クリーンアップ機能を起動します.デフォルト値が0の場合、有効になっていません.1に設定するとbinlogファイルが1日を超えると自動的に削除されます
Redo LogとBinlogの違い
(crash-safeはInnoDBストレージエンジンにおいて、トランザクションのコミット中に任意の段階でMySQLが突然潰れ、再起動後にトランザクションの完全性が保証され、コミットされたデータが失われず、コミットされていないデータが自動的にロールバックされる.この能力はredo logとunod logの2つのログに依存する.)