Rotates mysql tables by using partition method
Project description
Mysql Partition Rotator
This module allows you to simply rotate your data avoiding slow deletes on big tables, this module is inspedired by Rick James go check his page for more details
Features
- Rotates table in daily periods
- Rotates table in hourly periods
- Rotates table in monthly periods
Requires
Python 3 pip
Installation
pip install mysql_partition_rotator
Usage
First create a table with enabled partitioning for example:
CREATE TABLE `test_rotate_daily` (
`dt` datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
PARTITION BY RANGE (TO_DAYS(dt))
(PARTITION `start` VALUES LESS THAN (0) ,
PARTITION from20201001 VALUES LESS THAN (TO_DAYS('2020-10-02')) ,
PARTITION from20201002 VALUES LESS THAN (TO_DAYS('2020-10-03')) ,
PARTITION from20201003 VALUES LESS THAN (TO_DAYS('2020-10-04')) ,
PARTITION from20201004 VALUES LESS THAN (TO_DAYS('2020-10-05')) ,
PARTITION from20201005 VALUES LESS THAN (TO_DAYS('2020-10-06')) ,
PARTITION from20201006 VALUES LESS THAN (TO_DAYS('2020-10-07')) ,
PARTITION future VALUES LESS THAN MAXVALUE )
Then create a partition rotator instance with all the necessary config in order to rotate the table
import pymysql
from pymysql.cursors import DictCursor
import logging
import datetime
from mysql_partition_rotator import RotateDaily
from mysql_partition_rotator import PartitionRotator
connection = pymysql.connect(host='localhost', user='johndoe', password='mypass', database='test', cursorclass=DictCursor)
old_time = datetime.datetime(2020, 10, 3)
new_time = datetime.datetime(2020, 10, 7)
rotate_mode = RotateDaily()
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger()
pr = PartitionRotator(database_instance=connection,
database_name="tests",
table_name="test_rotate_daily",
oldest_partition_time=old_time,
newest_partition_time=new_time,
rotate_mode=rotate_mode,
logger=logger)
pr.rotate()
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
File details
Details for the file mysql_partition_rotator-0.3.tar.gz
.
File metadata
- Download URL: mysql_partition_rotator-0.3.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/1.0.0 urllib3/1.26.16 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03eaa5b53ec34dbc0e6e83e690435fcba02fd40d754b097fc4c0158fd417d9f0 |
|
MD5 | 8982310965a11ff67ba3baf7f60c40b6 |
|
BLAKE2b-256 | a4fe9fb683600cfae5b0a31a1b37ca15be664844f7b23bb54968a2ddf985f6dd |