首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库使用 pt-archiver 工具同步数据慢的原因和解决方法
更新时间:2024-11-12 08:16
问题现象
使用 pt-archive 向 OceanBase 数据库写数据时对比原生 MySQL 数据库性能下降很多。 归档到原生 MySQL 数据库:1.6w 数据,耗时 11s;归档到 OceanBase 数据库:1.8w 数据,耗时 120s。

使用的命令参数,如下。
/opt/mysql/bin/pt-archiver --source h=xxx.xxx.xxx.198,P=3406,u=dba_xx,p=,D=xx,t=xx --dest h=xxx --where xxx --limit=1000 --commit-each --no-check-charset --charset=utf8mb4 --sleep=0 --max-lag=180 --run-time 512m --check-slave-lag u=dba_xx,p=,h=xxx.xxx.xxx.200,P=3406 --check-slave-lag u=xx,p=***,h=xxx.xxx.xxx.47,P=3406 --no-version-check --statistics --no-safe-auto-increment --bulk-delete --why-quit
问题原因
需要增加 --bulk-insert 参数进行批量插入,数据库内部走 load data local 语法加快插入数据(OceanBase 数据库 V4.2.2 版本才支持)。
适用版本
OceanBase 数据库 V4.2.2 之前所有版本。
OBProxy V4.3.1 之前所有版本。
OBClient V2.2.4 之前所有版本。
解决方法
如果增加
--bulk-insert参数后执行出现断连问题,Lost connection to Mysql server during query。需要升级至 OBProxy V4.3.1 及之后版本。 同时建议升级 OBClient 至 V2.2.4 及之后版本,否则使用 OBClient 客户端连接数据库时,不支持 load data local 语法,使用 MySQL 客户端连接执行是没问题的。