binlog ログを自動的にクリーンアップする MySQL メソッド
手順:
MySQL を開きます binlog サーバーがログを自動的に消去するように設定されていない場合、binlog ログはデフォルトで保持され、時間が経つとサーバーのディスク領域が binlog ログによっていっぱいになり、MySQL データベースでエラーが発生します。
binlog ログを安全にクリアするには、次の方法を使用します
1. マスターとスレーブの同期を行わずにログを削除します
mysql -uroot -p123456 -e 'PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ),INTERVAL) 5 DAY)';
#mysql 5日前のbinlogを定期的にクリアします
mysql -u root -p #mysqlコンソールに入る
マスターログをリセットする
1, mysql -u root -p #スレーブに入るサーバー mysql コンソール
スレーブのステータスを表示 G; # スレーブサーバーからどのログを読み取っているかを確認します。 複数のスレーブサーバーが存在します。最も古いものを対象のログとして選択します。2. マスターサーバーの mysql コンソールに入ります
show master log; #マスターサーバー上の一連のログを取得します
'2016-06-22 より前のマスター ログをパージ
13:00:00'; #2016-06-22 13:00:00 までに binlog ログをクリア
マスター ログを削除してください
DATE_SUB( NOW( ), INTERVAL 3 DAY); #3 日前のバイナリ ログ ログをクリアします
3、MySQL バイナリ ログ ログの自動クリーニングを設定します
vi /etc/my.cnf #設定を編集します
expire_logs_days = 15 #自动删除15天前的日志。默认值为0,表示从不删除。 log-bin=mysql-bin #注释掉之后,会关闭binlog日志 binlog_format=mixed #注释掉之后,会关闭binlog日志
:wq ! # 保存して終了します
詳細説明:
mysql>ヘルプパージ;
名前:'PURGE BINARY LOGS'
説明:
構文:
PURGE { BINARY MASTER } LOGS
{ TO 'log_name' | BEFORE datetime_ expr }
バイナリ ログは、MySQL サーバーによって行われたデータ
の変更に関する情報を含むファイルのセットです。ログは、バイナリ ログ ファイルのセットとインデックス ファイルで構成されます (を参照)。 http:// dev.mysql.com/doc/refman/5.5/en/binary-log.html)。PURGE BINARY LOGS ステートメントは、指定されたログ インデックス ファイルより前のログ インデックス ファイルにリストされているすべてのバイナリ ログ ファイルを削除しますログ ファイルの名前または日付。BINARY と MASTER は同義語です。削除されたログ ファイルはインデックス ファイルに記録されているリストからも削除されるため、指定されたログ ファイルはリストの最初になります。このステートメントサーバーがバイナリログを有効にする--log-bin オプションを使用して起動されていない場合、効果はありません。URL: http://dev.mysql.com/doc/refman/5.5/en/purge-binary- logs.html例:PURGE BINARY LOGS TO 'mysql-bin.010';PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';以下は、他のによって提供されるメソッドですネチズンの皆さん、参考にしてください MYSQL マスター/スレーブ レプリケーションは RBR を使用します モードを変更すると、binlog の形式は「ROW」になり、元のキー重複の問題の多くを解決できます。
忙しいマスターデータベース内 サーバー上では、binlog ログ ファイルが急速に大きくなり、定期的にクリアしないと、すぐにハードディスクの容量がいっぱいになってしまいます。
mysqlの自動クリーニングを設定する バイナリ ログ、my.cnf の設定:
expire_logs_days = 10
'%log%' のような変数を表示
set global expire_logs_days = 10;
クリアする前に、対応するバックアップ戦略を使用できます。
show マスター ログ;
MASTER と BINARY は同義語です。
MySQL 5.1.12 以降、次の 3 つのモードを使用して実現できます:
– ステートメントベースのレプリケーション レプリケーション (SBR)、– 行ベースのレプリケーション (行ベースのレプリケーション (RBR)、
–)
混合ベースのレプリケーション (MBR)。
これに対応して、binlog には STATEMENT、ROW、および MIXED の 3 つの形式があります。
MBR モードでは、SBR モードがデフォルトです。
次の状況を除き、実行時に動的に変更できます:
ストレージ プロセスまたはトリガーの途中で
binlog が MIXED モードを採用している場合、以下の状況では、binlog モードは SBR モードから RBR モードに自動的に変更されます。
。
DML ステートメントが NDB テーブルを更新する場合
。関数に UUID() が含まれる場合
。
INSERT DELAYED ステートメントを実行する場合
。UDF を使用する場合
。ビューの作成時など、ビューで RBR を使用する必要がある場合は、UUID() が使用されます。
機能
マスター/スレーブ レプリケーション モードを設定します:
log-bin=mysql-bin
#binlog_format="STATEMENT"
#binlog_format="ROW"
binlog_format="MIXED"
実行時に binlog 形式を動的に変更することもできます。たとえば、
mysql> SET SESSION binlog_format =
'ステートメント';
mysql> SET SESSION binlog_format = 'ROW';
mysql>
SESSION binlog_format = 'MIXED';
mysql> SET GLOBAL binlog_format =
'ステートメント';
mysql> SET GLOBAL binlog_format = 'ROW';
mysql>
GLOBAL binlog_format = 'MIXED';
2 つのモードの長所と短所:
SBR
利点:
長い歴史、成熟したスキル
binlog ファイルのサイズが小さい
binlog にはすべてのデータベース変更情報が含まれており、データベースのセキュリティやその他の状況の監査に使用できます
binlog はレプリケーションだけでなく、リアルタイムの復元にも使用できます
マスタースレーブのバージョンは異なる場合があり、スレーブ サーバーのバージョンはマスター サーバーのバージョンよりも高い場合があります
SBR
欠点:
特に不確実な操作が含まれている場合、すべての UPDATE ステートメントをコピーできるわけではありません。
非決定的な要素を使用して UDF を呼び出す
コピー時に問題が発生する可能性があります。次の関数を使用するステートメントはコピーできません:
* LOAD_FILE()
* UUID()
* USER()
*
FOUND_ROWS()
* SYSDATE() (起動時に –sysdate-is-now オプションが有効でない場合)
INSERT … SELECT
RBR よりも多くの行レベルのロックが生成されます
コピーでフルテーブルスキャンの UPDATE を実行する必要がある場合 (WHERE ステートメントでインデックスが使用されていない場合)、RBR よりも高速である必要があります
より多くの行レベルのロックをリクエストします
AUTO_INCREMENT フィールドを持つ InnoDB テーブルの場合、INSERT ステートメントは他の INSERT をブロックします
ステートメント
一部の複雑なステートメントでは、スレーブ サーバーのリソース消費がより深刻になり、RBR モードでは、変更されたレコードにのみ影響します
ストアド関数 (ストアド プロセスではありません)
) は、呼び出されたときに NOW() 関数を 1 回実行します。これは悪いことにも良いことにもなります
UDF の決定
スレーブサーバーでも実行する必要があります
データテーブルはマスターサーバーとほぼ一致している必要があります。そうでないとレプリケーションエラーが発生する可能性があります
複雑なステートメントの実行時にエラーが発生すると、より多くのリソースが消費されます
あらゆる状況をレプリケートできるため、レプリケーションにとって最も安全で信頼性が高くなります
他のほとんどのデータベース システムのレプリケーション スキルと同じです
ほとんどの場合、スレーブ サーバー上のテーブルに主キーがある場合、レプリケーションは非常に効果的です高速化
次のステートメントをコピーする際の行ロックが少なくなります:
*
INSERT … AUTO_INCREMENT フィールドを含む SELECT
* INSERT
* 条件なし、または多くのレコードを変更せずに UPDATE
または DELETE ステートメント
INSERT、UPDATE、DELETE ステートメントを実行する際のロックが軽減されます
マルチスレッドを使用してサーバーからレプリケーションを実行することが可能です
RBR
欠点:
ビンログが非常に大きくなります
複雑なロールバック中、ビンログには大量のデータが含まれます
メインサーバーでUPDATEを実行します
ステートメントを使用すると、変更されたすべてのレコードが binlog に書き込まれますが、SBR は 1 回しか書き込まないため、binlog の同時書き込みの問題が頻繁に発生します
UDF によって生成される大きな BLOB
この値により、レプリケーションが遅くなります
どのステートメントがコピーされ、書き込まれた (暗号化された) のかはバイナログからは確認できません
非トランザクション テーブルで大量の SQL ステートメントを実行する場合は、SBR を使用するのが最善です
そうしないと、マスターサーバーとスレーブサーバーの間でデータの不整合が発生しやすくなります
さらに、システムライブラリ mysql 内のテーブルの変更の処理ガイドラインは次のとおりです:
INSERT、UPDATE、DELETEでテーブルを直接操作した場合、binlog_format
の設定に従ってログ形式が記録されます
GRANT、REVOKE、SET PASSWORD などの管理ステートメントを使用してこれを行う場合、何があっても SBR モード記録が使用されます。
注: RBR の使用
このモードの実装後、当初発生していた主キーの重複の問題の多くは解決できます。例:
db_allot_ids に挿入するには、* from を選択します
db_allot_ids このステートメント:
BINLOG_FORMAT=STATEMENT
モード:
BINLOG ログ情報は次のとおりです:
————————————–
BEGIN
/*!*/;
# at 173
#090612
16:05:42 サーバー ID 1 end_log_pos 288 クエリ thread_id=4 exec_time=0
error_code=0
SET TIMESTAMP=1244793942/*!*/;
db_allot_ids に挿入
select * from db_allot_ids
/*!*/;
————————————–
BINLOG ログ情報は:
———————————— ———–
ビンログ
'
hA0yShMBAAAAMwAAAOAAAAAAA8AAAAAAAAA1NOUwAMZGJfYWxsb3RfaWRzAAIBAwAA
hA0yShcBAAAANQAAABUBAAAQAA8AAAAAAAEAAv/8AQEAAAD8AQEAAAD8AQEAAAD8AQEAAAA=
'/*!*/;
———————————— ——–
ログをクリアする手順
1. ログ ファイルを検索します
mysql> show binary
ログ;
+----------------+----------+
| ファイル名 |
|
+----------------+----------+
|ablelee.000001 |
|
125 |
| 106
|
+----------------+----------+
2. bin-log を削除します (ablelee.000003 より前のものを削除しますが、含まれていません) ablelee .000003)
mysql>
バイナリ ログを 'ablelee.000003' にパージします。
クエリ OK、影響を受ける行は 0 件 (0.16
秒)
3. クエリ結果 (現在レコードは 1 つだけです。)
mysql> show binlog eventsG
***************** ***** * 1.行
****************************
Log_name:ablelee.000003
位置:
4
イベントタイプ: Format_desc
サーバー ID: 1
End_log_pos: 106
情報: サーバー バージョン: 5.1.26-rc-log、ビンログ バージョン: 4
セット内の 1 行 (0.01
sec)
(ablelee.000001 とablelee.000002 は削除されました)
mysql> バイナリを表示
ログ;
+-----+----------+
| ファイル名 |
|
+----------------+----------+
|
|
+----------------+----------+
セット内の 1 行 (0.00
秒)
(他の形式は削除されました!)
{MASTER BINARY} のログをパージします |
'log_name'
{MASTER BINARY} ログを前にパージします
'date'
指定されたログまたは日付より前の、ログ インデックスにリストされているすべてのバイナリ ログを削除するために使用されます。これらのログは、ログ インデックス ファイルに記録されるリストからも削除され、指定されたログが最初になります。
例:
パージ
マスター ログを 'mysql-bin.010';
'2008-06-22 より前のマスター ログをパージ
13:00:00';
3 日前のバイナリログをクリアします
DATE_SUB( NOW(
), INTERVAL 3 DAY);
BEFORE 変数の日付引数は「YYYY-MM-DD」にすることができます
「hh:mm:ss」形式。 MASTER と BINARY は同義語です。
削除しようとしているログの 1 つを現在読み取っているアクティブなスレーブ サーバーがある場合、このステートメントは機能せず、エラーで失敗します。ただし、スレーブが静止していて、読み取り対象のログの 1 つをたまたまクリアした場合、スレーブは起動後に複製できません。このステートメントは、スレーブ サーバーの複製中に安全に実行できます。彼らを止める必要はありません。
ログをクリアするには、以下の手順に従ってください:
1.
各スレーブで、SHOW SLAVE STATUS を使用して、どのログを読み取っているかを確認します。
2. SHOW MASTERを使用する
LOGS はマスター サーバー上の一連のログを取得します。
3.
すべてのスレーブ サーバーの中で最も古いログを特定します。これが対象のログです。すべてのスレーブ サーバーが最新の場合、これがリストの最後のログになります。
4. 削除するすべてのログのバックアップを作成します。 (このステップはオプションですが、お勧めします。)
5. 対象のログを除くすべてのログをクリーンアップします
上記は、MySQL の binlog ログを自動的にクリーンアップする方法の内容です。その他の関連記事については、 PHP 中国語 Web サイト (www.php.cn) をフォローしてください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









