自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL 表空間加密插件 Keyring

數(shù)據(jù)庫 MySQL
MySQL支持對InnoDB單表空間、通用表空間、系統(tǒng)表空間和Redo、Undo文件進行靜態(tài)加密。

[[422712]]

本文轉(zhuǎn)載自微信公眾號「數(shù)據(jù)和云」,作者楊明翰 。轉(zhuǎn)載本文請聯(lián)系數(shù)據(jù)和云公眾號。

前言

MySQL支持對InnoDB單表空間、通用表空間、系統(tǒng)表空間和Redo、Undo文件進行靜態(tài)加密。從8.0.16開始支持對Schema和通用表空間設(shè)置加密默認(rèn)值,這就允許對在這些Schema和表空間中的表是否加密進行統(tǒng)一控制;靜態(tài)加密功能依賴于Keyring組件或插件,MySQL社區(qū)版提供的Keyring file插件會將Keyring數(shù)據(jù)存儲在服務(wù)器主機的本地文件系統(tǒng)中。

01 安裝

  1. mkdir /usr/local/mysql/keyring 
  2. chown -R mysql.mysql keyring 
  • 配置文件中增加
  1. [mysqld]early-plugin-load=keyring_file.sokeyring_file_data=/usr/local/mysql/keyring/keyring 
  • 重啟數(shù)據(jù)庫
  1. mysql> select * from information_Schema.plugins where plugin_name like '%keyring%'\G 
  2. *************************** 1. row *************************** 
  3.            PLUGIN_NAME: keyring_file         
  4.            PLUGIN_VERSION: 1.0          
  5.            PLUGIN_STATUS: ACTIVE            
  6.            PLUGIN_TYPE: KEYRING 
  7.    PLUGIN_TYPE_VERSION: 1.1 
  8.         PLUGIN_LIBRARY: keyring_file.so 
  9. PLUGIN_LIBRARY_VERSION: 1.10 
  10.          PLUGIN_AUTHOR: Oracle Corporation 
  11.     PLUGIN_DESCRIPTION: store/fetch authentication data to/from a flat file 
  12.         PLUGIN_LICENSE: GPL 
  13.            LOAD_OPTION: ON 
  14.             
  15. mysql> show global variables like '%keyring%'
  16. +--------------------+----------------------------------+ 
  17. | Variable_name      | Value                            | 
  18. +--------------------+----------------------------------+ 
  19. | keyring_file_data  | /usr/local/mysql/keyring/keyring | 
  20. | keyring_operations | ON                               | 
  21. +--------------------+----------------------------------+ 
  22. rows in set (0.02 sec) 

02 加密操作

  1. mysql> alter table t7 encryption='Y';  Query OK, 2 rows affected (0.10 sec) 
  2. Records: 2  Duplicates: 0  Warnings: 0 
  3.  
  4. mysql> alter table t2 encryption='Y';  
  5. Query OK, 1 row affected (0.11 sec) 
  6. Records: 1  Duplicates: 0  Warnings: 0 
  7.  
  8.  
  9. mysql> alter  database test DEFAULT ENCRYPTION = 'Y'
  10. Query OK, 1 row affected (0.03 sec) 
  11.  
  12.  
  13. mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';    
  14. Query OK, 0 rows affected (2.80 sec) 

03 取消加密

  1. mysql> alter table t2 encryption='N'
  2. Query OK, 1 row affected (0.11 sec) 
  3. Records: 1  Duplicates: 0  Warnings: 0 
  4.  
  5. mysql> alter table t7 encryption='N';  
  6. Query OK, 2 rows affected (0.08 sec) 
  7. Records: 2  Duplicates: 0  Warnings: 0 
  8.  
  9.  
  10. mysql> alter  database test DEFAULT ENCRYPTION = 'N'
  11. Query OK, 1 row affected (0.03 sec) 
  12.  
  13.  
  14. mysql> ALTER TABLESPACE mysql ENCRYPTION = 'N'
  15. Query OK, 0 rows affected (2.37 sec) 

