在运行DMDRS服务前,数据库管理员需要对数据库做如下准备工作。
| 配置服务 | 准备工作 |
|---|---|
| 源DMDRS |
|
| 目标DMDRS |
|
| DMDSS | 无 |
DMDRS服务通过分析MySQL/MariaDB数据库的binlog日志来捕获数据库的增量数据。数据库管理员可按下列方式进行配置。
设置MySQL/MariaDB数据库配置文件“my.ini”或“my.cnf”中server-id参数,设置log_bin参数值为mysql-bin,binlog_format参数值为row。当应用场景包含LOB数据的同步时,需要设置max_allowed_packet参数。
[mysqld] server-id=1 log_bin=mysql-bin binlog_format=row max_allowed_packet=100M
重启数据库服务,使配置生效。
查看数据库log_bin参数和binlog_format参数设置是否已生效。
SQL> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set, 1 warning (0.04 sec)
SQL> show variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW |
+---------------+-------+
1 row in set, 1 warning (0.00 sec)
当源数据库或目标数据库为MySQL时,启动DMDRS服务前,需要检查MySQL数据库相关的环境,确保源DMDRS服务器中有源DMDRS所需要的MySQL源数据库客户端库,以及目标DMDRS服务器中有目标DMDRS所需要的MySQL目标数据库客户端库。
使用ldd命令,查看libdrcmysql.so依赖的MySQL客户端库版本,默认是依赖libmysqlclient.so.18。
ldd ./libdrcmysql.so
如果源数据库版本为MySQL 8及以上版本,对应数据库的客户端库可能为libmysqlclient.so.21或以上版本。
如果没有对应libmysqlclient.so.18的版本库,可以在DMDRS执行程序目录下执行如下命令,将libmysqlclient.so.21或以上版本进行软连接处理。
ln -s libmysqlclient.so.21 libmysqlclient.so.18
如果配置了远程读功能,由于使用了客户端库相关接口,且程序默认使用库名称为libmysqlclient.so,可以在DMDRS执行程序目录下执行如下命令,将libdrcmysql.so依赖的MySQL客户端库拷贝一份,命名为libmysqlclient.so。
如果libdrcmysql.so依赖的MySQL客户端库为libmysqlclient.so.18。
cp libmysqlclient.so.18 libmysqlclient.so
如果libdrcmysql.so依赖的MySQL客户端库为libmysqlclient.so.21。
cp libmysqlclient.so.21 libmysqlclient.so
使用ldd命令,查看libdremysql.so依赖的MySQL客户端库版本,默认是依赖libmysqlclient.so.18。
ldd ./libdremysql.so
如果目标数据库版本为MySQL 8及以上版本,对应数据库的客户端库可能为libmysqlclient.so.21或以上版本。
如果没有对应libmysqlclient.so.18的版本库,可以在DMDRS执行程序目录下执行如下命令,将libmysqlclient.so.21或以上版本进行软连接处理。
ln -s libmysqlclient.so.21 libmysqlclient.so.18
请源数据库管理员和目标数据库管理员分别创建数据库同步用户DMDRS,并赋予同步所需权限。建议源数据库DMDRS用户不赋予DBA权限,赋予同步所需的最小权限即可,建议目标数据库DMDRS用户赋予DBA权限,如果不能赋予DBA权限,为确保同步的正确性,需赋予DMDRS用户同步所需的最小权限,最小权限配置具体请参见配置数据库同步用户最小权限章节。
说明
- 如果数据库管理员已赋予DMDRS同步用户DBA权限,则不需要配置数据库同步用户最小权限。
- 如果源数据库为MySQL/MariaDB 8及其以上版本,创建同步用户时使用mysql_native_password身份验证插件。
- 数据库同步用户DMDRS创建完成后,如果需要在用户下进行DDL和DML操作,需要数据库管理员赋予相应的操作权限。
DMDRS服务运行过程中,使用的数据库同步用户需要一定的权限访问数据库数据,如果不能赋予DMDRS同步用户DBA权限,为确保同步的正确性,数据库管理员可根据应用场景配置数据库同步用户的最小权限。
赋予MySQL/MariaDB源数据库同步用户最小权限的脚本示例请参见 8.2.1 MySQL/MariaDB源数据库同步用户最小权限脚本示例,具体的权限说明如下表所示。
| 权限类别 | 权限说明 | 权限 |
|---|---|---|
| 基础权限 | 需要连接登录权限(用户创建时默认授予)。 | 需要赋予如下权限:USAGE ON *.* |
| 需要检查进程信息。 | 需要赋予如下权限:PROCESS ON *.* | |
| 需要检查归档状态。 | 需要赋予如下权限:REPLICATION CLIENT ON *.* | |
| 远程日志读所需权限。 | 需要赋予如下权限:REPLICATION SLAVE ON *.* | |
| 装载相关权限 | 需要待装载表的查询权限。 | 需要赋予如下权限:SELECT ON <待装载表的模式名>.<待装载表的表名> |
| 需要待装载表的锁表权限。 | 需要赋予如下权限:LOCK TABLES ON <待装载表的模式名>.* | |
| 同步相关权限 | 需要待同步表的查询权限。 | 需要赋予如下权限:SELECT ON <待同步表的模式名>.<待同步表的表名> |
MySQL/MariaDB目标数据库同步用户最小权限
赋予MySQL/MariaDB目标数据库同步用户最小权限的脚本示例请参见 8.2.2 MySQL/MariaDB目标数据库同步用户最小权限脚本示例,具体的权限说明如下表所示。
| 权限类别 | 权限说明 | 权限 |
|---|---|---|
| 基础权限 | 启动时需要在dbname参数指定的目标库下创建辅助表和辅助存储过程。 | 需要赋予如下权限: CREATE|DROP|CREATE ROUTINE|INSERT|UPDATE|DELETE ON <目标库名>.* |
| 连接数据库时需要创建会话(用户创建时默认授予)。 | 需要赋予如下权限:USAGE ON *.* | |
| 装载与同步相关权限 | 需要目标数据库中已存在的待同步表的操作和查询权限。 | 需要赋予如下权限: INSERT|UPDATE|DELETE|SELECT ON <目标表的模式名>.<目标表名> |
| 需要目标数据库中未存在的待同步表的操作和查询权限。也可以在目标同步表创建后,同上行所述单独为每张表赋予操作和查询权限。 | 需要赋予如下权限: INSERT|UPDATE|DELETE|SELECT ON <目标表的模式名>.* | |
| 需要目标数据库中待同步对象的DDL权限。 | 需要赋予如下权限: CREATE|ALTER|DROP|INDEX|CREATE ROUTINE|ALTER ROUTINE|REFERENCES ON <目标表的模式名>.* |
DM8目标数据库同步用户最小权限
赋予DM8目标数据库同步用户最小权限的脚本示例请参见 8.2.3 DM8目标数据库同步用户最小权限脚本示例,具体的权限说明如下表所示。
| 权限类别 | 权限说明 | 权限 |
|---|---|---|
| 基础权限 | 目标DMDRS在执行DML时需要数据操作权限。 | 需要赋予如下权限:PUBLIC |
| 目标DMDRS在启动时需要在目标数据库中创建辅助表和辅助存储过程。 | 需要赋予如下权限:RESOURCE | |
| 目标DMDRS在启动时需要查询数据库的相关参数信息、系统表字典信息。 | 需要赋予如下权限:SOI、VTI | |
| 目标DMDRS在启动时需要同步用户有创建会话的权限。 | 需要赋予如下权限:CREATE SESSION | |
| 装载与同步相关权限 | 若需要同步在非同步用户模式下已存在的表/序列的数据,需要赋予在待同步表/序列上的DML权限或查询权限。 | 需要赋予如下权限: INSERT|UPDATE|DELETE ON <目标表的模式名>.<目标表名> SELECT ON <目标序列的模式名>.<目标序列名> |
| 若需要同步在非同步用户模式下未存在的表/序列的数据,可以先在装载时使用CREATE掩码同步创建表/序列DDL语句,然后赋予该表/序列的DML权限或查询权限。也可为同步用户赋予在所有表/序列上的DML权限或查询权限。 | 需要赋予如下权限: INSERT|UPDATE|DELETE|SELECT ANY TABLE SELECT ANY SEQUENCE | |
| 若需要同步在非同步用户模式下表的注释,需要赋予创建表注释的权限。 | 需要赋予如下权限: COMMENT ANY TABLE | |
| 若需要同步在非同步用户模式下的对象的DDL语句,需要赋予相应的DDL权限。 注:装载表时需要赋予TABLE和INDEX的权限。授予ANY权限前,需先执行语句“ALTER SYSTEM SET 'ENABLE_DDL_ANY_PRIV'=1 BOTH;”开启ANY的授权权限。 |
需要赋予如下权限: CREATE|ALTER|DROP ANY <对象类型> | |
| 若需要非模式对象(表空间、用户、角色和公共同义词)的DDL操作权限,需要赋予同步用户相应的DDL权限。其中角色和公共同义词不需要ALTER权限。 | 需要赋予如下权限: CREATE|ALTER|DROP <对象类型> | |
| 若需要同步在非同步用户模式下的非表对象的DDL语句或源DMDRS的DDL_MASK配置SQL掩码情况下同步对象的DDL语句,需要赋予同步用户辅助存储过程的执行权限以及非同步用户下模式所属用户的存储过程的创建权限。 | 需要赋予如下权限: EXECUTE ON PROCEDURE "DRS_$DDL_SQL_PROC" CREATE PROCEDURE TO <非同步用户下模式所属的用户> |
在配置和运行DMDRS服务前,需要对DMDRS做如下准备工作。
在配置DMDRS服务前,需规划DMDRS服务的Manager模块的端口号,包括源DMDRS、目标DMDRS服务和DMDSS服务的Manager模块的端口号。
注意不同的应用场景,DMDRS所包括的DMDRS服务不同。如果在同一台服务器上部署不同的服务,必须确保这些服务的Manager模块的端口号的唯一性。
说明DMDRS的运行用户与安装用户使用同一个用户dmdrs,安装用户请参见《DMDRS安装手册》。
DMDRS运行用户需要以下权限:
Windows:运行用户具有管理员权限。
Linux/Unix系统:运行用户具有DMDRS服务所在目录及子目录的读、写和执行权限。源DMDRS的运行用户应同数据库归档文件目录属同一用户组,该用户组对归档文件所在目录及子目录有读权限。
DMDRS服务运行过程中,需要使用数据库的驱动文件访问数据库数据。
源DMDRS服务:需要使用MySQL C API驱动文件访问MySQL/MariaDB源数据库数据,用户需要在源DMDRS服务器的环境变量中添加MySQL C API驱动文件路径。
目标DMDRS服务:需要使用目标数据库对应的驱动文件访问目标数据库数据,用户需要在目标DMDRS服务器的环境变量中添加各数据库对应的驱动文件路径。
不同数据库对应的驱动如下所示。
DM8数据库:DMDPI驱动
MySQL/MariaDB数据库:MySQL C API驱动
Kafka:librdkafka驱动
说明
- 设置环境变量前,请确保源DMDRS与目标DMDRS服务器上已安装数据库的驱动,且驱动版本与数据库版本相匹配。
- 设置环境变量前,请向数据库管理员获取数据库驱动路径。
- 由于操作系统、终端不同,设置环境变量命令或操作步骤会略有差异。
以设置MySQL数据库的MySQL C API驱动的环境变量为例,介绍常用操作系统下设置环境变量的方法。
Linux系统
在终端的配置文件中添加设置环境变量命令。
export LD_LIBRARY_PATH=<MySQL C API驱动路径>:$LD_LIBRARY_PATH
UNIX系统
在终端的配置文件中添加设置环境变量命令。
export LIBPATH=<MySQL C API驱动路径>:$LIBPATH
Windows系统
在Windows桌面或“开始”菜单,右键单击“此电脑”,选择“属性”。
在打开的“设置”窗口中,选择“高级系统设置”。
在弹出的“系统属性”对话框的“高级”选项卡中,选择“环境变量”。
在“环境变量”对话框中,选择“系统变量”中系统变量“Path”,再选择“系统变量”下的“编辑”。
在“编辑环境变量”表格中,填写“MySQL C API驱动路径”。
文章
阅读量
获赞
