优质博文:IT-BLOG-CN
一、背景
随着公司的发展,订单库的数据目前已达到千万级别,需要进行分表分库,就需要对数据进行迁移,我们使用了otter
,这里简单整理下,otter
的安装过程,希望对你有所帮助。
二、环境准备
otter manager
依赖于mysql
进行配置信息的存储,所以需要预先安装mysql
,并初始化otter manager
的系统表结构
初始化otter manager
系统表:
下载:
wget https://raw.github.com/alibaba/otter/master/manager/deployer/src/main/resources/sql/otter-manager-schema.sql
载入:
source otter-manager-schema.sql
otter-manager-schema.sql
脚本说明(了解):是Otter
数据同步工具的管理数据库的SQL
脚本文件,用于创建和初始化Otter
的管理数据库表结构。这个文件包含了Otter
管理系统所需的各种表和索引的定义。这些表用于存储同步任务的配置信息、任务状态、日志等。
以下是一个简化的示例,展示了otter-manager-schema.sql
中可能包含的内容:
-- 创建用于存储同步任务配置信息的表
CREATE TABLE `otter_channel` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`description` VARCHAR(255) DEFAULT NULL,
`status` VARCHAR(20) DEFAULT NULL,
`gmt_create` DATETIME NOT NULL,
`gmt_modified` DATETIME NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 创建用于存储同步任务状态的表
CREATE TABLE `otter_pipeline` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`channel_id` BIGINT(20) NOT NULL,
`name` VARCHAR(100) NOT NULL,
`description` VARCHAR(255) DEFAULT NULL,
`status` VARCHAR(20) DEFAULT NULL,
`gmt_create` DATETIME NOT NULL,
`gmt_modified` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_channel_id` (`channel_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 创建用于存储节点信息的表
CREATE TABLE `otter_node` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`ip` VARCHAR(20) NOT NULL,
`port` INT(11) NOT NULL,
`status` VARCHAR(20) DEFAULT NULL,
`gmt_create` DATETIME NOT NULL,
`gmt_modified` DATETIME NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 创建用于存储同步任务日志的表
CREATE TABLE `otter_log` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`pipeline_id` BIGINT(20) NOT NULL,
`message` TEXT NOT NULL,
`log_time` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_pipeline_id` (`pipeline_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 创建用于存储数据变更事件的表
CREATE TABLE `otter_event` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`pipeline_id` BIGINT(20) NOT NULL,
`event_type` VARCHAR(20) NOT NULL,
`data` TEXT NOT NULL,
`event_time` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_pipeline_id` (`pipeline_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
整个otter
架构依赖了zookeeper
进行多节点调度,所以需要预先安装zookeeper
,不需要初始化节点,otter
程序启动后会自检。manager
需要在otter.properties
中指定一个就近的zookeeper
集群机器
三、启动步骤
下载otter manager
直接下载 ,可访问:https://github.com/alibaba/otter/releases ,会列出所有历史的发布版本包下载方式,比如以x.y.z
版本为例子:
wget https://github.com/alibaba/otter/releases/download/otter-x.y.z/manager.deployer-x.y.z.tar.gz
或者自己编译
git clone git@github.com:alibaba/otter.git
cd otter;
mvn clean install -Dmaven.test.skip -Denv=release
编译完成后,会在根目录下产生target/manager.deployer-$version.tar.gz
解压缩
mkdir /tmp/manager
tar zxvf manager.deployer-$version.tar.gz -C /tmp/manager
配置修改
## otter manager domain name #修改为正确访问ip,生成URL使用
otter.domainName = 127.0.0.1
## otter manager http port
otter.port = 8080
## jetty web config xml
otter.jetty = jetty.xml
## otter manager database config ,修改为正确数据库信息
otter.database.driver.class.name = com.mysql.jdbc.Driver
otter.database.driver.url = jdbc:mysql://127.0.01:3306/ottermanager
otter.database.driver.username = root
otter.database.driver.password = hello
## otter communication port
otter.communication.manager.port = 1099
## otter communication pool size
otter.communication.pool.size = 10
## default zookeeper address,修改为正确的地址,手动选择一个地域就近的zookeeper集群列表
otter.zookeeper.cluster.default = 127.0.0.1:2181
## default zookeeper session timeout = 90s
otter.zookeeper.sessionTimeout = 90000
## otter arbitrate connect manager config
otter.manager.address = ${otter.domainName}:${otter.communication.manager.port}
准备启动
sh startup.sh
查看日志
vi logs/manager.log
出现类似日志,代表启动成功
2024-11-14 13:19:45.911 [] WARN com.alibaba.otter.manager.deployer.JettyEmbedServer - ##Jetty Embed Server is startup!
2024-11-14 13:19:45.911 [] WARN com.alibaba.otter.manager.deployer.OtterManagerLauncher - ## the manager server is running now ......
验证
访问: http://127.0.0.1:8080/
,出现otter
的页面,即代表启动成功
访问:http://127.0.0.1:8080/login.htm
,初始密码为:admin/admin
,即可完成登录. 目前:匿名用户只有只读查看的权限,登录为管理员才可以有操作权限
关闭
sh stop.sh