INNODBのフルテキスト検索機能は非常に強力であり、データベースクエリの効率と大量のテキストデータを処理する能力を大幅に改善できます。 1)INNODBは、倒立インデックスを介してフルテキスト検索を実装し、基本的および高度な検索クエリをサポートします。 2)一致を使用してキーワードを使用して、ブールモードとフレーズ検索を検索、サポートします。 3)最適化方法には、単語セグメンテーションテクノロジーの使用、インデックスの定期的な再構築、およびパフォーマンスと精度を改善するためのキャッシュサイズの調整が含まれます。

この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

はい、MySQLはWindows 7にインストールできます。MicrosoftはWindows 7のサポートを停止しましたが、MySQLは引き続き互換性があります。ただし、インストールプロセス中に次のポイントに注意する必要があります。WindowsのMySQLインストーラーをダウンロードしてください。 MySQL(コミュニティまたはエンタープライズ)の適切なバージョンを選択します。インストールプロセス中に適切なインストールディレクトリと文字セットを選択します。ルートユーザーパスワードを設定し、適切に保ちます。テストのためにデータベースに接続します。 Windows 7の互換性とセキュリティの問題に注意してください。サポートされているオペレーティングシステムにアップグレードすることをお勧めします。

完全なテーブルスキャンは、MySQLでインデックスを使用するよりも速い場合があります。特定のケースには以下が含まれます。1)データボリュームは小さい。 2)クエリが大量のデータを返すとき。 3)インデックス列が高度に選択的でない場合。 4)複雑なクエリの場合。クエリプランを分析し、インデックスを最適化し、オーバーインデックスを回避し、テーブルを定期的にメンテナンスすることにより、実際のアプリケーションで最良の選択をすることができます。

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

クラスター化されたインデックスと非クラスター化されたインデックスの違いは次のとおりです。1。クラスター化されたインデックスは、インデックス構造にデータを保存します。これは、プライマリキーと範囲でクエリするのに適しています。 2.非クラスター化されたインデックスストアは、インデックスキー値とデータの行へのポインターであり、非プリマリーキー列クエリに適しています。

記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。
