无论是否启用 TDE,我都需要对 AlwaysOn 进行一些基准测试。我看到的所有说明都包括将加密数据库添加到可用性组,但我没有看到为已经在 AG 中的数据库启用加密。
我可以将服务器证书恢复到所有节点,然后从主节点启用 TDE 吗?我希望我不需要从 AG 中删除数据库,对其进行加密,然后重新初始化所有节点,因为数据库大约 100 GB。如果需要,我们可以这样做,但它肯定会减慢我们的测试速度。
更新
我刚刚在一些实验室虚拟机上试过这个。我能够在主节点上创建一个证书,在所有辅助节点上恢复它,然后使用这个证书在主节点上创建一个数据库加密密钥。之后我所要做的就是ALTER DATABASE AdventureWorks SET ENCRYPTION ON
在主服务器上,一两分钟后,sys.dm_database_encryption_keys 在所有节点上显示 encryption_state = 3。
所以,后续问题:有什么理由认为我不应该使用这个程序吗?SQL Server 似乎对结果很满意,但我还没有看到任何地方讨论过这种方法。在处理加密和高可用性问题时,我不想让事情碰运气。
在没有任何其他输入的情况下,这就是我能够推断出的。短篇小说:这似乎工作正常。
据我所知,为数据库启用 TDE 是一个记录操作,但不会记录实际的数据加密(否则事务日志会显着增长,但事实并非如此)。我假设有类似差异变化图的东西,或者页面标题中的标志来指示页面是否被加密,并且存储引擎只是咀嚼所有内容,直到它完全加密。
当我在主数据库上启用 TDE 时,辅助数据库最终也被加密(我已经用十六进制编辑器验证了这一点)。在加密过程中,视图 sys.dm_database_encryption_keys 指示所有辅助服务器的 percent_complete 为 0,并且该值永远不会增加。主服务器正常更新此列。所有副本都倾向于按照自己的节奏完成加密,此时加密状态更改为 3。似乎一旦完成,一切都会正常工作。