Languages: English
这是一款适用于MySQL跨服务器归档场景的工具。能够实现把A实例的数据转移到B实例上。目前支持单表归档、多表联级归档,满足大多数归档需求。 使用时您只需通过YAML定义好归档参数(如批次大小、归档间隔、事务隔离级别等)、归档规则即可。剩下的循环归档动作交由mysql-archiver
去执行~
- 请准备好您的Docker环境或者Golang环境(要求>=1.21.10)
- 运行编译脚本
build.sh
- 根据自己的需求修改YAML配置文件(查看配置文件说明)
- 运行程序
global: batch_size: 100 # 归档批次大小; 即每张表按照条件抽取多少行数据 sleep: 1s # 批次间隔 datasource: # 数据源的配置 transaction_isolation: REPEATABLE READ # 源库事务隔离级别 src: # 源库 账号密码库名... addr: 127.0.0.1:3306 user: root pass: "1234" dbname: test dst: # 归档目标库 addr: 192.168.66.3:3306 user: root pass: "123456" dbname: aaa rules: # 归档规则配置(每条规则按配置顺序从上往下执行,直到当前表数据全部归档完毕才会开始进行下一张表的归档) # 单表归档示例 - table: ApplicationLogs where: CreationTime < DATE_SUB(DATE(NOW()), INTERVAL 6 MONTH) pk: Id # 多表联级归档示例 - table: Orders # 主表名 where: 1=1 # 归档条件 pk: Id # 主键名 deps: # 子表依赖项 - table: OrderDetails # 子表名 pk: DetailId # 子表主键名 key: OrderId # 与主表主键关联的键名 - table: products where: 1 = 1 pk: product_id deps: - table: product_packages pk: package_id key: product_id deps: - table: package_barcodes pk: barcode_id key: package_id