otter-harbor同步

在这里插入图片描述

一. 部署及依赖

otter Github

(一). 服务启动

1. mysql

  • 5.6版本以上,作为 otter-manger 使用的数据库
# mysql
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci;
(1). mysql初始化

SQL

  • otter manager 用的数据库, 我选用的是 4.2.18 版本的 otter-manager, 不同版本不同的sql
# 可通过docker cp的方式挂到容器中

otter-manager-init.sql

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `otter` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;USE `otter`;SET sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';CREATE TABLE `ALARM_RULE` (`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`MONITOR_NAME` varchar(1024) DEFAULT NULL,`RECEIVER_KEY` varchar(1024) DEFAULT NULL,`STATUS` varchar(32) DEFAULT NULL,`PIPELINE_ID` bigint(20) NOT NULL,`DESCRIPTION` varchar(256) DEFAULT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,`MATCH_VALUE` varchar(1024) DEFAULT NULL,`PARAMETERS` text DEFAULT NULL,PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `AUTOKEEPER_CLUSTER` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`CLUSTER_NAME` varchar(200) NOT NULL,`SERVER_LIST` varchar(1024) NOT NULL,`DESCRIPTION` varchar(200) DEFAULT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `CANAL` (`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`NAME` varchar(200) DEFAULT NULL,`DESCRIPTION` varchar(200) DEFAULT NULL,`PARAMETERS` text DEFAULT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),UNIQUE KEY `CANALUNIQUE` (`NAME`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `CHANNEL` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`NAME` varchar(200) NOT NULL,`DESCRIPTION` varchar(200) DEFAULT NULL,`PARAMETERS` text DEFAULT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),UNIQUE KEY `CHANNELUNIQUE` (`NAME`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `COLUMN_PAIR` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`SOURCE_COLUMN` varchar(200) DEFAULT NULL,`TARGET_COLUMN` varchar(200) DEFAULT NULL,`DATA_MEDIA_PAIR_ID` bigint(20) NOT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),KEY `idx_DATA_MEDIA_PAIR_ID` (`DATA_MEDIA_PAIR_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `COLUMN_PAIR_GROUP` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`DATA_MEDIA_PAIR_ID` bigint(20) NOT NULL,`COLUMN_PAIR_CONTENT` text DEFAULT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),KEY `idx_DATA_MEDIA_PAIR_ID` (`DATA_MEDIA_PAIR_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `DATA_MEDIA` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`NAME` varchar(200) NOT NULL,`NAMESPACE` varchar(200) NOT NULL,`PROPERTIES` varchar(1000) NOT NULL,`DATA_MEDIA_SOURCE_ID` bigint(20) NOT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),UNIQUE KEY `DATAMEDIAUNIQUE` (`NAME`,`NAMESPACE`,`DATA_MEDIA_SOURCE_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `DATA_MEDIA_PAIR` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`PULLWEIGHT` bigint(20) DEFAULT NULL,`PUSHWEIGHT` bigint(20) DEFAULT NULL,`RESOLVER` text DEFAULT NULL,`FILTER` text DEFAULT NULL,`SOURCE_DATA_MEDIA_ID` bigint(20) DEFAULT NULL,`TARGET_DATA_MEDIA_ID` bigint(20) DEFAULT NULL,`PIPELINE_ID` bigint(20) NOT NULL,`COLUMN_PAIR_MODE` varchar(20) DEFAULT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),KEY `idx_PipelineID` (`PIPELINE_ID`,`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `DATA_MEDIA_SOURCE` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`NAME` varchar(200) NOT NULL,`TYPE` varchar(20) NOT NULL,`PROPERTIES` varchar(1000) NOT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),UNIQUE KEY `DATAMEDIASOURCEUNIQUE` (`NAME`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `DELAY_STAT` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`DELAY_TIME` bigint(20) NOT NULL,`DELAY_NUMBER` bigint(20) NOT NULL,`PIPELINE_ID` bigint(20) NOT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),KEY `idx_PipelineID_GmtModified_ID` (`PIPELINE_ID`,`GMT_MODIFIED`,`ID`),KEY `idx_Pipeline_GmtCreate` (`PIPELINE_ID`,`GMT_CREATE`),KEY `idx_GmtCreate_id` (`GMT_CREATE`,`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `LOG_RECORD` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`NID` varchar(200) DEFAULT NULL,`CHANNEL_ID` varchar(200) NOT NULL,`PIPELINE_ID` varchar(200) NOT NULL,`TITLE` varchar(1000) DEFAULT NULL,`MESSAGE` text DEFAULT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),KEY `logRecord_pipelineId` (`PIPELINE_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `NODE` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`NAME` varchar(200) NOT NULL,`IP` varchar(200) NOT NULL,`PORT` bigint(20) NOT NULL,`DESCRIPTION` varchar(200) DEFAULT NULL,`PARAMETERS` text DEFAULT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),UNIQUE KEY `NODEUNIQUE` (`NAME`,`IP`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `PIPELINE` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`NAME` varchar(200) NOT NULL,`DESCRIPTION` varchar(200) DEFAULT NULL,`PARAMETERS` text DEFAULT NULL,`CHANNEL_ID` bigint(20) NOT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),UNIQUE KEY `PIPELINEUNIQUE` (`NAME`,`CHANNEL_ID`),KEY `idx_ChannelID` (`CHANNEL_ID`,`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `PIPELINE_NODE_RELATION` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`NODE_ID` bigint(20) NOT NULL,`PIPELINE_ID` bigint(20) NOT NULL,`LOCATION` varchar(20) NOT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),KEY `idx_PipelineID` (`PIPELINE_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `SYSTEM_PARAMETER` (`ID` bigint(20) unsigned NOT NULL,`VALUE` text DEFAULT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `TABLE_HISTORY_STAT` (`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`FILE_SIZE` bigint(20) DEFAULT NULL,`FILE_COUNT` bigint(20) DEFAULT NULL,`INSERT_COUNT` bigint(20) DEFAULT NULL,`UPDATE_COUNT` bigint(20) DEFAULT NULL,`DELETE_COUNT` bigint(20) DEFAULT NULL,`DATA_MEDIA_PAIR_ID` bigint(20) DEFAULT NULL,`PIPELINE_ID` bigint(20) DEFAULT NULL,`START_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`END_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),KEY `idx_DATA_MEDIA_PAIR_ID_END_TIME` (`DATA_MEDIA_PAIR_ID`,`END_TIME`),KEY `idx_GmtCreate_id` (`GMT_CREATE`,`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `TABLE_STAT` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`FILE_SIZE` bigint(20) NOT NULL,`FILE_COUNT` bigint(20) NOT NULL,`INSERT_COUNT` bigint(20) NOT NULL,`UPDATE_COUNT` bigint(20) NOT NULL,`DELETE_COUNT` bigint(20) NOT NULL,`DATA_MEDIA_PAIR_ID` bigint(20) NOT NULL,`PIPELINE_ID` bigint(20) NOT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),KEY `idx_PipelineID_DataMediaPairID` (`PIPELINE_ID`,`DATA_MEDIA_PAIR_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `THROUGHPUT_STAT` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`TYPE` varchar(20) NOT NULL,`NUMBER` bigint(20) NOT NULL,`SIZE` bigint(20) NOT NULL,`PIPELINE_ID` bigint(20) NOT NULL,`START_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`END_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),KEY `idx_PipelineID_Type_GmtCreate_ID` (`PIPELINE_ID`,`TYPE`,`GMT_CREATE`,`ID`),KEY `idx_PipelineID_Type_EndTime_ID` (`PIPELINE_ID`,`TYPE`,`END_TIME`,`ID`),KEY `idx_GmtCreate_id` (`GMT_CREATE`,`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `USER` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`USERNAME` varchar(20) NOT NULL,`PASSWORD` varchar(20) NOT NULL,`AUTHORIZETYPE` varchar(20) NOT NULL,`DEPARTMENT` varchar(20) NOT NULL,`REALNAME` varchar(20) NOT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),UNIQUE KEY `USERUNIQUE` (`USERNAME`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE  `DATA_MATRIX` (`ID` bigint(20) NOT NULL AUTO_INCREMENT,`GROUP_KEY` varchar(200) DEFAULT NULL,`MASTER` varchar(200) DEFAULT NULL,`SLAVE` varchar(200) DEFAULT NULL,`DESCRIPTION` varchar(200) DEFAULT NULL,`GMT_CREATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`ID`),KEY `GROUPKEY` (`GROUP_KEY`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE IF NOT EXISTS `meta_history` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',`gmt_create` datetime NOT NULL COMMENT '创建时间',`gmt_modified` datetime NOT NULL COMMENT '修改时间',`destination` varchar(128) DEFAULT NULL COMMENT '通道名称',`binlog_file` varchar(64) DEFAULT NULL COMMENT 'binlog文件名',`binlog_offest` bigint(20) DEFAULT NULL COMMENT 'binlog偏移量',`binlog_master_id` varchar(64) DEFAULT NULL COMMENT 'binlog节点id',`binlog_timestamp` bigint(20) DEFAULT NULL COMMENT 'binlog应用的时间戳',`use_schema` varchar(1024) DEFAULT NULL COMMENT '执行sql时对应的schema',`sql_schema` varchar(1024) DEFAULT NULL COMMENT '对应的schema',`sql_table` varchar(1024) DEFAULT NULL COMMENT '对应的table',`sql_text` longtext DEFAULT NULL COMMENT '执行的sql',`sql_type` varchar(256) DEFAULT NULL COMMENT 'sql类型',`extra` text DEFAULT NULL COMMENT '额外的扩展信息',PRIMARY KEY (`id`),UNIQUE KEY binlog_file_offest(`destination`,`binlog_master_id`,`binlog_file`,`binlog_offest`),KEY `destination` (`destination`),KEY `destination_timestamp` (`destination`,`binlog_timestamp`),KEY `gmt_modified` (`gmt_modified`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='表结构变化明细表';CREATE TABLE IF NOT EXISTS `meta_snapshot` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',`gmt_create` datetime NOT NULL COMMENT '创建时间',`gmt_modified` datetime NOT NULL COMMENT '修改时间',`destination` varchar(128) DEFAULT NULL COMMENT '通道名称',`binlog_file` varchar(64) DEFAULT NULL COMMENT 'binlog文件名',`binlog_offest` bigint(20) DEFAULT NULL COMMENT 'binlog偏移量',`binlog_master_id` varchar(64) DEFAULT NULL COMMENT 'binlog节点id',`binlog_timestamp` bigint(20) DEFAULT NULL COMMENT 'binlog应用的时间戳',`data` longtext DEFAULT NULL COMMENT '表结构数据',`extra` text DEFAULT NULL COMMENT '额外的扩展信息',PRIMARY KEY (`id`),UNIQUE KEY binlog_file_offest(`destination`,`binlog_master_id`,`binlog_file`,`binlog_offest`),KEY `destination` (`destination`),KEY `destination_timestamp` (`destination`,`binlog_timestamp`),KEY `gmt_modified` (`gmt_modified`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='表结构记录表快照表';insert into USER(ID,USERNAME,PASSWORD,AUTHORIZETYPE,DEPARTMENT,REALNAME,GMT_CREATE,GMT_MODIFIED) values(null,'admin','801fc357a5a74743894a','ADMIN','admin','admin',now(),now());
insert into USER(ID,USERNAME,PASSWORD,AUTHORIZETYPE,DEPARTMENT,REALNAME,GMT_CREATE,GMT_MODIFIED) values(null,'guest','471e02a154a2121dc577','OPERATOR','guest','guest',now(),now());

2. zookeeper

# zk, 不用单独配置zk,集群的 单机的都可以
docker run -d -p 2181:2181 --name=zookeeper --privileged zookeeper

3. otter-manager

  • 公网可拉取到镜像: aeert/otter-manager:4.2.18, 因每个人的访问IP或者域名不同, 需要对镜像做修改,
  • 修改端口在启动命令中加入了:
    • sed -i 's/otter.port = 8080/otter.port = '$PORT'/' conf/otter.properties &&
    • 如果要基于域名访问, 也需要修改 domainName
FROM aeert/otter-manager:4.2.18ENTRYPOINT ["/bin/sh", "-c", "sed -i 's/domainName = 127.0.0.1/domainName = '$IP'/' conf/otter.properties && sed -i 's/otter.port = 8080/otter.port = '$PORT'/' conf/otter.properties && sed -i 's/127.0.0.1:3306/'$DB_IP'/' conf/otter.properties && sed -i 's/otter.database.driver.username = root/otter.database.driver.username = '$DB_USER'/' conf/otter.properties && sed -i 's/otter.database.driver.password = hello/otter.database.driver.password = '$DB_PASSWD'/' conf/otter.properties && sed -i 's/otter.zookeeper.cluster.default = 127.0.0.1/otter.zookeeper.cluster.default = '$ZK_IP'/' conf/otter.properties && sh bin/startup.sh && while true; do echo hello world; sleep 1000;done"]
# otter-manager
docker run --name otter-manager -d -p 1800:1800 -p 1099:1099 -e IP=114.67.233.234 -e PORT=1800 -e ZK_IP=10.0.0.3 -e DB_IP=10.0.0.3:3306 -e DB_USER=root -e DB_PASSWD=123456 otter-manager:4.2.18

4. otter-node

  • otter-node不能单独起来, 需要等 otter-manger 起来后, 配置好分配的 id 后, 才可以启动
  • 镜像是公网可以拉的
docker run --name otter-node -d -p 2088:2088 -p 2090:2090 -p 9090:9090 -e id=1 -e address=10.0.0.3 aeert/otter-node:4.2.18

(二). 源数据库

  • k8s部署的跳过

  • 如果是docker部署的mysql, 镜像为 mysql:5.7, 里面是没有vi命令的,需要需改

cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" > /etc/apt/sources.listapt update# 报错,最后面有一个子串
W: GPG error: http://mirrors.aliyun.com/ubuntu bionic InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 3B4FE6ACC0B21F32# 替换最后的子串为上面报错的, 然后再次 apt update
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32# 安装vim
apt-get install vim# 最后docker restart mysql-xxxx

1. mysql设置

vim /etc/mysql/conf.d/mysql.cnf

# 源mysql需要设置开启binlog,需要设置binlog_format=ROW,下面的编码根据实际情况[mysqld]
log-bin=/var/lib/mysql/mysql-bin
binlog_format=ROW
server-id=1character-set-server = utf8
collation-server = utf8_general_ci
  • 源mysql开启binlog
SHOW VARIABLES LIKE 'log_%';
  • mysql复制模式是否是row模式
SHOW VARIABLES LIKE 'binlog_format%';
  • 编码
show variables  like  'character_set%';

二. 配置

(一). 页面配置

  • otter-manger启动好后, 浏览器访问并登陆, 默认账号密码都是: admin, 然后开始配置
  • 配置zk, 点击添加
    • 集群名字自定义, 不要重复, 不要中文

image-20221125152240767

image-20221125152324060

  • node配置, 点击添加
    • 机器名称自定义, 不要重复, 不要中文
    • 机器端口, 设置为你启动node的端口, node默认端口为 2088
    • 如果是外部IP的需要设置好, 保证网络正常
    • 其他的可选择性配置
  • 最后启动node, 如上面启动命令
image-20221125152518928

这个编码就是node的 id

image-20221125153353162

数据源配置, 源数据库, 注意目标数据库都要在这添加, 点击添加源数据库和目标数据库

  • 数据源名字, 自定义, 不要重复, 不要中文
  • 认证信息
  • URL 按照上面提示填写
  • 编码, 源数据库和目标数据库的编码必须保持一致, 不同编码同步不过去

image-20221125152835066

canal配置, 不需要单独部署canal, node中已经集成了canal, 我们这只需要配置好即可

  • canal名称自定义, 不重复, 不中文
  • 其他按照提示填写

image-20221125153239789

image-20221125153442373

  • 同步信息填写, 源数据库, 目标数据库都要填写
    • schema name 库名, 可填: .* 表示所有库
    • table name 表名, 可填: .* 表示所有表
    • 选择数据源,就是我们上面添加的2个数据库名称
    • 保存后, 我们需要再创建一个数据表, 为目标数据表, 表示要同步到那个数据库中

image-20221125153634684

image-20221125153741903

  • 同步管理, 创建Channel
    • Channel名称不重复, 不中文
    • 其他默认保存
    • 点击创建好的Channel, 添加pipeline
    • pipeline名称
    • 选择canal
    • 其他默认即可, 保存
    • 点击创建好的pipeline
    • 设置表的映射关系, 如果源数据库和目标数据库同步的表名称一样, 直接保存即可

image-20221125154224451

image-20221125154247608

image-20221125154335953

image-20221125154417141

  • 开始同步
    • 点击启用即开始同步

image-20221125154932752

(二). 全库同步配置

  • otter 默认只是同步增量的数据, 如果要同步全量的数据需要做如下操作
# 在源库中 创建database retl, 供 otter 使用, otter 需要对 retl.* 的读写权限,以及对业务表的读写权限
CREATE DATABASE retl;# 1.创建用户,及授权
CREATE USER retl@'%' IDENTIFIED BY 'retl';
GRANT USAGE ON *.* TO `retl`@'%';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO `retl`@'%';
GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `retl`.* TO `retl`@'%';# 2. 用户授权 给同步用户授权
# 业务表授权,这里可以限定只授权同步业务的表
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO `retl`@'%';# 3. 创建系统表
USE retl;
DROP TABLE IF EXISTS retl.retl_buffer;
DROP TABLE IF EXISTS retl.retl_mark;
DROP TABLE IF EXISTS retl.xdual;# 这里如果创建失败, 在mysql的安装目录下,打开my.ini或my.cnf文件,新增 sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,
CREATE TABLE retl_buffer
(
ID BIGINT(20) AUTO_INCREMENT,
TABLE_ID INT(11) NOT NULL,
FULL_NAME varchar(512),
TYPE CHAR(1) NOT NULL,
PK_DATA VARCHAR(256) NOT NULL,
GMT_CREATE TIMESTAMP NOT NULL,
GMT_MODIFIED TIMESTAMP NOT NULL,
CONSTRAINT RETL_BUFFER_ID PRIMARY KEY (ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE retl_mark
(
ID BIGINT AUTO_INCREMENT,
CHANNEL_ID INT(11),
CHANNEL_INFO varchar(128),
CONSTRAINT RETL_MARK_ID PRIMARY KEY (ID)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE xdual (
ID BIGINT(20) NOT NULL AUTO_INCREMENT,
X timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ID)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;# 4. 插入初始化数据
INSERT INTO retl.xdual(id, x) VALUES (1,now()) ON DUPLICATE KEY UPDATE x = now();# 之后的操作其实就是,把你想要同步表的表名及记录ID插入到retl_buffer表即可
# 需要注意, 插入语句必须是在同步运行中配置才会生效insert into retl.retl_buffer(ID,TABLE_ID, FULL_NAME,TYPE,PK_DATA,GMT_CREATE,GMT_MODIFIED) (select null,0,'$schema.table$','I',id,now(),now() from $schema.table$);
1
# 如果针对多主键时,对应的PK_DATA需要将需要同步表几个主键按照(char)1进行拼接。# 以下这条sql的意思就是将rrrr.t_test的主键为aaa的这条记录按照规则插入到目标库insert into `retl`.`retl_buffer` ( `TABLE_ID`, `FULL_NAME`, `TYPE`, `PK_DATA`, `GMT_CREATE`, `GMT_MODIFIED`) values ( '0', 'rrrr.t_test', 'I', 'aaa', now(), now());# 案例, 同步test库中的moon表全部信息,再次强调必须是在运行中的时候插入这条语句
# num字段为主键, I表示insertinsert into retl.retl_buffer(ID,TABLE_ID, FULL_NAME,TYPE,PK_DATA,GMT_CREATE,GMT_MODIFIED) (select null,0,'test.moon','I',num,now(),now() from test.moon);
  • 源库创建
create database if not exists test default character set = 'utf8';USE test;CREATE TABLE  `example` (`id` INT(11)  NOT NULL AUTO_INCREMENT,`name` VARCHAR(32) COLLATE utf8_bin DEFAULT NULL ,PRIMARY KEY (`ID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;insert into test.example(id,name) values(null,'hello111');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/238617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Alpha突触核蛋白神经退行性疾病

Alpha突触核蛋白科研背景 ● Alpha突触核蛋白约 15kDa, 140个氨基酸 ● StressMarq在E. coli中过表达人源基因然后将蛋白从细胞质基质中纯化出来 ● 未折叠的alpha突触核蛋白单体在12% SDS-PAGE上为~15 kDa的条带 StressMarq/欣博盛生物的Alpha突触核蛋白有以下两类&#xf…

Open3D 最小二乘拟合平面(直接求解法)

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。爬虫自重。 一、算法原理 平面方程的一般表达式为: A x + B y + C z

docusaurus简介及使用心得

docusaurus简介 Docusaurus 是 Facebook 专门为开源项目开发者提供的一款易于维护的静态网站创建工具,使用 Markdown 即可更新网站。构建一个带有主页、文档、API、帮助以及博客页面的静态网站,只需5分钟。 同类竞品还有vuepress,docusaurus…

华夏ERP getAllList;.ico敏感信息泄露漏洞

漏洞描述 华夏ERP是基于SpringBoot框架和SaaS模式,立志为中小企业提供开源好用的ERP软件,目前专注进销存财务功能。主要模块有零售管理、采购管理、销售管理、仓库管理、财务管理、报表查询、系统管理等。支持预付款、收入支出、仓库调拨、组装拆卸、订…

个性化TikTok外贸工具定制!突破营销新境界!

随着全球化的加速发展,外贸行业正面临着前所未有的机遇和挑战,在这个竞争激烈的市场环境中,如何脱颖而出,吸引更多的潜在客户,成为每个外贸企业亟待解决的问题,而个性化TikTok外贸工具的定制,正…

尺寸公差分析与尺寸链计算软件-DTAS3D到底能给我们带来哪些价值?

【技能】DTAS3D能给我们带来哪些价值? DTAS3D是一款高度集成的公差分析软件,旨在为产品开发团队提供准确的建议,从而放心地将设计发布给制造部门。下面是DTAS3D的关键价值和应用: 1.与三维CAD无缝集成: DTAS3D与三维CAD软件 (CATIA、NX、Cr…

MySQL中CASE when 实战

CASE 语法 CASEWHEN condition1 THEN result1WHEN condition2 THEN result2WHEN conditionN THEN resultNELSE result END; 将表中的内容转换为右边的形式: 1、创建表,创建数据 CREATE TABLEchapter10_7 (order_id VARCHAR(255) NULL,price VARCHAR(25…

大模型三级跳:2023年AI行业的崭新篇章

2023年,大模型的发展如同一场三级跳,迅速跃升至新的高度。从ChatGPT的火爆,到众多大厂纷纷入场,再到百模大战的激烈角逐,这一年的AI行业充满了竞争与变革。 首先,大模型的崛起标志着AI技术进入了一个新的阶…

uniapp中如何使用百度tts生成文字语音并播放

第一步先在百度云里面申请一个tts应用,这里默认你们都会了哈,申请完是这样的 第二步在manifest.json注册一下 第三步进项目,先获取token handleGetToken() {// client_id和client_secret就是百度API Key和Secret Keyuni.request({url: https://aip.ba…

TKEStack容器管理平台实战之部署wordpress应用

TKEStack容器管理平台实战之部署wordpress应用 一、TKEStack介绍1.1 TKEStack简介1.2 TKEStack特点1.3 TKEStack架构图 二、kubernetes集群介绍2.1 k8s简介2.2 k8s架构图 三、本次实践介绍3.1 实践环境要求3.2 本次实践环境规划3.3 本次实践简介 四、安装容器管理平台4.1 安装T…

ACL实现固定时间访问资源——项目

文章目录 一、前言二、项目拓扑三、项目需求四、配置思路五、配置步骤1 IP地址2 端口类型3 静态路由4 流策略 六、结语 免责声明 本文旨在提供信息和解决问题的建议,观点和建议可能不适用于个人情况,仅供参考!!! 文章中…

残差网络学习

参考B站同济子豪兄的Resnet讲解 网络退化,不是梯度消失(根本没有开始学习),梯度爆炸,过拟合。 不需要再拟合复杂底层的那个映射了,原来输入的基础上你需要进行哪些偏移哪些修改 残差预测值和真实值的偏差 一…

锐捷配置PVLAN

一、实验拓扑 二、实验目的 PVLAN可以通过主VLAN和辅助VLAN的概念,部署隔离技术,实现用户间的互访控制。 三、实验配置 SW2 Ruijie >enable Ruijie #configure terminal Ruijie (config)#vlan 20 Ruijie (config-vlan)#private-vlan community …

视频号小店如何运营?流程跑通就成功了一大半!

我是电商珠珠 视频号小店是视频号团队发展的电商平台,目前处于项目的风口期,很多有想法的新手并不知道应该怎么去运营,今天我就来给大家讲一下。 一、入驻 视频号小店入驻的门槛较高,需要准备一张企业的营业执照,身…

Drupal 远程代码执行 CVE-2019-6340 已亲自复现

Drupal 远程代码执行 CVE-2019-6340 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建 修复建议总结 漏洞名称 漏洞描述 Drupal是一个开源且以PHP语言写成的内容管理框架(CMF) 研究人员发现Drupal存在安全漏洞(CVE-2019-6340),当攻击者以PATCH或POST方式传送…

拥抱数字化转型,共赢数字时代 | 创维汽车商学院走进竹云

数字化浪潮汹涌而来,变革与创新接踵而至。随着数字技术日益融入经济社会发展的各个领域,数字经济与实体经济的“双向奔赴”也不断催生着新产业、新业态、新模式,为经济社会发展持续注入创新活力。12月19日,创维汽车商学院带领嘉宾…

Git版本控制系统:简介、演变与优缺点

目录 前言1 版本控制概述2 集中式版本控制的优缺点2.1 优点2.2 缺点 3 分布式版本控制的优缺点3.1 优点3.2 缺点 4 Git的发展过程结语 前言 在软件开发和团队协作中,版本控制是至关重要的。它允许开发人员跟踪文件的更改历史,协同工作并管理代码的不同版…

Shell编程自动化之特殊Shell扩展变量

1.变量的处理 1.1 如果parameter变量值为空,那么返回str字符串。 ${parameter:-str} 1.2 如果parameter变量值为空,那么str替代变量值,且返回其值。 ${parameter:str} 1.3 如果parameter变量值为空,那么str当作stderr输出&am…

亚马逊撸货、撸卡怎么做成功率更高?教你解决亚马逊撸货的底层环境

在当前的跨境电商环境下,许多人都在从事亚马逊的撸货、撸卡业务,但亚马逊的风控系统非常严格,因此很容易被封号或订单被取消。为了提高成功率,我们需要采取一些措施和方法。这篇文章就来分享做亚马逊撸货、撸卡如何提高成功率&…

Multi-value PBS

参考文献: [CIM19] Carpov S, Izabachne M, Mollimard V. New techniques for multi-value input homomorphic evaluation and applications[C]//Topics in Cryptology–CT-RSA 2019: The Cryptographers’ Track at the RSA Conference 2019, San Francisco, CA, …