MySQL データ アーカイブ ツール mysql_archiver の詳細な説明

MySQL データ アーカイブ ツール mysql_archiver の詳細な説明

I. 概要

MySQL データベースに履歴データをアーカイブするには、主に次の 3 つの方法があります。1. SP を作成して書き込み、イベントを設定する。2. ダンプを使用してインポートおよびエクスポートする。3. pt-archiver ツールを使用してアーカイブする。最初の方法は、同じインスタンス要件によって制限されることが多く、放棄されることがよくあります。 2 番目のタイプはパフォーマンスが比較的優れていますが、アーカイブ テーブルが多数ある場合は、運用と保守も面倒です。そのため、多くの DBA は 3 番目の方法である pt-archiver を使用することが多いです。

pt-archiver は Percona-Toolkit ツールセットのコンポーネントであり、主に MySQL テーブル データをアーカイブおよびクリアするために使用されるツールです。データを別のテーブルまたはファイルにアーカイブできます。 pt-archiver は、テーブル データをクリアするプロセス中に OLTP トランザクションのクエリ パフォーマンスに影響を与えません。データをアーカイブする場合は、別のサーバー上の別のテーブルまたはファイルにアーカイブできます。

あるネットユーザーが、Python を使って pt-archiver を小さなツール mysql_archiver に開発しました。基本的には、アーカイブ ジョブの構成可能な展開を実現しており、非常に使いやすいです。 「MySQL_archiver は、基本的に、データ アーカイブの自動操作、アーカイブ タスクの統合スケジュール管理、自動監視と早期警告、自動レポート生成を実現します。ある程度、生産性を節約し、運用と保守の効率を向上させます。」

GitHub アドレス: https://github.com/dbarun/mysql_archiver

2. pt-archiverの主なパラメータ

