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

推薦する

docker を使用して複数のネットワーク インターフェースを持つコンテナーを起動する方法の例

コンテナにネットワークインターフェースを追加する1 デフォルトのネットワークモードでコンテナを実行す...

VMware仮想マシンを使用してUbuntu 20.04をインストールする完全なチュートリアル

Ubuntu は比較的人気のある Linux デスクトップ システムです。最近、Ubuntu 20....

CSS の position 属性の値に関する研究 (概要)

CSS の位​​置属性は要素の配置タイプを指定し、上、下、左、右を使用して要素を具体的に配置します...

SQL 集計、グループ化、並べ替え

目次1. 集計クエリ1. COUNT関数2. SUM関数3. AVG関数4. MAX関数とMIN関数...

テキストエリアの disabled 属性と readonly 属性の具体的な使用法

障害者の定義と使用法disabled 属性はブール属性です。 disabled 属性は、テキスト領域...

HTML フレーム、Iframe、フレームセットの違い

10.4.1 フレームセットとフレームの違い まず、フレームセットとフレームの違いについて説明します...

Linux のファイル権限とグループ変更コマンドの詳細な説明

Linux では、すべてがファイルであり (ディレクトリもファイルです)、各ファイルにはユーザーに対...

VMwareを使用したPermeateレンジシステムのインストール手順の詳細説明

1. 背景私たちは時々社内研修を行っており、実験環境をよく利用しています。最初はdockerコンテナ...

Reactはconetxtを通じてマルチコンポーネント値転送関数を実装します

この関数の効果はvue的provide/injectに似ています。 contextを通じて反応できる...

Docker のコンテナ データ ボリュームの概要

目次Dockerコンテナのデータ量データボリュームの使用方法1: コマンド-vを使用して直接マウント...

MySql 認証に基づく vsftpd 仮想ユーザー

目次1. MySQLのインストール1.2 テーブル、データベース、ユーザーを作成する1.3 リモート...

LINUX での IPTABLES ファイアウォールの基本的な使用方法のチュートリアル

序文パブリック IP を持つ本番 VPS の場合、必要なポートのみが開かれ、IP とポートを制御する...

CSS を使用してサブ要素に応じて異なるスタイルを記述する方法

達成すべき効果: 必要なもの1枚、2枚、3枚とスタイルが異なります。子要素の判定はjsで完結できます...

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

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