Logo
数据加解密任务

加解密洗数任务 #

语法描述类型
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';