-
Notifications
You must be signed in to change notification settings - Fork 1.7k
tools
xiaowu edited this page Dec 13, 2023
·
6 revisions
利用percona-toolkit工具集的pt-archiver工具对MySQL数据进行归档
-
需要下载percona-toolkit,安装在Archery部署机器上面
以docker部署方式举例
- 以docker方式部署,基础镜像默认是centos7
- 下载对应toolkit包:
- 将下载好的rpm包放到archery容器内
- 执行解压命令,即可完成安装:
rpm2cpio percona-toolkit-3.5.5-1.el7.x86_64.rpm|cpio -div
-
在系统配置中配置设置数据归档申请审批流程
-
在管理后台django_q/schedule增加schedule配置,用于定时归档,可配置多个schedule在不同的时间调度归档任务,配置的func设置为
sql.archiver.add_archive_task
,Args填写归档配置ID列表(不填写则默认调度所有配置),如[1,2],schedule仅会获取审核通过+启用状态的配置 -
暂时还没有归档状态的通知,可以自行写脚本查询相关表的数据
权限CODE | 权限名称 | 权限说明 |
---|---|---|
menu_archive | 菜单 数据归档 | 菜单权限 |
archive_apply | 提交归档申请 | 可以提交数据归档申请 |
archive_review | 审核归档申请 | 可以审核数据归档申请 |
archive_mgt | 管理归档申请 | 可以启用禁用归档配置 |
官方文档:https://www.percona.com/doc/percona-toolkit/3.0/pt-archiver.html
除前台可以修改的参数外,还有以下默认的归档参数,无法修改
{
"no-version-check": True,
"progress": 5000,
"statistics": True,
"limit": 10000,
"txn-size": 1000,
"bulk-insert": True,
"bulk-delete": True,
}
- 增加归档配置
可以由用户主动申请,审核通过,也可以由管理用户直接在添加 - 修改归档配置
管理员可以修改、禁用启用归档配置 - 立即归档
管理用户可以手动触发归档,该动作仅执行一次
功能类似于Binlog2SQL,通过多线程以更高的性能快速解析binlog。支持回滚、去除主键、去db前缀及分表输出文件等多种解析模式,并拥有完备的过滤筛选项;支持异步获取文件,并且通知执行结果,项目地址
权限CODE | 权限名称 | 权限说明 |
---|---|---|
menu_my2sql | 菜单 My2SQL | 该权限包括菜单和操作权限 |
- 安装My2SQL,以centos为例,docker镜像已包含
方法1.手动编译
yum -y install golang
mkdir -p /root/go/src
cd /root/go/src
git clone https://github.com/liuhr/my2sql.git && cd my2sql/
go build .
方法2.下载已编译二进制文件
wget https://raw.githubusercontent.com/liuhr/my2sql/master/releases/centOS_release_7.x/my2sql -O my2sql \
chmod a+x my2sql
- 在系统管理-配置项管理中修改MY2SQL为程序路径,docker部署的请修改为'/opt/archery/src/plugins/my2sql'
对比不同数据库的Schema信息,输出修改语句和回滚语句,SchemaSync不仅限于表结构,它可以处理的对象还有:视图、事件、存储过程、函数、触发器、外键,项目地址
- 安装SCHEMASYNC(依赖Python2),以centos为例,docker镜像已包含
virtualenv venv4schemasync --python=python2 \
source venv4schemasync/bin/activate \
yum install -y python-devel \
pip install schema-sync mysql-python
- 在系统管理-配置项管理中修改SCHEMASYNC为程序路径,路径需要完整,docker部署的请修改为'/opt/venv4schemasync/bin/schemasync'