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 をインストールする方法

推薦する

検索エンジンのウェブサイトの入り口の無料コレクション

1: Baiduウェブサイトログイン入口ウェブサイト: http://www.baidu.com/s...

Apache Bench で Web ストレス テストを実装する方法

1. Apache Benchの紹介ApacheBench は、Apache サーバーに付属する W...

nginx が動的と静的の分離を実装する方法の例

目次server1にnginxをデプロイするサーバーにlnmpを展開するノード3にhttpdをデプロ...

自作メニューをクリックする効果を実現するJavaScript

この記事では、自作メニューをクリックする効果を実現するためのJavaScriptの具体的なコードを参...

WindowsとLinux間でファイルを転送する方法

WindowsとLinux間のファイル転送(1)WinSCPを使用して、WindowsファイルをLi...

順序再構築に関する簡単な説明: MySQL シャーディング

目次1. 目的2. 環境整備1. 基本情報2. データベース環境の準備3. データベースを構築し、サ...

JavaScript におけるイベント バブリング メカニズムの詳細な分析

バブリングとは何ですか? DOM イベント フローには、イベント キャプチャ ステージ、ターゲット ...

js 属性オブジェクトの hasOwnProperty メソッドの使用

オブジェクトの hasOwnProperty() メソッドは、オブジェクトに特定の独自の (継承され...

Nginx転送マッチングルールの実装

1. 正規表現マッチング大文字と小文字を区別するマッチングの場合 ~ ~*は大文字と小文字を区別しな...

HTML の基本 - ハイパーリンク スタイルを設定する簡単な例

*** ハイパーリンクのスタイル設定の例a:link クリックされる前のハイパーリンクの状態a:vi...

ウェブアニメーションのフレームレートFPSを計算する方法

目次スムーズなアニメーションの基準方法1: Chromeデベロッパーツールを使用する方法 2: フレ...

ウェブページの画像を素早く表示する方法とテクニック

1. .jpg ではなく .gif を使用します。GIF は JPG に比べてサイズが小さくなります...

IOSデータベースアップグレードデータ移行の詳細な例

IOSデータベースアップグレードデータ移行の詳細な例まとめ:昔、データベースのバージョン アップグレ...

入力ボックスのオートコンプリート機能をオフにする

これで、autocomplete と呼ばれる input の属性を使用できるようになりました。オート...

Docker のポート解放失敗の解決策

今日、非常に奇妙な状況に遭遇しました。docker イメージを更新した後、docker-compos...