Python MySQL Replication Blinker
July 18, 2016 ยท View on GitHub
.. image:: https://badges.gitter.im/tarzanjw/python-mysql-binlog-to-blinker.svg :alt: Join the chat at https://gitter.im/tarzanjw/python-mysql-binlog-to-blinker :target: https://gitter.im/tarzanjw/python-mysql-binlog-to-blinker?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
Features
This package uses
mysql-replication <https://github.com/noplay/python-mysql-replication>__
to read events from MySQL's binlog and send to blinker's signal.
- binlog action level
- rows level
It will send RowsEvent only.
Whenever a binlog event come, it will be dispatched into some signals:
#. binlog_position_signal: 1 signal for the binlog current position #. binlog_signal: 1 signal for the binlog event. #. rows_signal: 1 signal for event's rows. 1 signal per row.
Signals
There are 5 signals:
binlog_position_signal: sent whenever binlog event come to notify the current position of binlog streambinlog_signal: sent whenever binlog event come to notify the binlog eventrows_inserted_signal,rows_updated_signal,rows_deleted_signal: sent on the event as their name
Connect to signals
To connect to a signal, you can use the signal instance or a decorator.
Suppose that you need to connect to write signal on table db0.table1:
.. code-block:: python
from mysqlbinlog2blinker import signals
@signal.rows_updated.connect
def on_rows_updated_signal(table_name, rows, meta):
pass
@signal.binlog_signal.connect
def on_binlog_signal(event, stream):
pass
Signal publishing
To start publishing signals
.. code-block:: python
from pymysqlblinker import start_publishing
start_publishing(
{
'host': 'localohst',
'user': 'root',
},
)
Replication
This package support a method to replicate from mysql database. It operates by keep memory at last binlog position. By default, it save to a file.
To make it, call:
.. code-block:: python
from pymysqlblinker import start_replication
start_replication(
{
'host': 'localohst',
'user': 'root',
},
('/path/to/file/that/remember/binlog/position', 2),
)
Change logs
0.1
- First version