04 查看元數(shù)據(jù)

  • 查看插件
  1. mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS        FROM INFORMATION_SCHEMA.PLUGINS        WHERE PLUGIN_NAME LIKE 'keyring%'
  2. +--------------+---------------+ 
  3. | PLUGIN_NAME  | PLUGIN_STATUS | 
  4. +--------------+---------------+ 
  5. | keyring_file | ACTIVE        | 
  6. +--------------+---------------+ 
  7. 1 row in set (0.01 sec) 
  • 查看存在的key
  1. mysql> SELECT * FROM performance_schema.keyring_keys; 
  2. +--------------------------------------------------+-----------+----------------+ 
  3. | KEY_ID                                           | KEY_OWNER | BACKEND_KEY_ID | 
  4. +--------------------------------------------------+-----------+----------------+ 
  5. | INNODBKey-8c537ce5-4a53-12eb-907d-000c298c47fa-1 |           |                | 
  6. +--------------------------------------------------+-----------+----------------+ 
  7. 1 row in set (0.00 sec) 

05 查看加密對象

  • 加密表空間
  1. mysql> SELECT SPACENAME, SPACE_TYPE, ENCRYPTION FROM INFORMATION_SCHEMA.INNODB_TABLESPACES        WHERE ENCRYPTION='Y'
  2. +------------+---------+------------+------------+ 
  3. SPACE      | NAME    | SPACE_TYPE | ENCRYPTION | 
  4. +------------+---------+------------+------------+ 
  5. | 4294967294 | mysql   | General    | Y          | 
  6. |        145 | test/t7 | Single     | Y          | 
  7. +------------+---------+------------+------------+ 
  8. rows in set (0.00 sec) 
  • 查看加密表
  1. mysql> SELECT TABLE_SCHEMA, TABLE_NAME, CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES  WHERE CREATE_OPTIONS LIKE '%ENCRYPTION%';       
  2. +--------------+------------+----------------+ 
  3. | TABLE_SCHEMA | TABLE_NAME | CREATE_OPTIONS | 
  4. +--------------+------------+----------------+ 
  5. | test         | t7         | ENCRYPTION='Y' | 
  6. +--------------+------------+----------------+ 
  7. 1 row in set (0.04 sec) 
  • 查看加密Database
  1. mysql> SELECT SCHEMA_NAME, DEFAULT_ENCRYPTION FROM INFORMATION_SCHEMA.SCHEMATA   WHERE DEFAULT_ENCRYPTION='YES'
  2. +-------------+--------------------+ 
  3. | SCHEMA_NAME | DEFAULT_ENCRYPTION | 
  4. +-------------+--------------------+ 
  5. | test        | YES                | 
  6. +-------------+--------------------+ 
  7. 1 row in set (0.00 sec) 
  • 從MySQL8.0.23版本開始,支持對DoubleWrite文件頁的加密,這一特性無需單獨配置。MySQL會自動加密屬于加密表的雙寫文件頁。
  • 支持通過配置innodb_redo_log_encrypt選項對Redo日志進行加密,默認(rèn)禁用。啟用innodb_redo_log_encrypt后原Redo日志中未加密頁面保持未加密狀態(tài),新產(chǎn)生的Redo日志頁面以加密形式寫入;反之亦然。加密Metadata存放在ib_logfile0文件header中。
  • 支持通過配置innodb_undo_log_encrypt選項對Undo日志進行加密,默認(rèn)禁用。啟用innodb_undo_log_encrypt后原Undo日志中未加密頁面保持未加密狀態(tài),新產(chǎn)生的undo日志頁面以加密形式寫入;反之亦然。加密Metadata存放在Undo日志文件header中。

06 加密秘鑰輪換

加密秘鑰應(yīng)該定期輪換,輪換操作是原子的實例級別的操作。每次輪換主加密密鑰時,MySQL 實例中的所有表空間密鑰都會重新加密并保存回各自的表空間表頭。如果輪換操作被服務(wù)器故障中斷,重啟后將會做前滾操作。

輪換操作只會更新主秘鑰并重新加密表空間秘鑰,并不會重新解密并加密表空間數(shù)據(jù)。

輪換操作需要Super權(quán)限或 ENCRYPTION_KEY_ADMIN權(quán)限;語句如下:

  1. ALTER INSTANCE ROTATE INNODB MASTER KEY

成功的 ALTER INSTANCE ROTATE INNODB MASTER KEY 語句將寫入二進制日志以在副本上進行復(fù)制。

請確保對主秘鑰進行備份(在創(chuàng)建和輪換后),否則可能無法恢復(fù)加密表空間中的數(shù)據(jù)。

