可用性校验
Usability Check
关于此功能
可用性校验提供数据库连接校验和权限校验的功能。您可以通过可用性校验同时实现连接验证和权限验证,即同时测试数据库能否连接成功以及数据库权限校验是否通过,以获得支持/可用的连接模式信息(读取模式+写入模式统称)。

操作步骤
您可以在节点的基本配置中点击「可用性校验」按钮进行可用性校验。校验结果将记入日志。
校验将先检测数据库连接情况。数据库连接成功后,进入权限验证;数据库如连接失败,将提示您数据库连接失败,不进入权限验证。 当校验时间超过3分钟,将以弹窗形式提示您「节点可用性校验超时,请重新操作。」校验结果除了「超时」的状态以外均用右上角提示窗展示。
可用性校验后,连接模式将显示哪些读取模式和写入模式可用。
您也可以在完成节点基本配置后,通过保存后的提示弹窗进行上述可用性校验流程。(如果您在配置节点后已进行了可用性校验,后立即保存,将不弹出是否进行可用性校验提示弹窗。)
◎ 连接验证
数据库连接验证失败的两种情况:
节点未找到服务器,请检查服务器地址和端口或用户名
节点用户名或密码输入有误,请重新输入
◎ 权限验证
权限验证失败的两种情况:
执行SQL语句失败,权限验证失败
执行SQL语句成功,权限缺失,权限验证失败
具体权限信息:
MySQL
MySQL
获取版本信息
获取DB版本信息
select version()
数据库连接成功,获取数据库版本信息失败!
JDBC-读取模式
相关视图和表的 select 权限
SHOW GRANTS
数据库连接成功,获取权限信息查询失败 – 检查缺失权限失败!
数据库连接成功,权限验证失败,缺少权限:SELECT
数据库连接成功,权限验证失败,缺少权限:REPLICATION SLAVE, REPLICATION CLIENT
MySQL
BINLOG-读取模式
相关视图和表的 select 权限, replication slave, replication client
版本校验大于8
数据库连接成功,该版本不支持binlog
SHOW VARIABLES LIKE 'log_bin'
数据库连接成功,获取参数log_bin失败 – 缺少SELECT权限!
数据库连接成功,权限验证失败,未开启log_bin=on
SHOW VARIABLES LIKE 'binlog_format'
数据库连接成功,获取参数binlog_format失败 – 缺少SELECT权限!
数据库连接成功,权限验证失败,未开启binlog_format=row
JDBC-写入模式
SELECT 权限, CREATE OBJECT 权限, ALTER/ INSERT / UPDATE / DELETE TABLE;
SHOW GRANTS
数据库连接成功,获取权限信息查询失败 – 缺少SELECT权限
数据库连接成功,权限验证失败,缺少权限:ALTER,DELETE,CREATE,UPDATE,INSERT
Oracle
获取版本信息
获取DB版本信息
SELECT DISTINCT VERSION FROM product_component_version
数据库连接成功,获取数据库版本信息查询失败!
JDBC-读取模式
相关视图和表的 select 权限
null
DataPipeline Oracle采集代理-读取模式
需要DBA权限;
agent的web控制台需要sysdba的角色用户
url请求:getTopicPrefix
数据库连接成功,备端状态获取失败!
数据库连接成功,权限验证失败:请求系统信息失败
数据库连接成功,权限验证失败:Oracle采集代理目的地端已经绑定了另一个topic前缀
SELECT supplemental_log_data_min,supplemental_log_data_all FROM v$database
数据库连接成功,检查logminer log level失败!
数据库连接成功,权限验证失败: supplemental_log_data_min,supplemental_log_data_all
select * from v$locked_object where rownum = 1
数据库连接成功,Oracle采集代理获取查询v$locked_object权限失败
select * from dba_objects where rownum = 1
数据库连接成功,Oracle采集代理获取查询dba_objects失败
select * from v$database where rownum = 1
数据库连接成功,Oracle采集代理获取查询v$database失败
LogMiner-读取模式
select any transaction, logmining, execute on dbms_logmnr_d, execute on dbms_logmnr, execute on dbms_flashback, create session, resource, select any dictionary, flashck any table, execute_catalog_role, 以及相关视图和表的 select 权限
非SQL校验
数据库连接成功,权限验证失败:该版本不支持Logminer
SELECT GRANTED_ROLE FROM USER_ROLE_PRIVS
null
数据库连接成功,缺少权限: EXECUTE_CATALOG_ROLE
SELECT PRIVILEGE FROM user_sys_privs
数据库连接成功,权限验证失败,缺少权限:user_sys_privs
SELECT table_name FROM user_tab_privs u WHERE u.privilege='EXECUTE'
数据库连接成功,权限验证失败,缺少权限:user_tab_privs
SELECT LOG_MODE FROM v$database
数据库连接成功,检查log_mode失败!
数据库连接成功,权限验证失败:LOG_MODE不是ARCHIVELOG
SELECT supplemental_log_data_min,supplemental_log_data_all FROM v$database
数据库连接成功,检查logminer log level失败!
数据库连接成功,权限验证失败: supplemental_log_data_min,supplemental_log_data_all
SELECT name FROM v$archived_log WHERE STATUS = 'A' %s AND rownum=1 ORDER BY name DESC AND name is NOT NULL
数据库连接成功,检查v$archived_log失败!
数据库连接成功,权限验证失败:v$archived_log为空
SELECT name FROM v$archived_log WHERE STATUS = 'A' %s AND rownum=1 ORDER BY name DESC AND name NOT IN (%s)
execute CALL sys.dbms_logmnr.add_logfile(logfilename=>'%s',options=>dbms_logmnr.new)
数据库连接成功,LogMiner添加日志文件失败!
execute CALL sys.dbms_logmnr.start_logmnr(Options => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG)
数据库连接成功,LogMiner解析日志文件失败!
JDBC-写入模式
CREATE SESSION, RESOURCE, SELECT ON V_$SESSION
null
MS SQL Server
获取版本信息
获取DB版本信息
select @@version
数据库连接成功,获取数据库版本信息失败!
JDBC-读取模式
要求需要同步的表拥有增量识别字段,用于同步增量数据。选择的字段必须为可排序,例如数字或时间类型,推荐的字段类型一般为随数据更新而自增的字段,如:更新序列号(例: SequenceID),更新时间戳(例: UpdatedAt)
null
Change Tracking-读取模式
用户权限:select on table, view change tracking on table, view change tracking on schema
非SQL校验
数据库连接成功,权限验证失败:版本不支持CT
SELECT DB_NAME(database_id) each_db_name FROM sys.change_tracking_databases
数据库连接成功,查询数据库是否开启CT失败!
数据库连接成功,权限验证失败:数据库未开启CT
select NAME from master.dbo.sysdatabases
数据库连接成功,查询database失败!
数据库连接成功,权限验证失败:不存在支持CT的表
"" SELECT tbl.table_name table_name,convert(nvarchar(2000), prop.value) comment FROM [%1$s].[INFORMATION_SCHEMA].[TABLES] tbl LEFT JOIN [%1$s].[sys].[extended_properties] prop ON prop.major_id = object_id(tbl.table_schema + '.' + tbl.table_name) AND prop.minor_id = 0 WHERE tbl.TABLE_CATALOG='%1$s' and tbl.table_schema = '%2$s'""
数据库连接成功,获取表名信息查询失败!
select NAME from %s.sys.schemas
"" select schema_name = object_schema_name(ind.object_id) , table_name = t.name, index_name = ind.name, column_name = col.name, column_position = ic.index_column_id, collation = ic.is_descending_key, is_unique = ind.is_unique, index_type = ind.type_desc, is_primary_key = ind.is_primary_key from [%1$s].sys.indexes ind inner join [%1$s].sys.index_columns ic on ind.object_id = ic.object_id and ind.index_id = ic.index_id inner join ( select b.name as datatype, a.name, a.object_id, a.column_id, a.system_type_id, a.user_type_id from [%1$s].sys.columns a join [%1$s].sys.types b on a.system_type_id = b.system_type_id and a.user_type_id = b.user_type_id) col on ic.object_id = col.object_id and ic.column_id = col.column_id inner join [%1$s].sys.tables t on ind.object_id = t.object_id where ind.is_disabled = 0 and ind.object_id in (%2$s) ""
JDBC-写入模式
用户权限:insert / update / delete / alter / exec / create / references / select on schema / alter any connection
select 'BLANK',0 UNION ALL select '%1$s',Has_perms_by_name(DB_NAME(),'DATABASE','%1$s')
数据库连接成功,获取权限信息查询失败 --检查缺失权限失败!
数据库连接成功,权限验证失败,缺少权限:ALTER,DELETE,CREATE,UPDATE,INSERT
SELECT * FROM [%s].[sys].[schemas] WHERE [schema_id]<=2 OR [schema_id] BETWEEN 5 AND 16383
数据库连接成功,获取权限信息查询失败!
数据库连接成功,权限验证失败:Schema %s 不存在
Kafka
Kafka客户端-读取模式
具备需要进行读取topic的消费权限
Kafka客户端-写入模式
具备需要进行写入topic的消费权限
PostgreSQL
获取版本信息
获取DB版本信息
SHOW server_version
数据库连接成功,获取数据库版本信息失败!
JDBC-读取模式
相关视图和表的 select 权限
wal2json-读取模式
PostgreSQL replication 角色、PostgreSQL login 角色,需要同步的表的 select权限
非SQL校验
数据库连接成功,权限验证失败:版本不支持wal2json
QianBase
QianBaseCDC
查看是否开启Rangefeed功能
SHOW CLUSTER SETTING kv.rangefeed.enabled;
JDBC
相关视图和表的 SELECT 权限
IBM Db2
IBM Db2采集代理-读取模式
相应数据库的Date access 角色
TiDB
JDBC-写入模式
select, create object, insert, update, delete, drop, truncate, select on mysql.*
SELECT t.Select_priv,t.Insert_priv,t.Update_priv, t.Delete_priv,t.Create_priv,t.Alter_priv,t.Drop_priv FROM mysql.db t WHERE t.host='%s' AND t.user='%s' AND t.db='%s' LIMIT 1
数据库连接成功,获取权限信息查询失败! -- 检查缺失权限失败!
数据库连接成功,权限验证失败,缺少权限:Select_priv,Insert_priv,Delete_priv,Create_priv, Update_priv,Alter_priv,Drop_priv
Greenplum
获取版本信息
获取DB版本信息
SHOW server_version
数据库连接成功,获取数据库版本信息失败
JDBC-写入模式
select, create object, insert, update, delete, drop, truncate
select HAS_SCHEMA_PRIVILEGE('%s', 'CREATE')
数据库连接成功,检查权限失败!
数据库连接成功,权限验证失败,缺少权限:CREATE_SCHEMA,USAGE_SCHEMA
select HAS_SCHEMA_PRIVILEGE('%s', 'USAGE')
SequoiaDB
JDBC-写入模式
SequoiaDB对于用户的DML,DDL,DQL等操作并没有明确的权限划分,因此每个用户都具有相同权限,数据管理员(安装时创建,默认为sdbadmin)以及用户列表 SDB_LIST_USERS 中的所有用户 都可以在DataPipeline中新建数据节点。
null
Redshift
JDBC-写入模式
空
Redis
Redis客户端-写入模式
空
HDFS
HDFS客户端
根目录要存在; 根目录的读写权限
fileSystem.exists(path)
HDFS连接成功,无法判断路径是否存在
HDFS连接成功,权限验证失败,缺少权限:读
HDFS连接成功,权限验证失败,缺少权限:写
阿里云OSS
AliyunOSS-SDK
数据读取:需要拥有bucket 的private 或者 PublicReadWrite 或者 public-read权限。
数据写入:需要拥有对 bucket 的 Private 或者 PublicReadWrite 权限。
FTP
FTP客户端
空
注意事项
最后更新于
这有帮助吗?