パラメータデフォルト値パラメータの説明
--スレーブラグをチェックマスターとスレーブ間のレプリケーション遅延がオプション '--max-lag' で指定された値を超えた後にアーカイブ操作を一時停止することを指定します。デフォルトでは、ツールはすべてのスレーブ ライブラリをチェックしますが、このオプションは指定されたスレーブ ライブラリ (DSN 経由で接続) でのみ機能します。
--チェック間隔1秒オプション '--check-slave-lag' が同時に指定されている場合、このオプションで指定された時間は、マスターとスレーブ間のレプリケーションの遅延を検出したときにツールが一時停止する時間になります。このチェックは 100 行ごとに実行されます。
--[no]文字セットをチェックはい接続時のデータベース文字セットがテーブル文字セットと同じであることを確認するために指定します。
--コミットごとフェッチおよびアーカイブごとに可能な限り多くの行をコミットすることを指定します。このオプションは '--txn-size' オプションを無効にします。 テーブル データの取得とアーカイブのたびに、次のデータ取得とオプション '--sleep' で指定されたスリープ時間の前に、トランザクションがコミットされ、オプション '--file' で指定されたファイルが更新されます。トランザクションのサイズは、オプション '--limit' によって制御されます。
--ホスト、-h接続するデータベースの IP アドレスを指定します。
--ポート、-P接続するデータベース ポートを指定します。
--ユーザー、-u接続のデータベース ユーザーを指定します。
--パスワード、-p接続用のデータベース ユーザー パスワードを指定します。
--ソケット、-S接続に SOCKET ファイルを使用するように指定します。
--データベース,-d接続するデータベースを指定します
- ソースアーカイブする必要があるテーブルを指定します。このオプションは必須であり、DSN 形式で表現されます。
--宛先DSN を使用して、アーカイブする対象テーブルを指定します。 このオプションが指定されていない場合、デフォルトはオプション '--source' で指定されたものと同じソース テーブルになります。
- どこWHERE 条件文を通じてアーカイブするデータを指定します。このオプションは必須オプションです。 「WHERE」キーワードを追加する必要はありません。制限する WHERE 条件が不要な場合は、「--where 1=1」を指定します。
- ファイルテーブル データをアーカイブする必要があるファイルを指定します。 MySQL DATE_FORMAT() に似た形式を使用します。 ファイルの内容は、MySQL の SELECT INTO OUTFILE ステートメントと同じ形式を使用します。 ファイルの命名オプションは次のとおりです: ' %Y: 年、数値、4 桁 %m: 月、数値 (01..12) %d: 日、数値 (01..31) %H: 時間 (00..23) %i: 分、数値 (00..59) %s: 秒 (00..59) %D: データベース名 %t: テーブル名 例: --file '/var/log/archive/%Y-%m-%d-%D.%t' '
--出力フォーマットオプション '--file' によって出力されるファイル コンテンツの形式を指定します。 デフォルトでは、このオプションが指定されていない場合、タブ文字がフィールド区切り文字として使用されます。このオプションが指定されている場合は、フィールド区切り文字として ',' (カンマ) が使用され、フィールドを囲むために '"' (二重引用符) が使用されます。使用例: '--output-format=dump'。
--制限1ステートメントごとにテーブルおよびアーカイブ テーブルから取得する行数を指定します。
--最大ラグ1秒マスター-スレーブ レプリケーションの最大許容遅延時間を秒単位で指定します。各行データの取得後にマスタースレーブ遅延が指定値を超えると、アーカイブ操作は中断され、中断スリープ時間はオプション '--check-interval' で指定された値になります。スリープ時間が終了したら、マスタースレーブ遅延を再度確認します。確認方法は、データベースから照会された「Seconds_Behind_Master」値を決定することです。マスターとスレーブ間のレプリケーションの遅延が常にこのパラメータで指定された値よりも大きい場合、またはスレーブがレプリケーションを停止した場合、操作はスレーブが再起動され、遅延がこのパラメータで指定された値よりも小さくなるまで待機します。
--削除しないアーカイブされたテーブル データを削除しないことを指定します。
- 進捗進行状況情報、現在の時刻、経過時間、アーカイブする行数を印刷する行数を指定します。
- パージアーカイブ操作の代わりにパージ操作を実行するように指定します。オプション '--dest' および '--file' を無視できます。 単にクリア操作を行う場合は、オプション '--primary-key-only' と組み合わせるとより効率的になります。
- 交換する書き込みオプション '--dest' を指定して宛先テーブルを指定すると、INSERT ステートメントは REPLACE ステートメントとして書き換えられます。
--再試行1アーカイブ操作でデッドロックまたはタイムアウトが発生した場合に実行される再試行回数を指定します。再試行回数がこのオプションで指定された値を超えると、ツールはエラーで終了します。
- ランタイムツールのアーカイブ操作を終了する前に実行する必要がある時間を指定します。使用できる時間接尾辞は、s=秒、m=分、h=時間、d=日です。指定しない場合は、デフォルトは s です。
--[no]安全な自動増分はいAUTO_INCREMENT 列の最大値に対応する行をアーカイブしないように指定します。 このオプションは、アーカイブおよびパージを実行するときに追加の WHERE 句を追加して、単一列の昇順フィールドの AUTO_INCREMENT 属性の最大値を持つデータ行がツールによって削除されるのを防ぎます。これにより、データベースの再起動後も AUTO_INCREMENT の対応する値が引き続き使用されますが、これにより、フィールドの最大値に対応する行はアーカイブまたはパージできなくなります。
- 寝るSELECT ステートメントを通じてアーカイブ データを取得するときにツールがスリープする必要がある時間を指定します。デフォルト値はスリープなしです。トランザクションはスリープ前にコミットされず、オプション '--file' で指定されたファイルはフラッシュされません。オプション '--commit-each' が指定されている場合、スリープする前にトランザクションのコミットとファイルのフラッシュが実行されます。
- 統計ツールが操作のタイミング統計を収集して印刷することを指定します。
--txnサイズ1トランザクションごとに処理する行数を指定します。 0 の場合、トランザクションは無効になります。
--なぜ終了したのかアーカイブする行数を完了できなかったためにツールが終了したときに、その理由を出力するように指定します。 このオプションは、自動アーカイブ タスクを実行するときにオプション '--run-time' と一緒に使用すると非常に便利で、アーカイブ タスクが指定された時間内に完了したかどうかを判断できます。オプション '--statistics' も指定されている場合は、すべての終了理由が出力されます。
--外部キーチェックをスキップSET FOREIGN_KEY_CHECKS = 0 ステートメントを使用して、外部キー チェックを無効にするように指定します。

