[聚合文章] Otter实现数据双A同步搭建入门教程

MySQL 2017-12-24 17 阅读

1.准备阶段

1.1 环境

虚拟机A : 192.168.0.130

虚拟机B :192.168.0.131

系统: Ubuntu 16.04 LTS

JRE:OpenJDK 1.8.0_151(A、B都要安装)

DB:MySQL 5.7.20(A、B都要安装)

ZooKeeper:3.4.11(只装A机)

Otter Manager:4.2.14 (只装A机)( 4.2.15 启动Node时感觉有Bug,没有使用)

Otter Node:4.2.14(A、B都要安装)

1.2 安装环境

1.2.1 JRE安装

sudo apt-get install default-jre

1.2.2 MySQL安装

sudo apt-get install mysql-server

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

character-set-server=utf8
log-bin=mysql-bin   
binlog-format=ROW   
server-id=1 #A,B需要设置成不一样的id
#bind-address=127.0.0.1 #注释该行

service mysql restart

进入mysql,设置单独账号密码

grant all on *.* to 'root' @ '%' identified by 'password' ;

1.2.3 ZooKeeper安装

安装包地址 http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz

解压可见conf文件夹下有一个zoo_sample.cfg的文件,重命名为zoo.cfg并修改以下配置

dataDir=../datas
dataLogDir=../logs

1.2.4 Otter Manager安装

安装包地址 https://github.com/alibaba/otter/releases 请自己选择版本

解压可见conf文件夹下otter.properties文件,修改以下配置

#以下配置为最基本需要改的配置,其他配置可根据实际要用的功能进行修改
otter.domainName = 192.168.0.130 #一定要改,不要用127.0.0.1
otter.port = 9000 #manager 站点端口号
otter.database.driver.url = jdbc:mysql://192.168.0.130:3306/otter
otter.database.driver.username = root
otter.database.driver.password = password
otter.zookeeper.cluster.default = 192.168.0.130:2181

1.2.5 Otter Node 安装

安装包地址 https://github.com/alibaba/otter/releases 请自己选择版本

解压可见conf文件夹下otter.properties文件,修改以下配置

#以下配置为最基本需要改的配置,其他配置可根据实际要用的功能进行修改
otter.nodeHome = ../
otter.manager.address = 192.168.0.130:1099 

conf文件夹下创建一个新的配置文件,命名为nid,写入node id,A机为1,B机为2。该id后面会介绍。

2.启动

2.1 启动ZooKeeper

进入ZooKeeper目录下的bin文件夹,执行以下命令(不要使用sh,一定要用bash)

bash zkServer.sh start

2.2 启动Otter Manager

在A机中执行以下数据库语句,创建Otter库

CREATE DATABASE /*!32312 IF NOT EXISTS*/ otter` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ ;
USE `otter`;
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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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` int (21) NOT NULL ,
  DELAY_NUMBER` bigint (20) NOT NULL ,
  PIPELINE_ID` bigint (20) NOT NULL ,
  GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  END_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
  GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  END_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
  GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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 CURRENT_TIMESTAMP ,
  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;
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());

在A,B机中都要执行以下数据库语句,创建retl库( 若只是单向同步,则不需要执行该语句。 该语句用作双A同步时的算法)

/*
供 otter 使用, otter 需要对 retl.* 的读写权限,以及对业务表的读写权限
1. 创建database retl
*/
CREATE DATABASE retl;
/* 2. 用户授权 给同步用户授权 */
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`@ '%' ;
/* 业务表授权,这里可以限定只授权同步业务的表 */
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;
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 DEFAULT CURRENT_TIMESTAMP ,
    GMT_MODIFIED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
    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();

进入Otter Manager 下的bin目录

bash startup.sh

这时等待数秒,Otter Manager站点已启动,可以访问http://192.168.0.130:9000配置Otter Node 的信息了。

2.3 启动Otter Node

如果你未在Otter Manager站点配置Otter Node的信息,则请暂时跳过该节,直接查看下面配置章节,配置完成后再回来该节启动Otter Node

进入Otter Node下的bin目录

bash startup.sh

3.配置

进入Otter Manager站点后,使用账号:admin,密码:admin(默认),获得超级管理员权限。

3.1 ZooKeeper配置

机器管理  -->  ZooKeeper管理 ,添加,保存,如下图

3.2 Node配置

机器管理  -->  Node管理 ,添加,保存(2次,A机一个Node,B机一个Node),如下图(名称和IP需要根据不同机器修改,这里只列出A机图片)

最后可在Node管理列表中看见,其中序号即我们上面安装过程中写入的nid文件的id号,配置好之后,即可启动Otter Node

启动后可见配置列表

3.3 数据源配置

配置管理  -->  数据源配置,配置A机、B机两个MySQL 数据源

配置完成后可见配置列表

3.4 数据表配置

配置管理  -->  数据表配置,配置A机、B机两个MySQL 数据源所需要同步的数据表(自己的数据库,我这里新建test库),其中table name配置如果想同步所有表则配置为.*,否则则配置对应表名即可

配置完成后可见配置列表

3.5 Canal配置

将canal看作是A、B两机的从库即可,github上解释道,canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议。

配置管理  -->  canal配置,配置A机、B机两个canal。实质上两个canal分别运行在A、B两机上的Node节点上。配置如下,其他使用默认配置。

位点信息分别在A、B两个MySQL执行以下语句获取

show master status;
select unix_timestamp(now());

配置完成后可见配置列表

3.6 同步任务配置

同步管理 -->  Channel管理 ,添加一个Channel

添加后,点击进入Pipeline管理

添加两个Pipeline,如图是其中一个方向,另外一个方向Select、Load机器相反。canal选择与Node机器选择一致方向,即要与Select机器一样。选择其中一个Pipeline作为主站点,并在高级设置中勾选支持ddl同步,另外一个主站点勾选否,支持ddl同步选择否。

添加后,点击进入映射关系列表,选择好同步表的方向

至此。配置完成。到Channel管理中开启同步任务,Otter将为我们自动双A同步数据啦!

本文永久更新链接地址 http://www.linuxidc.com/Linux/2017-12/149767.htm

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。