MySQL DB change events by reading replication logs
Project description
django-myql-migration
MySQL DB change events by reading replication logs. These are useful when the data is directly inserted into the MySQL database.
Installation
Install via pip
pip install django-myql-migration
Add "django_myql_migration"
to your INSTALLED_APPS
settings like this:
INSTALLED_APPS = (
"django_myql_migration",
...
)
Edit my.cnf
to setup replication, as follows:
[mysqld]
log-bin=mysql-bin
server-id=1
binlog-format=row
gtid_mode=ON
log-slave_updates=true
enforce_gtid_consistency
binlog-row-metadata=FULL
binlog-row-image=FULL
Set these environment variables MYSQL_HOST
, MYSQL_PORT
, MYSQL_DATABASE
, MYSQL_SLAVE_USER
, MYSQL_SLAVE_PASSWORD
Add replication user using the following command
mysql -u root -p -h ${MYSQL_HOST} -P ${MYSQL_PORT} ${MYSQL_DATABASE} -e "CREATE USER '${MYSQL_SLAVE_USER}'@'%' IDENTIFIED BY '${MYSQL_SLAVE_PASSWORD}'; GRANT REPLICATION SLAVE, REPLICATION CLIENT, SELECT ON *.* TO '${MYSQL_SLAVE_USER}'@'%';FLUSH PRIVILEGES;"
Usage
There are 3 signals generated by the package: row_inserted
, row_deleted
and row_updated
. You can use the standard Django signal handling mechanism to handle signals. e.g. To know when the user is added to the system, you can create a signals.py
file with the following content
from django_mysql_replication.signals import row_inserted
from django.contrib.auth import get_user_model
User = get_user_model()
@receiver(row_inserted, sender=User)
def user_added(sender, instance, *args, **kwargs):
pass
Run the following command to listen to DB changes
python manage.py listen
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-mysql-replication-0.1.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc8ffb2f8366ff98f3a7dff2c92de86e499b1087a7f6cdd63d9833f5b2e1d892 |
|
MD5 | 2cfc0764944d0a6e1490e430c62aac50 |
|
BLAKE2b-256 | c82301f2a63b23ed9d64318e07c187a58972a65895b7c0db353be493e554e792 |
Hashes for django_mysql_replication-0.1.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9da32b926705c1b85ccaac49812a3b10ddb63334336b7342de187bcd2e8228ed |
|
MD5 | aa11cb0b7c6bd8d9ae8cf9665442d958 |
|
BLAKE2b-256 | 60f1dd490d55281407908ef3933470343c1b37ac94daec5f39727a834343c7d9 |