3. mysql_archiverのインストールと展開における一般的なエラー

1. python db_archive_exec.py 127.0.0.1 db123を実行するとエラーが報告されます

トレースバック(最新の呼び出しが最後):
ファイル "/data/mysql_archiver/mysql_archiver-master/db_archive_exec.py"、<module> の 7 行目
db_connをインポートする
ファイル "/data/mysql_archiver/mysql_archiver-master/db_conn.py"、<module> の 4 行目
MySQLdbをインポートする
ImportError: MySQLdb という名前のモジュールがありません

解決:

ステップ1 基本環境

rm -rf /etc/yum.repos.d/epel*
yum で postgresql-devel と python3-devel をインストールします。 postgresql-devel と python-devel

ステップ2: setuptoolsをインストールする

(1) setuptools-39.2.0.zipをダウンロードする
(2)解凍してpython setup.pyビルドをインストールする
    python setup.py インストール

ステップ3 pipをインストールする

(1) pip-1.5.4.tar.gzをダウンロードする
(2)python setup.py installをインストールする

ステップ4 MySQL-pythonをインストールする

yum で MySQL-python をインストールします

2. pt-archiverツールが見つからないというエラーを報告する

sh: pt-archiver: コマンドが見つかりません

解決:

percona-toolkit-3.2.1_x86_64.tar.gz をダウンロードしてインストールし、ソフト リンクを設定します。

例えば:

ln -s /data/mysql_archiver/percona-toolkit-3.2.1/bin/pt-archiver /usr/local/bin/pt-archiver

3. 文書の不足

<type '例外.Exception'>
[Errno 2] そのようなファイルまたはディレクトリはありません: u'/software/python_script/db_archive_XXXXdb_XXXtablename.log'

解決:

ファイルを作成する: /software/python_script

4. 文字セットの問題

文字セットの不一致: --source DSN は utf8 を使用し、テーブルは utf8mb4 を使用します。--no-check-charset を指定すると、このチェックを無効にできます。

解決:

db_archive_exec.py実行ファイルを変更し、pt-archiverのパラメータ--no-check-charsetを追加します。

5. パラメータ設定エラー

使用方法: pt-archiver [オプション] --source DSN --where WHERE

コマンドライン引数のエラー:
 * --txn-size と --commit-each は相互に排他的です。

pt-archiverはMySQLテーブルからレコードを取得します。--sourceと--dest
引数はDSN構文を使用します。COPYがyesの場合、--destはデフォルトでキーの値になります。
--sourceから。詳細については、--helpオプションを使用するか、'perldoc
完全なドキュメントについては、「/usr/local/bin/pt-archiver」を参照してください。

解決:

pt-archiverはパラメータ--commit-eachを削除します

6. エンコーディング「utf8mb4」が見つかりません

エラーメッセージ:

/usr/local/bin/pt-archiver の 6711 行目にエンコーディング "utf8mb4" が見つかりません。

解決:

pt-archiver はパラメータ --bulk-insert --bulk-delete を削除します

IV. 主な参考資料

1. MySQLデータアーカイブの実践 - Pythonとpt-archiverの強力な組み合わせ

