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

推薦する

MySQL の WriteSet 並列レプリケーションの簡単な分析

【歴史的背景】私は 3 年間 MySQL-DBA として働いてきましたが、MySQL が「基本的に利...

Windows 2016 Server セキュリティ設定

目次システムアップデート構成Windows Update サーバーの変更自動更新を有効にして許可する...

Vueはマルチタブコンポーネントを実装します

効果を直接確認するために、リロード、左を閉じる、右を閉じる、その他の機能を閉じるなどの右クリック メ...

MySQL の on と where における左結合設定条件の使用法の違いの分析

この記事では、MySQL の左結合における on 条件と where 条件の使用法の違いを例を使って...

開発効率の向上に役立つ 56 個の実用的な JavaScript ツール関数

目次1. デジタルオペレーション(1)指定された範囲内で乱数を生成する2. 配列操作(1)配列の順序...

個人履歴書を作成するための HTML の簡単な実装

履歴書コード: XML/HTML コードコンテンツをクリップボードにコピー<!DOCTYPE ...

HTML で JavaScript を使用する

<script> タグHTML5では、スクリプトには次の属性があります: async、d...

純粋なCSS3で実装されたネオンライト効果

達成される効果は次のとおりです。 マウスがボタン内に移動すると、ネオンライトのような効果が生成され、...

HTML チュートリアル: 定義リスト

<br />原文: http://andymao.com/andy/post/104.h...

HTML 内の CSS および JS リンクのバージョン番号 (キャッシュを更新)

背景検索エンジンで「.htaccess キャッシュ」というキーワードを検索すると、ウェブサイトのファ...

Vue3 setup() の高度な使用例の詳細な説明

目次1. オプションAPIと組み合わせAPIの違い2. セットアップを具体的にどのように使用するので...

Javascript イベントキャプチャとバブリングメソッドの詳細な説明

目次1. イベント処理モデル1. イベントバブリング(1)3つのdiv要素にイベントをバインドする(...

Vueにおけるキーの役割と原理の詳細な説明

目次1. 結論から始めましょう2. キーの役割2.1 例2.2 上記の例を修正する2.3 例を再度修...

データ型の判断における js typeof と instanceof の違いと、その開発と使用について

目次1. typeof演算子2. インスタンスオブ演算子3. typeof と instanceof...

Vue プロジェクトで axios リクエストを使用する方法

目次1. インストール2. カプセル化に問題はない3. ファイルを作成する4. アドレス設定をリクエ...