GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

noplay

python-mysql-replication – Pure Python PyMYSQLの上に構築されたMySQLレプリケーションプロトコルの実装

投稿日:

Pure Python PyMYSQLの上に構築されたMySQLレプリケーションプロトコルの実装

python-mysql-replication

Pure Python PyMYSQLの上に構築されたMySQLレプリケーションプロトコルの実装。 これにより、挿入、更新、削除、データと生のSQL問合せなどのイベントを受け取ることができます。

ユースケース

  • MySQLからNoSQLデータベースへのレプリケーション
  • MySQLは検索エンジンのレプリケーションに
  • データベース内の何かが変更されたときにキャッシュを無効にする
  • 監査
  • リアルタイム解析

ドキュメンテーション

作業中のドキュメントはhttps://python-mysql-replication.readthedocs.org/en/latest/から入手できます。

ドキュメントの作成方法については、 https//python-mysql-replication.readthedocs.org/en/latest/developement.htmlを参照してください。

インストール

pip install mysql-replication

メーリングリスト

新しい機能についてのサポートやディスカッションについては、次のURLをご覧くださいhttps : //groups.google.com/d/forum/python-mysql-replication

プロジェクトのステータス

このプロジェクトは以下を使ってテストされています:

  • MySQL 5.5,5.6、および5.7
  • Python> = 2.7
  • Python 3.3,3.4,3.5、および3.6(3.2はサポートされていません)
  • PyPy(標準のPythonインタプリタよりも速い)

このプロジェクトは、一部の中堅インターネット企業のクリエイティブに使用されています。 しかし、すべてのユースケースは現実世界で完全にテストされていないため、

制限事項

https://python-mysql-replication.readthedocs.org/en/latest/limitations.html

このライブラリを使用しているプロジェクト

MySQLサーバ設定

あなたのMySQLサーバ設定ファイルでは、複製を有効にする必要があります:

[mysqld]
server-id		 = 1
log_bin			 = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size  = 100M
binlog-format    = row #Very important if you want to receive write, update and delete row events

すべての例はexamplesディレクトリにあります

この例では、すべてのレプリケーションイベントをコンソールにダンプします。

from pymysqlreplication import BinLogStreamReader

mysql_settings = {'host': '127.0.0.1', 'port': 3306, 'user': 'root', 'passwd': ''}

stream = BinLogStreamReader(connection_settings = mysql_settings, server_id=100)

for binlogevent in stream:
    binlogevent.dump()

stream.close()

このSQLセッションの場合:

CREATE DATABASE test;
use test;
CREATE TABLE test4 (id int NOT NULL AUTO_INCREMENT, data VARCHAR(255), data2 VARCHAR(255), PRIMARY KEY(id));
INSERT INTO test4 (data,data2) VALUES ("Hello", "World");
UPDATE test4 SET data = "World", data2="Hello" WHERE id = 1;
DELETE FROM test4 WHERE id = 1;

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

=== RotateEvent ===
Date: 1970-01-01T01:00:00
Event size: 24
Read bytes: 0

=== FormatDescriptionEvent ===
Date: 2012-10-07T15:03:06
Event size: 84
Read bytes: 0

=== QueryEvent ===
Date: 2012-10-07T15:03:16
Event size: 64
Read bytes: 64
Schema: test
Execution time: 0
Query: CREATE DATABASE test

=== QueryEvent ===
Date: 2012-10-07T15:03:16
Event size: 151
Read bytes: 151
Schema: test
Execution time: 0
Query: CREATE TABLE test4 (id int NOT NULL AUTO_INCREMENT, data VARCHAR(255), data2 VARCHAR(255), PRIMARY KEY(id))

=== QueryEvent ===
Date: 2012-10-07T15:03:16
Event size: 49
Read bytes: 49
Schema: test
Execution time: 0
Query: BEGIN

=== TableMapEvent ===
Date: 2012-10-07T15:03:16
Event size: 31
Read bytes: 30
Table id: 781
Schema: test
Table: test4
Columns: 3

=== WriteRowsEvent ===
Date: 2012-10-07T15:03:16
Event size: 27
Read bytes: 10
Table: test.test4
Affected columns: 3
Changed rows: 1
Values:
--
* data : Hello
* id : 1
* data2 : World

=== XidEvent ===
Date: 2012-10-07T15:03:16
Event size: 8
Read bytes: 8
Transaction ID: 14097

=== QueryEvent ===
Date: 2012-10-07T15:03:17
Event size: 49
Read bytes: 49
Schema: test
Execution time: 0
Query: BEGIN

=== TableMapEvent ===
Date: 2012-10-07T15:03:17
Event size: 31
Read bytes: 30
Table id: 781
Schema: test
Table: test4
Columns: 3

=== UpdateRowsEvent ===
Date: 2012-10-07T15:03:17
Event size: 45
Read bytes: 11
Table: test.test4
Affected columns: 3
Changed rows: 1
Affected columns: 3
Values:
--
* data : Hello => World
* id : 1 => 1
* data2 : World => Hello

=== XidEvent ===
Date: 2012-10-07T15:03:17
Event size: 8
Read bytes: 8
Transaction ID: 14098

=== QueryEvent ===
Date: 2012-10-07T15:03:17
Event size: 49
Read bytes: 49
Schema: test
Execution time: 1
Query: BEGIN

=== TableMapEvent ===
Date: 2012-10-07T15:03:17
Event size: 31
Read bytes: 30
Table id: 781
Schema: test
Table: test4
Columns: 3

=== DeleteRowsEvent ===
Date: 2012-10-07T15:03:17
Event size: 27
Read bytes: 10
Table: test.test4
Affected columns: 3
Changed rows: 1
Values:
--
* data : World
* id : 1
* data2 : Hello

=== XidEvent ===
Date: 2012-10-07T15:03:17
Event size: 8
Read bytes: 8
Transaction ID: 14099

テスト

可能であれば単体テストがあります。

詳細はこちらをご覧くださいhttps : //python-mysql-replication.readthedocs.org/en/latest/developement.html

変更ログ

https://github.com/noplay/python-mysql-replication/blob/master/CHANGELOG

類似のプロジェクト

特別な感謝

貢献者

主な寄稿者:

その他の寄稿者:

サポートのためにGetResponseに感謝します

ライセンス

Copyright 2012-2017 Julien Duponchelle

Apache License、Version 2.0(以下「ライセンス」)の下でライセンスされています。 ライセンスに従わない限り、このファイルを使用することはできません。 あなたはライセンスのコピーを

http://www.apache.org/licenses/LICENSE-2.0

適用法または書面による合意が必要な場合を除き、本ライセンスに基づいて配布されるソフトウェアは、明示的または黙示的にいかなる種類の保証または条件もなく「現状有姿」で配布されます。 ライセンスに基づいて許可および制限を規定する特定の言語については、ライセンスを参照してください。







-noplay
-, , ,

執筆者: