postgresql实时同步到mysql

打印 上一主题 下一主题

主题 1015|帖子 1015|积分 3045

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
应客户要求,需要同步数据到他们自己的数据库用于简单的数据分析,但这部分数据在postgresql,客户又不想再建pg,想直接同步到他们现有的mysql库,实时性倒是不要求。
思量到
1、异构数据库同步
2、只同步指定客户的行数据
有之前同步到es的经验,同样利用了腾讯oceanus,其它工具没搞定
客户库中创建表
  1. CREATE TABLE tb_1 (
  2.     id bigint primary key,
  3.     did bigint,
  4.     gid bigint,
  5.     fee DECIMAL(10,2),
  6.     created_at timestamp,
  7.     type smallint,
  8.     remark string ,
  9.     key i_did(did)
  10. );
复制代码
创建SQL作业
  1. CREATE TABLE tb_1 (
  2.     id bigint,
  3.     did bigint,
  4.     gid bigint,
  5.     fee DECIMAL(10,2),
  6.     create_time timestamp,
  7.     type smallint,
  8.     remark string,
  9.     PRIMARY KEY (`id`) NOT ENFORCED
  10. ) WITH (
  11.   'connector' = 'postgres-cdc',
  12.   'hostname' = 'ip',
  13.   'port' = '5432',            
  14.   'username' = 'user',
  15.   'password' = 'pwd',
  16.   'database-name' = 'db',
  17.   'schema-name' = 'your-schema',
  18.   'table-name' = 'tbname',
  19.   'slot.name' = 'slotname_tb_1',
  20.   'scan.incremental.snapshot.enabled' = 'true'
  21. );
  22. CREATE TABLE kh_tb_1 (
  23.     id bigint,
  24.     did bigint,
  25.     gid bigint,
  26.     fee DECIMAL(10,2),
  27.     create_time timestamp,
  28.     type smallint,
  29.     remark string,
  30.     PRIMARY KEY (`id`) NOT ENFORCED
  31. ) WITH (
  32.   'connector' = 'jdbc',
  33.   'url' = 'jdbc:mysql://xxxxxx:3306/db?rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai',
  34.   'table-name' = 'tb_1',
  35.   'username' = 'user',
  36.   'password' = 'pwd',
  37.   'sink.buffer-flush.max-rows' = '5000',
  38.   'sink.buffer-flush.interval' = '2s',
  39.   'sink.max-retries' = '10'
  40. );
  41. insert into kh_tb_1 select * from tb_1 where did=xxxxxxx;
复制代码
需要留意的:
1.字段类型要公道和对应,跟着cdc的类型走,不跟数据库一样
2.只有这个客户数据,insert不要忘了加where
3.pg涉及同步slot, slot.name要一张表一个,表多的话,要修改pg参数,max_replication_slots(默认是10,修改此参数要重启)
4.报错[55000]: ERROR: cannot delete from table "tb_1" because it does not have a replica identity ,调解下表 alter table tb_1 REPLICA IDENTITY FULL;
启动作业任务即可。
欢迎关注我的公众号:老王76。一起进步吧!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天空闲话

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表