加解密洗数任务 #
语法 | 描述 | 类型 |
---|---|---|
ALTER ENCRYPTING RULE | 修改数据加密洗数规则 | RAL |
SHOW ENCRYPTING RULE | 查看数据加密洗数规则 | RAL |
ENCRYPT TABLE | 启动加密洗数作业 | RAL |
SHOW ENCRYPTING LIST | 查看加密洗数作业 | RAL |
SHOW ENCRYPTING STATUS | 查看加密洗数状态 | RAL |
COMMIT ENCRYPTING | 提交加密洗数作业 | RAL |
ROLLBACK ENCRYPTING | 回滚加密洗数作业 | RAL |
ALTER DECRYPTING RULE | 修改数据解密洗数规则 | RAL |
SHOW DECRYPTING RULE | 查看数据解密洗数规则 | RAL |
DECRYPT TABLE | 启动解密洗数作业 | RAL |
SHOW DECRYPTING LIST | 查看解密洗数作业 | RAL |
SHOW DECRYPTING STATUS | 查看解密洗数状态 | RAL |
COMMIT DECRYPTING | 提交解密洗数作业 | RAL |
ROLLBACK DECRYPTING | 回滚解密洗数作业 | RAL |
REENCRYPT TABLE WITH RULE tableName | 换密钥第一阶段语句 | RAL |
START REENCRYPTING jobId | 换密钥第二阶段洗数语句 | RAL |
STOP ENCRYPTING jobId | 停止加密洗数作业 | RAL |
START ENCRYPTING jobId | 重启加密洗数作业 | RAL |
STOP DECRYPTING jobId | 停止解密洗数作业 | RAL |
START DECRYPTING jobId | 重启解密洗数作业 | RAL |
STOP REENCRYPTING jobId | 停止换密钥作业 | RAL |
1. 定义数据加密洗数规则 #
ALTER ENCRYPTING RULE
因 ENCRYPTING RULE 具有默认值,无需创建,仅提供 ALTER 语句。
完整配置 DistSQL 示例
ALTER ENCRYPTING RULE (
READ(
WORKER_THREAD=20,
BATCH_SIZE=1000,
SHARDING_SIZE=10000000,
RATE_LIMITER (TYPE(NAME='QPS',PROPERTIES('qps'='500')))
),
WRITE(
WORKER_THREAD=20,
BATCH_SIZE=1000,
RATE_LIMITER (TYPE(NAME='TPS',PROPERTIES('tps'='2000')))
),
STREAM_CHANNEL (TYPE(NAME='MEMORY',PROPERTIES('block-queue-size'='2000')))
);
配置说明
ALTER ENCRYPTING RULE (
READ( -- 数据读取配置。如果不配置则部分参数默认生效。
WORKER_THREAD=20, -- 从源端摄取全量数据的线程池大小。如果不配置则使用默认值。
BATCH_SIZE=1000, -- 一次查询操作返回的最大记录数。如果不配置则使用默认值。
SHARDING_SIZE=10000000, -- 全量数据分片大小。如果不配置则使用默认值。
RATE_LIMITER ( -- 限流算法。如果不配置则不限流。
TYPE( -- 算法类型。可选项:QPS
NAME='QPS',
PROPERTIES( -- 算法属性
'qps'='500'
)))
),
WRITE( -- 数据写入配置。如果不配置则部分参数默认生效。
WORKER_THREAD=20, -- 数据写入到目标端的线程池大小。如果不配置则使用默认值。
BATCH_SIZE=1000, -- 一次批量写入操作的最大记录数。如果不配置则使用默认值。
RATE_LIMITER ( -- 限流算法。如果不配置则不限流。
TYPE( -- 算法类型。可选项:TPS
NAME='TPS',
PROPERTIES( -- 算法属性
'tps'='2000'
)))
),
STREAM_CHANNEL ( -- 数据通道,连接生产者和消费者,用于 read 和 write 环节。如果不配置则默认使用 MEMORY 类型。
TYPE( -- 算法类型。可选项:MEMORY
NAME='MEMORY',
PROPERTIES( -- 算法属性
'block-queue-size'='2000' -- 属性:阻塞队列大小
)))
);
2. 查看数据加密洗数规则 #
SHOW ENCRYPTING RULE
参数说明
无
示例
SHOW ENCRYPTING RULE
3. 启动加密洗数作业 #
ENCRYPT TABLE tableName;
参数说明
参数名 | 说明 |
---|---|
tableName | 加密洗数的表 |
示例
启动表的洗数
ENCRYPT TABLE t_user;
启动表的指定列的洗数
ENCRYPT TABLE t_user (password);
启动表的指定列的衍生列的洗数
ENCRYPT TABLE t_user (username(LIKE_QUERY));
4. 查看加密洗数作业 #
SHOW ENCRYPTING LIST;
参数说明
无
示例
SHOW ENCRYPTING LIST;
5. 查看加密洗数状态 #
SHOW ENCRYPTING STATUS jobId;
参数说明
参数名 | 说明 |
---|---|
jobid | 作业id |
示例
mysql> SHOW ENCRYPTING STATUS j5202p0000e2af8bea809d29f6ab4b3ac4c99b5789;
+-------------+----------+--------+-------------------------+-------------------------------+---------------+
| table_name | status | active | processed_records_count | inventory_finished_percentage | error_message |
+-------------+----------+--------+-------------------------+-------------------------------+---------------+
| t_user | FINISHED | true | 3 | 100 | |
| t_user_info | FINISHED | true | 3 | 100 | |
+-------------+----------+--------+-------------------------+-------------------------------+---------------+
输出说明
- table_name : 逻辑表名
- status : 作业状态
- active : 作业是否在运行
- processed_records_count : 已经处理的记录数
- inventory_finished_percentage : 完成百分比
- error_message : 错误信息
6. 提交加密洗数作业 #
COMMIT ENCRYPTING jobId;
参数说明
参数名 | 说明 |
---|---|
jobid | 作业id |
示例
COMMIT ENCRYPTING 'j51017f973ac82cb1edea4f5238a258c25e89';
7. 回滚加密洗数作业 #
ROLLBACK ENCRYPTING jobId;
参数说明
参数名 | 说明 |
---|---|
jobid | 作业id |
示例
ROLLBACK ENCRYPTING 'j51017f973ac82cb1edea4f5238a258c25e89';
8. 定义数据解密洗数规则 #
ALTER DECRYPTING RULE
因 DECRYPTING RULE 具有默认值,无需创建,仅提供 ALTER 语句。
完整配置 DistSQL 示例
ALTER DECRYPTING RULE (
READ(
WORKER_THREAD=20,
BATCH_SIZE=1000,
SHARDING_SIZE=10000000,
RATE_LIMITER (TYPE(NAME='QPS',PROPERTIES('qps'='500')))
),
WRITE(
WORKER_THREAD=20,
BATCH_SIZE=1000,
RATE_LIMITER (TYPE(NAME='TPS',PROPERTIES('tps'='2000')))
),
STREAM_CHANNEL (TYPE(NAME='MEMORY',PROPERTIES('block-queue-size'='2000')))
);
9. 查看数据解密洗数规则 #
SHOW DECRYPTING RULE
参数说明
无
示例
SHOW DECRYPTING RULE
10. 启动解密洗数作业 #
DECRYPT TABLE tableName;
参数说明
参数名 | 说明 |
---|---|
tableName | 加密洗数的表 |
示例
DECRYPT TABLE t_user;
启动表的反洗数
DECRYPT TABLE t_user;
启动表的指定列的反洗数
DECRYPT TABLE t_user (password);
特别说明
在启动反洗数时,若目标表为单表
且物理表中不包含明文列,Engine 将会自动创建明文列用于反洗数,否则用户需自行创建明文列。(该特性支持 MySQL、PostgreSQL、openGauss、Oracle 和 Hive 存储单元)
11. 查看解密洗数作业 #
SHOW DECRYPTING LIST;
参数说明
无
示例
SHOW DECRYPTING LIST;
12. 查看解密洗数状态 #
SHOW DECRYPTING STATUS jobId;
参数说明
参数名 | 说明 |
---|---|
jobid | 作业id |
示例
mysql> SHOW DECRYPTING STATUS j5302p0000e2af8bea809d29f6ab4b3ac4c99b5789;
+------+-------------+----------+--------+---------------------+---------------+
| item | data_source | status | active | finished_percentage | error_message |
+------+-------------+----------+--------+---------------------+---------------+
| 0 | testdb | FINISHED | true | 100 | |
+------+-------------+----------+--------+---------------------+---------------+
输出说明
- data_source : 作业任务项所在存储单元
- status : 作业状态
- active : 作业是否在运行
- finished_percentage : 完成百分比
- error_message : 错误信息
13. 提交解密洗数作业 #
COMMIT DECRYPTING jobId;
参数说明
参数名 | 说明 |
---|---|
jobid | 作业id |
示例
COMMIT DECRYPTING 'j51017f973ac82cb1edea4f5238a258c25e89';
14. 回滚解密洗数作业 #
ROLLBACK DECRYPTING jobId;
参数说明
参数名 | 说明 |
---|---|
jobid | 作业id |
示例
ROLLBACK DECRYPTING 'j51017f973ac82cb1edea4f5238a258c25e89';
15. 换密钥第一阶段语句 #
REENCRYPT TABLE WITH RULE tableName
重洗数支持自动创建明文列,在作业完成后,会自动删除明文列。
参数说明
参数名 | 说明 |
---|---|
tableName | 换密钥的表 |
示例
REENCRYPT TABLE WITH RULE t_encrypt (
COLUMNS(
(NAME=user_id,PLAIN=user_plain,CIPHER=user_cipher,ASSISTED_QUERY_COLUMN=user_assisted,LIKE_QUERY_COLUMN=user_like,ENCRYPT_ALGORITHM(TYPE(NAME='AES',PROPERTIES('aes-key-value'='665544aaa'))),ASSISTED_QUERY_ALGORITHM(TYPE(NAME='AES',PROPERTIES('aes-key-value'='523234abc'))), LIKE_QUERY_ALGORITHM(TYPE(NAME='CHAR_DIGEST_LIKE'))),
(NAME=order_id, PLAIN=order_plain,CIPHER =order_cipher, ENCRYPT_ALGORITHM(TYPE(NAME='AES',PROPERTIES('aes-key-value'='445533ccc'))))
), QUERY_WITH_CIPHER_COLUMN=true);
16. 换密钥第二阶段洗数语句 #
START REENCRYPTING jobId;
参数说明
参数名 | 说明 |
---|---|
jobid | 换密钥作业的id |
示例
START REENCRYPTING j54014fb26631db0f7149741422d86cc5dfe6;
17. 停止加密洗数作业 #
STOP ENCRYPTING jobId;
参数说明
参数名 | 说明 |
---|---|
jobid | 作业id |
示例
STOP ENCRYPTING 'j51017f973ac82cb1edea4f5238a258c25e89';
18. 重启加密洗数作业 #
START ENCRYPTING jobId;
参数说明
参数名 | 说明 |
---|---|
jobid | 作业id |
示例
START ENCRYPTING 'j51017f973ac82cb1edea4f5238a258c25e89';
19. 停止解密洗数作业 #
STOP ENCRYPTING jobId;
参数说明
参数名 | 说明 |
---|---|
jobid | 作业id |
示例
STOP DECRYPTING 'j51017f973ac82cb1edea4f5238a258c25e89';
20. 重启解密洗数作业 #
START DECRYPTING jobId;
参数说明
参数名 | 说明 |
---|---|
jobid | 作业id |
示例
START DECRYPTING 'j51017f973ac82cb1edea4f5238a258c25e89';
21. 停止换密钥洗数作业 #
STOP REENCRYPTING jobId;
参数说明
参数名 | 说明 |
---|---|
jobid | 作业id |
示例
STOP REENCRYPTING 'j51017f973ac82cb1edea4f5238a258c25e89';