https://blog.csdn.net/n88lpo/article/details/78905528?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-14&spm=1001.2101.3001.4242

2.MySQLデータアーカイブツール

https://github.com/dbarun/mysql_archiver#readme

3. LinuxでMySQLdbと基本操作をインストールする

https://www.cnblogs.com/blogsme/archive/2012/12/12/2814588.html

4.pt ツール pt-archiver

https://www.cnblogs.com/yhq1314/p/10601801.html

5. Linuxでのpipのインストール手順と詳細な使用方法

https://www.jb51.net/article/118035.htm

6. Percona-Toolkit の pt-archiver の概要

https://www.cnblogs.com/dbabd/p/10721857.html

MySQLデータアーカイブツールmysql_archiverの詳細な説明については、これで終わりです。MySQLデータアーカイブに関するより関連性の高いコンテンツについては、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 圧縮アーカイブファイルを使用して Windows に MySQL をインストールする手順
  • Oracleデータベースのアーカイブログがディスク領域を占有する問題を解決します
  • データベース ORA-01196 障害 - アーカイブ ログ損失回復の詳細な説明
  • パーティション データの自動循環アーカイブ用の SQL Server スクリプトの詳細な説明
  • Oracle のアーカイブ モード ORACLE データベース アーカイブ ログの一般的なコマンド

<<:  JS は Web ページナビゲーションバーの特殊効果を実現します

>>:  マークアップ言語 - CSS レイアウト

推薦する

CSS における px、rem、em、vh、vw の違いを簡単に分析します

絶対長さピクセルpx はピクセル値であり、メートルやセンチメートルのような固定の長さです。相対的な長...

CentOS7.6にMYSQL8.0をインストールする詳細な手順

1. 一般的に、CentOS では mariadb がデフォルトでインストールされているため、まず ...

Avue でカスタム検索バーを実装し、検索イベントをクリアする実践

目次1. 検索バーの内容をカスタマイズする2. 検索ボタンをカスタマイズする検索バーをカスタマイズし...

IE アドレスバーのアイコン表示問題を解決する 3 つの手順

<br />この Web ページ制作スキル チュートリアルは、Web サイトのアイコンを...

将来的に人気のあるウェブサイトのナビゲーションの方向

<br />今は情報爆発の時代であるだけでなく、サービス爆発の時代でもあります。それはす...

MySQLのあいまいクエリインデックスの失敗の問題を解決するいくつかの方法

% ワイルドカードを使用すると、インデックス失敗の問題が発生することがよくあります。ここでは、lik...

CSS3のtext-fill-colorプロパティの詳細な説明

text-fill-color とは何を意味しますか?文字通りの意味から言えば、「テキストの塗りつぶ...

MAC で Mysql5.7.10 のルートパスワードを変更する方法

まず、MySQLをskip-grant-tablesモードで起動します: mysqld --skip...

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

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

JS ES6 非同期ソリューション

目次最初にコールバック関数を使用するes6 非同期処理モデルこの非同期モデルに合わせたAPI: pr...

MySQL の自己結合重複排除に関する注意事項

機能シナリオを簡単に説明しましょう。データ行フィールドは次のとおりです。名前開始日時タイプこの表では...

画像マーキー効果を実現するネイティブJS

今日は、ネイティブ JS で実装された画像マーキー効果を紹介します。効果は次のとおりです。 実装され...

MySQL 5.7.17 圧縮パッケージのインストールと設定方法のグラフィックチュートリアル

インターネット上にはMySQL 5.7.17のインストールチュートリアルがほとんどなく不十分なので、...

MySQL例外に対する一般的な解決策をいくつか分析する

目次序文1. コードによって設定されたデータベース名またはパスワードがローカルデータベースと一致して...

mysql バックアップ戦略の実装 (フルバックアップ + 増分バックアップ)

目次設計シナリオ技術的なポイントサーバー情報準備フルバックアップスクリプト(Mysql-FullyB...