MySQL数据同步&归档使用工具总结

数据迁移方式&工具总结

kettel的使用

1、中文网: http://www.kettle.org.cn/

2、下载地址

3、使用kettle进行数据迁移

3.1 打开文件夹,运行spoon.bat

3.2 点击文件,新建转换

3.3 新建数据库连接,一个为源数据库,另一个为目的数据库

3.4 建立表输入和表输出(表输入为源数据表,表输出为要写入的表)

3.5 点击运行转换,即可进行数据迁移

注:运行过程中出现问题可查看下方控制台中的日志。

dataX的使用

1、datax下载

相关文档:https://developer.aliyun.com/article/59373

github地址:https://github.com/alibaba/DataX.git

安装包快速下载:https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202308/datax.tar.gz

复制代码
# 解压安装包至Linux目录
tar -zxvf datax.tar.gz -C /usr/local/

2、使用dataX进行增量同步

复制代码
# 进入job目录下
cd job

vim trans.job
# 文件内容如下
{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "pass",
                        "column": [  
                                "*"    #表示进行所有字段的同步
                        ],
                        "where": "order_date = '${order_date}' and com_code in ('103','104','205','176','178','118')",      #定义同步的数据条件
                        "connection": [
                            {
                                "jdbcUrl": [
                                    "jdbc:mysql://10.106.17*..2*5:3306/my_db?useUnicode=true&characterEncoding=utf8"
                                ],
                                "table": [
                                    "my_order"   #数据源表
                                ]
                            }
                        ]
                    }
                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "column": [
                                "*"
                        ],
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://10.106.2*5.6*:3306/my_db?useUnicode=true&characterEncoding=utf8",
                                "table": [
                                    "my_order"
                                ]
                            }
                        ],
                        "password": "pass",
                        "username": "root",
                        "writeMode": "replace"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": "5"
            }
        }
    }
}

执行一次同步,就会将where条件查询出来的数据同步到目标表中,注意参数的传递${order_date}

复制代码
python /usr/local/datax/bin/datax.py /usr/local/datax/job/trans.json -p "-Dorder_date=$order_date"

以上为使用dataX进行增量同步的简单描述,如果每日都需要根据日志进行增量同步,可以添加Linux定时任务完成。

复制代码
vim my_trans.sh

#!/bin/bash
. /etc/profile   #定时任务若初始执行不成功,可以添加此行
order_date="$(date +%Y-%m-%d)"
cd /usr/local/datax/log
logfile=datax_$order_date.log

# 同步测试数据
nohup python /usr/local/datax/bin/datax.py /usr/local/datax/job/trans.json -p "-Dorder_date=$order_date" >> $logfile
nohup python /usr/local/datax/bin/datax.py /usr/local/datax/job/trans2.json -p "-Dorder_date=$order_date" >> $logfile

注:Linux定时任务五个*的意思,从左到右分别是[分钟,小时,几号,月份,星期几]

比如,每天8点38分执行一次同步

复制代码
38 8 * * * /bin/bash /usr/local/datax/job/my_trans.sh

pt-archiver的使用

1、安装下载

下载地址:https://www.percona.com/downloads

复制代码
# 安装相关
tar xvf percona-toolkit-3.3.1_x86_64.tar.gz
cd percona-toolkit-3.3.1
yum install perl-ExtUtils-MakeMaker perl-DBD-MySQL perl-Digest-MD5
perl Makefile.PL
make
make install

2、进行数据归档

复制代码
pt-archiver --source h=192.168.253.128,P=3306,u=root,p=VWVqlLvS4kfONYRG,D=my_slaughter_logistics,t=my_city --dest h=192.168.253.129,P=3306,u=test,p=VWVqlLvS4kfONYRG,D=my_slaughter_logistics,t=my_city --where "1=1"

执行完之后会发现,源数据表已被清空,因为使用pt-archiver进行同步的步骤如下:

(1)源库查询记录。

(2)目标库插入记录。

(3)源库删除记录。

(4)目标库 COMMIT。

(5)源库 COMMIT。

当进行大表归档的时候,可以采用批量归档的方式,需要增加以下几个参数:

--bulk-delete:批量删除。

--limit:每批归档的记录数。

--commit-each:对于每一批记录,只会 COMMIT 一次。

--bulk-insert:归档数据以 LOAD DATA INFILE 的方式导入到归档库中。

相关推荐
无敌最俊朗@22 分钟前
SQlite:外键约束
数据库·oracle
金仓拾光集1 小时前
金仓替代MongoDB:安全与性能协同提升——社交用户画像系统的国产化实践
数据库·安全·mongodb·kingbase·kingbasees·数据库平替用金仓·金仓数据库
FinTech老王1 小时前
国产数据库替换MongoDB实战:浙江人民医院电子病历系统国产化升级案例
数据库·mongodb
l1t1 小时前
在Lua用luasql-sqlite3库访问SQLite数据库
数据库·git·sqlite·lua
2501_938780282 小时前
《轨道交通检测系统中 Qt 与数据库交互的优化方案》
数据库·qt·交互
qqxhb2 小时前
系统架构设计师备考第61天——嵌入式系统架构模式&操作系统&数据库&中间件
数据库·中间件·系统架构·sqlite·dds·层次化(封闭/开放)·递归模式
SelectDB2 小时前
Apache Doris 数据导入原理与性能优化 | Deep Dive
运维·数据库·数据分析
悟能不能悟2 小时前
在service方法中已经catch异常,Transactional失效怎么办
java·数据库·sql
月夜奇术师3 小时前
SQL查询性能优化:从30分钟到30秒的蜕变——破解串行查询瓶颈
数据库·性能优化
0wioiw03 小时前
Ubuntu(④Mysql)
linux·mysql·ubuntu