07 通過Performance Schema監(jiān)控加密進度

  • 打開stage/innodb/alter tablespace (encryption) instrument:
  1. mysql> system clear 
  2. mysql> USE performance_schema; 
  3. Database changed 
  4. mysql> UPDATE setup_instruments SET ENABLED = 'YES' WHERE NAME LIKE 'stage/innodb/alter tablespace (encryption)'
  5. Query OK, 0 rows affected (0.01 sec) 
  6. Rows matched: 1  Changed: 0  Warnings: 0 
  • 啟用the stage event consumer tables,包括events_stages_current, events_stages_history, and events_stages_history_long.
  1. mysql> UPDATE setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%stages%'
  2. Query OK, 3 rows affected (0.01 sec) 
  3. Rows matched: 3  Changed: 3  Warnings: 0  
  • 執(zhí)行一個加密操作
  1. mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';  
  2. Query OK, 0 rows affected (2.80 sec) 
  • 通過查詢Performance_Schema events_stages_current 表來檢查加密操作的進度。

WORK_ESTIMATED 報告表空間中的總頁數(shù)。

WORK_COMPLETED 報告處理的頁數(shù)。

  1. mysql> select * from events_stages_current; 
  2. Empty set (0.00 sec) 
  • 如果加密操作已完成,events_stages_current 表將返回一個空集。在這種情況下,您可以檢查 events_stages_history 表以查看已完成操作的事件數(shù)據(jù)。
  1. mysql> SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED FROM events_stages_history; 
  2. +--------------------------------------------+----------------+----------------+ 
  3. | EVENT_NAME                                 | WORK_COMPLETED | WORK_ESTIMATED | 
  4. +--------------------------------------------+----------------+----------------+ 
  5. | stage/innodb/alter tablespace (encryption) |           2559 |           2559 | 
  6. | stage/innodb/alter tablespace (encryption) |           2559 |           2559 | 
  7. | stage/innodb/alter tablespace (encryption) |           2559 |           2559 | 
  8. | stage/innodb/alter tablespace (encryption) |           2559 |           2559 | 
  9. | stage/innodb/alter tablespace (encryption) |           2559 |           2559 | 
  10. | stage/innodb/alter tablespace (encryption) |           2559 |           2559 | 
  11. | stage/innodb/alter tablespace (encryption) |           2559 |           2559 | 
  12. +--------------------------------------------+----------------+----------------+ 
  13. rows in set (0.00 sec) 

關(guān)于作者

 

楊明翰,云和恩墨服務(wù)總監(jiān)。擁有MySQL、TDSQL、TiDB、openGauss等認(rèn)證。長期從事MySQL、PG、Redis、MongoDB的數(shù)據(jù)庫技術(shù)服務(wù)?,F(xiàn)負(fù)責(zé)云和恩墨西區(qū)開源數(shù)據(jù)庫交付運維工作;熱衷于開源數(shù)據(jù)庫產(chǎn)品的研究。

 

責(zé)任編輯:武曉燕 來源: 數(shù)據(jù)和云
相關(guān)推薦

2021-07-14 10:38:29

MySQL共享表獨立表

2021-01-08 08:10:34

MySQL表空間回收

2010-11-23 13:57:50

MySQL獨立表空間

2020-03-22 21:46:06

MySQLInnoDB表空間

2022-12-14 10:16:45

數(shù)據(jù)庫系統(tǒng)

2011-07-18 15:59:17

MySQL數(shù)據(jù)庫

2009-05-22 10:11:19

2009-11-02 18:03:25

Oracle用戶表空間

2010-11-01 12:11:43

DB2表空間

2010-11-15 11:40:44

Oracle表空間

2016-12-27 15:47:19

臨時表空間數(shù)據(jù)

2010-11-16 11:32:54

ORACLE增加表空間

2009-10-26 16:13:29

Oracle使用UND

2009-10-29 16:57:05

Oracle傳輸表空間

2009-11-24 17:20:48

Oracle查看用戶表

2010-11-16 10:32:01

Oracle創(chuàng)建表空間

2022-12-26 08:07:03

MySQL批量數(shù)據(jù)

2011-08-23 10:54:16

PostgreSQL表空間用戶

2009-10-28 16:31:37

Oracle傳輸表空間

2010-10-29 10:22:21

Oracle表空間
點贊
收藏

51CTO技術(shù)棧公眾號