Python ベースの MySQL レプリケーション ツールの詳細な説明

Python ベースの MySQL レプリケーション ツールの詳細な説明

1. はじめに

python-mysql-replication は、Python で実装された MySQL レプリケーション プロトコル ツールです。これを使用して binlog を解析し、ログ内の挿入、更新、削除などのイベントを取得し、これに基づいて他のビジネス ニーズを満たすことができます。たとえば、データが変更されると、キャッシュが無効になり、DML イベントがリッスンされて、下流のビジネス パーティに対応するアクションを実行するように通知されます。

プロジェクト情報

2回目の練習

2.1 インストールと設定

ソースコードを入手する

git クローン http://www.github.com/noplay/python-mysql-replication

pipを使用してインストールする

pip install mysql-replication

権限: レプリケーション アカウントを直接使用することも、他のアカウントを使用することもできますが、アカウントには SELECT、REPLICATION SLAVE、REPLICATION CLIENT 権限が必要です。

'replicator'@'%' ('xxxxx' によって識別) に SELECT、REPLICATION SLAVE、REPLICATION CLIENT ON を付与します。

データベース ログに関連するパラメータ設定は次のとおりです。

log_bin=オン、binlog_format=行、binlog_row_image=FULL

2.2 コアクラスの紹介

python-mysql-replicationのエントリ ポイントは、クラス BinLogStreamReader() です。このツールを使用する場合は、BinLogStreamReader() オブジェクト ストリームをインスタンス化する必要があります。BinLogStreamReader は、ReportSlave を介してマスター データベースにスレーブ ロールとして登録し、MySQL binlog ブロードキャストを受信します。興味のある人は、そのコードの具体的な実装を研究することができます。

このインスタンスは、binlog を解析するためのさまざまなイベントのコレクションを提供し、各イベントもオブジェクトです。

BinLogStreamReader() インスタンスを初期化するために必要なパラメータは次のとおりです。

2.3 使い方は?

最も簡単な使用スクリプト名は pyreplica.py です。

2つのウィンドウを開きます。1つは実行用、もう1つはmysqlでデータの書き込みや変更を行うためのウィンドウです。

python pyreplica.py

出力は次のようになります。

2.3 拡張

このツールが提供するログ イベント分析に基づいて、さまざまなことを行うことができます。より有名なツールである binlog2sql は、このツールを使用して binlog を解析し、データのロールバックを行います。

mysql-replication.py

スクリプトを実行した結果は次のようになります。

binlog の解析に加えて、 thon-mysql-replicationを使用して完全なデータ移行と増分データ移行を実行することもできます。たとえば、データベース全体ではなく、いくつかの大きなテーブルのみを移行する場合に使用できます。興味のある友人は近似アルゴリズムについて考えることができます。

要約する

上記は編集者が紹介したPythonベースのMySQLレプリケーションツールです。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、編集者がすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Python で書かれた MySQL 管理ツールのコード例
  • PythonはExcelを読み取ってMySQLに書き込む小さなツールを実装します
  • MySQLデータベースを操作するPythonの簡単な手順を共有する
  • Python クローラーが世界の流行データをクロールし、MySQL データベースに保存する手順
  • Python が Tencent のリアルタイムの流行データをクロールし、MySQL データベースに保存するサンプル コード
  • Python MySQL挿入文の問題を解決する
  • PythonはMySQLにnull値を挿入します
  • PythonはMySQLの指定されたテーブルの増分データをClickhouseに同期するスクリプトを実装します
  • Pythonを使ってMySQLを操作する小さなツールを開発する

<<:  vuex データの永続化のための 2 つの実装ソリューション

>>:  Ubuntu システムに Theano と Keras をインストールする方法

推薦する

Linux環境でユーザーにsudo権限を追加する方法

sudo 設定ファイルsudo のデフォルトの設定ファイルは /etc/sudoers です。一般的...

Spring Boot 階層化パッケージング Docker イメージの実践と分析 (推奨)

目次1. Springbootプロジェクトを準備する2. 関連する設定を実行する3.パッケージ4.D...

Vue px to rem 構成の詳細な説明

目次方法1 1. 構成とインストールの手順:方法2方法3要約する方法1 1. 構成とインストールの手...

js クロージャとガベージ コレクション メカニズムの例の詳細な説明

目次序文文章1. 終了1.1 クロージャとは何ですか? 1.2 クロージャの特性1.3 クロージャを...

MySQLとOracleの違いのまとめ(機能性能の比較、選択、使用時のSQLなど)

1. 同時実行性同時実行性は OLTP データベースの最も重要な機能ですが、同時実行性にはリソース...

MySQLテーブルパーティショニングプログラムを変更する方法

MySQLテーブルパーティショニングプログラムを変更する方法1. サブテーブルの実装の原則は次のとお...

HTMLタグの書き方でよくある間違い

注意を払う必要があります。HTML Police がコードを調べて、意味のないタグをすべて見つけ出す...

XHTML 入門チュートリアル: XHTML タグ

XHTML タグの紹介<br />おそらく、前のセクションで、XHTML ファイルと通常...

mysql replace into の使用法の詳細な説明

replace ステートメントは、一般的に insert ステートメントに似ています。ただし、テーブ...

JavaScript の例におけるループの使用法の詳細な説明

退屈だったので、ループに関する簡単な演習をいくつかまとめてみました。JS を学び始めたばかりの方に役...

JavaScript setinterval 1秒遅延ソリューション

setinterval を使用すると、ページを開いた直後に 1 秒の遅延後に実行されることがわかりま...

CSS3 で QR コードスキャン効果を実装する例

オンラインプレビューhttps://jsrun.pro/AafKp/まず効果を見てみましょう:最初の...

WeChatアプレットのオーディオコンポーネントがiOSで再生できない問題の解決策

解決策:クリック イベントをオーディオ コンポーネントにバインドし、再生メソッドと一時停止メソッドを...

ニューススタイルのウェブサイトデザイン例25選

bmi ボイジャーピッチフォークアルスター食料品店チャウ真/斜めポスタこれは偽のDIYですクリエイテ...