首批通过分布式安全可靠测评,为关键业务系统打造
部署指南
更新时间:2026-06-06 08:53:40
本文档以部署社区版 Binlog 服务为例介绍如何部署 Binlog 服务,Binlog 服务社区版和企业版的区别可参见 Binlog 服务介绍 中的 产品须知。
前提条件
部署 Binlog 服务前,您需确认如下信息:
MySQL 数据库或 MySQL 模式的 OceanBase 数据库作为元数据库,并且在该数据库中已经创建出用以存储 Binlog 集群元信息的 database。
需要生成 Binlog 日志的 OceanBase 集群已经包含 ODP(也称 OBProxy),并且 OceanBase 数据库和 ODP 的版本均在支持范围内,具体参见 版本发布记录 。
需要生成 Binlog 日志的 OceanBase 集群已配置
obconfig_url,可登录 OceanBase 集群后执行SHOW PARAMETERS LIKE 'obconfig_url';命令查看(value值)。若 OceanBase 集群是通过 OCP 进行安装,OCP 会自动配置
obconfig_url。若 OceanBase 集群通过其他方法安装,查看后未配置
obconfig_url,您需手动配置obconfig_url。如何安装 obconfigserver 并配置obconfig_url可参见官网文档《OceanBase 安装部署工具》中 使用指南/命令行/使用命令行部署 obconfigserver。
部署 Binlog Server 的机器与 ODP、 OceanBase 数据库以及元数据库之间网络互通:
ODP 将使用
binlog_service_ip作为 Binlog Server 的服务地址,请确保 ODP 所在机器能够访问该地址。ODP 需要访问业务租户对应的 Binlog 实例获取当前的 Binlog 信息,请确保 ODP 所在机器能够访问 Binlog 实例的地址。Binlog Server 默认会从 8100 端口开始预先占用 256 个端口用于分配给 Binlog 实例,因此需要确保 ODP 所在机器能够访问 Binlog 实例所在机器的 8100-8355 端口。如需调整该端口范围,请修改 本地配置文件 中的
start_tcp_port和reserved_ports_num。Binlog Server 所在机器需要能够访问 OceanBase 数据库运行实例的 IP、 SQL 端口和 RPC 端口,以及元数据库的 IP 和端口。
Binlog Server 机器中已安装 openssl。
操作步骤
执行以下操作需确保当前用户拥有管理员权限。
说明
本节介绍的是如何手动解压并部署社区版 Binlog 服务,目前支持使用 obd V3.1.0 及之后版本部署并管理社区版 Binlog 服务,具体介绍可参见官网《OceanBase 安装部署工具》文档 部署 Binlog 服务。
步骤一:安装程序包
根据所用机器是否可以访问外部网络,分为在线安装和离线安装两种安装方法。
注意
本步骤介绍的是社区版 obbinlog 的安装方法,企业版 obbinlog 需自行联系 OceanBase 技术支持人员获取安装包。
当机器可以访问外部网络时,您可在添加 OceanBase 软件源后直接执行 yum 命令安装 obbinlog,安装后 obbinlog 的安装目录为 /home/ds/oblogproxy。
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
sudo yum install -y obbinlog-ce
说明
YUM 命令默认安装最新版本,您可通过声明版本号安装指定版本,如使用 yum install -y obbinlog-ce-4.0.1 命令安装 obbinlog V4.0.1,推荐安装最新版本。
当机器无法访问外部网络时,您可访问 官网下载中心,搜索 OceanBase Binlog 服务,或访问 阿里云 yum 源,根据实际需要下载系统对应的 obbinlog-ce 程序包,并将其上传到所用机器。该程序包的发版记录见 版本发布记录,建议选用最新版本。
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/obbinlog-ce-4.0.1-100000162024122511.el7.x86_64.rpm
下载 RPM 包后,您可在安装包所在目录下执行如下命令进行安装,完成后程序的目录为 /home/ds/oblogproxy。
sudo yum install ./obbinlog-ce-4.0.1-100000162024122511.el7.x86_64.rpm
您也可以使用如下命令将程序包安装到指定目录。
sudo rpm -ivh --prefix=/usr/local/oblogproxy ./obbinlog-ce-4.0.1-100000162024122511.el7.x86_64.rpm
步骤二:配置并启动 Binlog Server
我们提供快速部署和自定义配置两种方法配置并启动 Binlog Server,您可根据实际需要选择合适的方法部署 Binlog Server。
为了方便用户配置 Binlog Server,我们在安装目录下提供了部署脚本 env/deploy.sh,使用它可以在默认配置下快速启动 Binlog Server。
步骤一:修改 env/deploy.conf.json
进入程序工作目录,将准备的元数据库信息填入文件 env/deploy.conf.json。
{
"host": "",
"port": 0,
"user": "",
"password": "",
"database": "",
"sys_user": "",
"sys_password": "",
"supervise_start": "",
"init_schema": "",
"node_ip": ""
}
参数说明:
| 配置项 | 描述 |
|---|---|
| host | 元数据库的 IP 地址或域名。 |
| port | 元数据库的 SQL 端口。 |
| user | 元数据库的连接用户名。 |
| password | 元数据库的连接密码。 |
| database | 元数据库中使用的 database 名,需确保配置的 database 在元数据库中已存在,不填时默认为 binlog_cluster。 |
| sys_user | 需要生成 Binlog 文件的 OceanBase 数据库系统租户下的用户名。
注意该用户名应当是不包含租户名和集群名的 user 名,如 |
| sys_password | sys_user 对应用户的密码。 |
| supervise_start | 控制本节点是否使用 supervisord 启动,不填时默认为 false。
注意当 obbinlog 的安装目录为自定义值时, |
| init_schema | 控制是否初始化元数据库,不填时默认为 true。当启动集群首个节点时应当设置为 true,其他场景下应当设置为 false。 |
| node_ip | 当前节点的 IP,仅支持单个 IPv4 地址,不填时默认取 hostname -i 的返回值。
说明当所用机器存在多个网卡时, |
说明
env/deploy.conf.json 文件中,sys_user 和 sys_password 主要用于对待生成 Binlog 文件的数据库进行鉴权,为可选参数。若未在文件中配置,后续创建 Binlog 任务时需要在命令中指定。
步骤二:启动 Binlog Server 节点
在 obbinlog 安装目录下执行以下命令启动当前 Binlog Server 节点。
sudo sh env/deploy.sh -m deploy -f env/deploy.conf.json
注意
deploy.sh 脚本将会修改 conf/conf.json,该操作不可逆,且不可以重复执行。如果首次执行失败,请参考 自定义配置启动 Binlog Server 内容进行操作。
该 deploy.sh 脚本主要进行了以下操作:
安装依赖项:
jq、libstdc++.so.6、mysql、diff。读取
env/deploy.conf.json文件中的属性,未填写的项置为默认值。当
init_schema值为true时,创建元数据表。将元数据库连接信息写入
conf/conf.json文件,并设置binlog_mode为true。检查
supervise_start值:为
true时调用env/install.sh脚本,该脚本会安装 supervisord 并使用 supervisord 启动程序。不为
true时,根据情况不同有如下两种处理逻辑:若
sys_user和sys_password均不为空,将调用run.sh脚本的 config_sys 函数替换conf/conf.json文件中的ob_sys_username和ob_sys_password,并执行run.sh start启动程序。若
sys_user和sys_password中任一配置项为空,直接执行run.sh start启动程序。
启动完成后,可以通过 MySQL 客户端或 OBClient 进行连接,继续执行相关的命令。
mysql -h127.0.0.1 -P2983
步骤一:安装运行环境依赖
配置 gcc 环境
cd ${deploy_path} sudo cp ./deps/lib/libstdc++.so.6.0.28 /usr/lib64/ cd /usr/lib64 sudo ln -sf libstdc++.so.6.0.28 libstdc++.so.6安装其他依赖工具
sudo yum install -y jq mysql diffutils
步骤二:配置 conf.json
修改 conf/conf.json,配置项详情请参考 本地配置。其中以下配置项必须根据实际情况进行配置:
- binlog_mode:设置为
true。 - database_ip:填写元数据库 IP。
- database_port:填写元数据库端口。
- database_name:填写元数据库 database 名。
- user:连接元数据库所用的用户名。
- password:连接元数据库所用用户对应的密码。
- node_ip:当前节点的 IP。
如果您希望为后续创建 Binlog 任务时使用的账密配置一个默认值,可通过如下命令将系统租户下用户的用户名和密码写入配置文件。
sudo ./run.sh config_sys <sys_user> <sys_password>
注意
sys_user 和 sys_password 需设置为待生成 Binlog 文件的 OceanBase 数据库系统租户下的用户名及其密码,并且用户名应当是不包含租户名和集群名的 user 名,如 root。
步骤三:初始化元数据库
在启动首个 Binlog Server 前,需要在元数据库中创建所需的表。请您连接到元数据库中对应的 database 后执行文件 conf/schema.sql 以完成初始化操作,命令如下。
SOURCE conf/schema.sql
关于元数据表的详情情参考 元数据信息。
步骤四:启动 Binlog Server 节点
执行以下命令启动服务。
sudo ./run.sh start
启动完成后,可以通过 MySQL 客户端或 OBClient 进行连接,继续执行相关的命令。
mysql -h127.0.0.1 -P2983
(可选)步骤三:添加 Binlog Server 到已有 Binlog 集群
Binlog 服务会将使用同一个元数据库相同 database 的所有 Binlog Server 视为归属于同一个 Binlog 集群,因此,如果您想在一个 Binlog 服务中部署多个 Binlog Server,您只需要使用相同的元数据库配置在不同的物理机上重复上一步 步骤二:配置并启动 Binlog Server 操作即可。
注意
除首次启动 Binlog Server 节点外,部署启动其他 Binlog Server 时均不需要初始化元数据表。
部署完成后,可以通过 SHOW NODES 查询当前的节点信息。关于该命令的详细信息,请参见 节点管理。
步骤四:创建 Binlog 任务
首先,请确认需要创建 Binlog 任务的 OceanBase 租户的相关信息。您可以在连接到该 OceanBase 租户后,执行以下 SQL 获取相关信息。
集群名
SHOW PARAMETERS LIKE 'cluster';输出如下,
value列对应的值demo即为连接到的 OceanBase 租户所在的集群名:+-------+----------+------------+----------+---------+-----------+-------+---------------------+----------+---------+---------+-------------------+---------------+-----------+ | zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | default_value | isdefault | +-------+----------+------------+----------+---------+-----------+-------+---------------------+----------+---------+---------+-------------------+---------------+-----------+ | zone1 | observer | 10.10.10.1 | 2882 | cluster | NULL | demo | Name of the cluster | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | obcluster | 0 | +-------+----------+------------+----------+---------+-----------+-------+---------------------+----------+---------+---------+-------------------+---------------+-----------+租户名。
SHOW TENANT;输出如下,
obmysql即为连接到的 OceanBase 租户的租户名:+---------------------+ | Current_tenant_name | +---------------------+ | obmysql | +---------------------+Config Url。
SHOW PARAMETERS LIKE 'obconfig_url';输出如下,
value列对应的值即为连接到的 OceanBase 租户所在集群的 Config Url:+-------+----------+------------+----------+--------------+-----------+----------------------------------------------------------------------------+--------------------------+----------+---------+---------+-------------------+---------------+-----------+ | zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | default_value | isdefault | +-------+----------+------------+----------+--------------+-----------+----------------------------------------------------------------------------+--------------------------+----------+---------+---------+-------------------+---------------+-----------+ | zone1 | observer | 10.10.10.1 | 2882 | obconfig_url | NULL | http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=demo | URL for OBConfig service | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | | 0 | +-------+----------+------------+----------+--------------+-----------+----------------------------------------------------------------------------+--------------------------+----------+---------+---------+-------------------+---------------+-----------+
上述信息确认完毕后,连接到 Binlog Server,执行 CREATE BINLOG 命令创建该 OceanBase 租户的 Binlog 任务。关于该命令的详细信息,请参见 任务管理 中 创建 Binlog 任务 部分。
示例如下,该命令会为 demo 集群的 obmysql 租户创建 Binlog 任务。命令中的 CLUSTER URL 即为前述的 Config Url。REPLICATE NUM 为 2,因此会为该租户创建两个 Binlog 实例。
CREATE BINLOG FOR TENANT `demo`.`obmysql`
TO USER `root` PASSWORD `********`
WITH CLUSTER URL `http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=demo`
, REPLICATE NUM 2;
注意
- 命令中配置的
USER和PASSWORD为系统租户(sys租户)的用户和密码,而非待创建 Binlog 任务的租户(obmysql租户)。若启动 Binlog Server 时已设置系统租户账密,命令中可省去TO USER `root` PASSWORD `********`。 - 目前不支持为 sys 租户创建 Binlog 任务。
创建成功后,可执行 SHOW BINLOG INSTANCES; 获得所有 Binlog 实例状态信息,输出如下。
+------------+------------+-----------+---------------+------+------+--------+-------+---------+---------+---------------+-------------+--------------+-----------------+---------------+-------------+-------------+--------------+---------+------------------------------------------------+----------+
| name | ob_cluster | ob_tenant | ip | port | zone | region | group | running | state | obcdc_running | obcdc_state | service_mode | convert_running | convert_delay | convert_rps | convert_eps | convert_iops | dumpers | version | odp_addr |
+------------+------------+-----------+---------------+------+------+--------+-------+---------+---------+---------------+-------------+--------------+-----------------+---------------+-------------+-------------+--------------+---------+------------------------------------------------+----------+
| bl09vjd9tl | demo | obmysql | 10.10.10.1 | 8100 | | | | Yes | Running | Yes | Running | enabled | Yes | 676 | 1 | 0 | 77 | 0 | 4.0.1-92748c6c59534426d187977b13b61b7cdf4fa200 | NULL |
| wi7emnxpat | demo | obmysql | 10.10.10.1 | 8101 | | | | Yes | Running | Yes | Running | enabled | Yes | 570 | 1 | 0 | 77 | 0 | 4.0.1-92748c6c59534426d187977b13b61b7cdf4fa200 | NULL |
+------------+------------+-----------+---------------+------+------+--------+-------+---------+---------+---------------+-------------+--------------+-----------------+---------------+-------------+-------------+--------------+---------+------------------------------------------------+----------+
上述输出中,running、obcdc_running 和 convert_running 三列分别标识 Binlog 实例主进程、obcdc 进程和 converter 进程的运行状态。三者均为 Yes 时,表示 Binlog 实例运行正常,否则即表示相应组件的运行状态异常,请依据 问题排查手册 进行排查。
更多 Binlog 管控命令请参见 管控命令 章节。
步骤五:配置 ODP
注意
如果您需要使用多个 ODP,请在每个 ODP 上均进行以下操作。
通过 ODP 使用 root 用户连接 OceanBase 数据库的 sys 租户,或使用 root@proxysys 用户连接 ODP。
配置 Binlog Server 的 IP 和端口号(默认为
2983)到binlog_service_ip,格式为ip:port。ODP 自 V4.3.1 起支持为binlog_service_ip配置多个 IP,不同的 IP 使用英文分号(;)间隔。ALTER proxyconfig SET binlog_service_ip='10.10.10.1:2983';开启 Binlog 服务。
说明
ODP_CE V4.2.3 及之后版本已经移除
enable_binlog_service配置项,因此如果报错显示该配置项不存在可以忽略。ALTER proxyconfig SET enable_binlog_service='True';(可选)如果希望 Binlog 服务执行
SHOW CREATE TABLE时的返回结果完全兼容 MySQL 语法(即去除 OceanBase 数据库的扩展语法),可执行以下命令。ALTER proxyconfig SET init_sql='set _show_ddl_in_compat_mode = 1;';使用
SHOW PROXYCONFIG LIKE 'config_name'命令验证配置是否正确,如查看binlog_service_ip配置:SHOW PROXYCONFIG LIKE 'binlog_service_ip';输出如下:
+-------------------+--------------------+-------------------------------------------------------------------------------------------------------------------------+-------------+---------------+-------+--------------+ | name | value | info | need_reboot | visible_level | range | config_level | +-------------------+--------------------+-------------------------------------------------------------------------------------------------------------------------+-------------+---------------+-------+--------------+ | binlog_service_ip | 10.10.10.1:2983 | binlog service ip/hostname list, format ip1:sql_port1;hostname2:sql_port2, separate with ';'. prefer to use the forward | false | SYS | | LEVEL_VIP | +-------------------+--------------------+-------------------------------------------------------------------------------------------------------------------------+-------------+---------------+-------+--------------+
步骤六:验证结果
通过 ODP 连接到 Binlog 任务对应的租户,可以通过 SHOW MASTER STATUS; 等命令验证 Binlog 文件生成状态。更多关于 Binlog 命令的信息请参考 兼容性说明。
示例如下:
使用 ODP 连接到 Binlog 任务对应的租户
obclient -h10.10.10.1 -P2883 -uroot@obmysql -p -Doceanbase -A注意
本节执行的 Binlog 操作命令仅支持通过 ODP 连接租户时执行。
查看 Binlog 文件
SHOW MASTER STATUS;输出如下:
+------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 155 | | | | +------------------+----------+--------------+------------------+-------------------+查看所有 Binlog 事件
SHOW BINLOG EVENTS;输出如下:
+------------------+------+----------------+-----------+-------------+-----------------------------------+ | Log_name | Pos | Event_type | Server_id | End_log_pos | Info | +------------------+------+----------------+-----------+-------------+-----------------------------------+ | mysql-bin.000001 | 4 | Format_desc | 96754989 | 124 | Server ver: 5.7.38, Binlog ver: 4 | | mysql-bin.000001 | 124 | Previous_gtids | 96754989 | 155 | | +------------------+------+----------------+-----------+-------------+-----------------------------------+进行数据变更操作,验证 Binlog 是否正常运行
CREATE database test1;再次查看 Binlog 文件
SHOW MASTER STATUS;输出如下,Binlog 服务根据操作生成了新的 Binlog 内容:
+------------------+----------+--------------+------------------+----------------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+----------------------------------------+ | mysql-bin.000001 | 297 | | | 0f5addad-9be6-11ef-9c9d-00163e0808cc:1 | +------------------+----------+--------------+------------------+----------------------------------------+查看所有 Binlog 事件
SHOW BINLOG EVENTS;输出如下,可以看到有新的 Binlog 事件产生,说明 Binlog 在正常运行:
+------------------+------+----------------+-----------+-------------+-------------------------------------------------------------------+ | Log_name | Pos | Event_type | Server_id | End_log_pos | Info | +------------------+------+----------------+-----------+-------------+-------------------------------------------------------------------+ | mysql-bin.000001 | 4 | Format_desc | 96754989 | 124 | Server ver: 5.7.38, Binlog ver: 4 | | mysql-bin.000001 | 124 | Previous_gtids | 96754989 | 155 | | | mysql-bin.000001 | 155 | Gtid | 96754989 | 220 | SET @@SESSION.GTID_NEXT= '0f5addad-9be6-11ef-9c9d-00163e0808cc:1' | | mysql-bin.000001 | 220 | Query | 96754989 | 297 | use obmysql;CREATE database test1 | +------------------+------+----------------+-----------+-------------+-------------------------------------------------------------------+
相关操作
释放 Binlog 任务
若需要关闭指定租户的所有 Binlog 实例,同时删除已生成的存量 Binlog 文件,您可参照本节步骤释放 Binlog 任务。
登录 Binlog Server
mysql -h127.0.0.1 -P2983127.0.0.1和2983仅为示例 IP 和端口,您需根据实际情况替换为 Binlog Server 的 IP 和端口。释放 Binlog 任务
此处以释放
demo集群中obmysql租户的 Binlog 任务为例。DROP BINLOG FOR TENANT demo.obmysql;查看所有 Binlog 实例状态信息
SHOW BINLOG INSTANCES;查看输出中
ob_cluster和ob_tenant字段对应信息,若不存在demo和obmysql则表示对应租户的 Binlog 任务已经被释放。
停止 Binlog Server
启动 Binlog Server 后,您可在 obbinlog 的安装目录(默认为 /home/ds/oblogproxy)下,执行如下命令停止 Binlog Server:
[admin@test001 oblogproxy]$./run.sh stop
说明
停止 Binlog Server 不影响 Binlog 实例,未被停止的 Binlog 实例仍在运行中。
相关文档
通过 OCP 部署企业版 Binlog 服务的操作可参见官网《OceanBase 云平台》文档 创建 Binlog 集群。
通过 obd 部署社区版 Binlog 服务的操作可参见官网《OceanBase 安装部署工具》文档 部署 Binlog 服务。