更新时间:2024-09-06 GMT+08:00
使用规范
实例规格
生产环境不要使用2u4g规格实例,2u4g规格仅提供体验测试。
建议生产环境至少使用4u8g规格。由于SQL Server使用Windows系统,引擎及系统本身需要的资源较多,2u4g不适合运行生产业务,长时间运行后可能会有系统低内存及其卡顿问题。
数据库连接
- 连接云数据库 RDS for SQL Server时,请使用“ip,port”的方式连接,注意连接串中间为逗号。
- 不建议使用服务器名字连接。
- 应用连接数据库时建议要有重试机制,当数据库发生容灾或者断连时,应用可以通过重试及时恢复连接。
数据库迁移
迁移上云完成后,需要进行以下检查:
- 需要检查权限完整性。权限会影响对于数据库的方案,迁移仅会完成数据恢复,数据库用户恢复,登录名等其他服务级权限需要重新创建,并且关联数据库账户。
- 需要对索引进行重建。由于迁移完成后数据文件的物理环境发生了改变,数据库索引会失效,需要对索引进行重建,否则可能会导致数据库性能有明显下降。
- 对比参数配置。迁移上云后RDS for SQL Server会使用云上的参数组,需要及时对比云下参数配置和云上是否匹配。由于云下参数配置是经过长期验证,所以请及时更新云上的参数配置。
使用建议
- 不推荐创建加域实例,云数据库 RDS for SQL Server支持创建加域实例,加域实例的域控服务器在用户侧,用户拥有较高权限,域控服务器组策略配置会影响加入该域的机器,用户侧域控规则修改会导致数据库实例的权限安全风险增加。
- 单实例数据库数量不要超过100个。单实例可以承载的数据库数量跟实例规格相关,数据库数量过多会导致实例性能下降,占用Worker Thread等资源。
- 应用不能依赖SysAdmin权限。具有SysAdmin角色的账号有超级管理员权限,使用不当会导致数据库安全与稳定性受到威胁,云数据库不开放超级管理员权限,应用使用数据库不能依赖于此权限。
- 不要在系统库创建表。用户数据请创建用户自定义库存放,不要在系统库创建任何表写入数据,虽然开放了使用系统库的权限,但是任何在系统库存放的数据都是不安全的。
- 数据库不要打开Auto Close属性。用户库可以设置Auto Close属性,打开该属性后会导致包括建立复制关系无法建立的问题,并且该属性设置后不能正常的使用该库,强烈建议不要设置。
- 不要将数据库设置为Single User模式。Single User模式只允许一个Session访问数据库,会导致其他Session无法访问造成云数据库的运维问题。设置Single User模式请及时恢复到Multi User模式。
- 慢日志不要长时间打开。慢日志可以帮助进行慢SQL分析,但是长时间打开会导致性能损失,建议在不需要跟踪分析SQL问题时关闭慢日志。
- 定时重建索引。数据库在长时间使用后可能会产生较多的索引碎片,导致数据库访问性能下降,需要定时进行索引重建,可以采用创建SQL Agent Job的方式定时重建索引,建议一个月重建一次索引。
- 定时更新统计信息。数据库统计信息需要经常更新对于性能有益。建议采用创建SQL Agent Job的方式每周更新一次统计信息。
- 关注数据库大小,及时收缩数据库。数据库长时间使用可能会有一些物理空间无法及时释放,需要执行收缩数据库操作才能释放物理空间。需要关注日志文件大小及物理文件大小,发现文件膨胀迅速可以在业务低峰期收缩数据库。
- 数据库名长度不要超过64个字符,且数据库名当前仅支持数字、大小写字母、中划线(-)和下划线(_),不支持其他特殊字符。
- 建议修改默认端口。RDS for SQL Server默认端口为1433,公网上一些不安全的程序可能会扫描RDS for SQL Server的默认端口,建议修改默认端口。
- 推荐使用高可用主备实例。相比于单机实例,高可用实例可以极大提高生产业务的可用性和可靠性。
- 高可用实例请跨AZ部署,进行AZ级别的容灾。
- 建议长时间运行的实例在业务低峰期可以重启。实例长时间运行后可能会出现性能下降,推荐每三个月能够在业务低峰期重启一次实例。
- 设置最大并行度。最大并行度参数影响业务的CPU使用率。默认值为0允许Session使用所有CPU,可能由于某个SQL的问题导致CPU无法分配给其他Session使用。建议根据规格配置,如核数除以2。
- 临时库(TempDB)创建多个ndf辅助文件。
- 当执行操作出现权限问题时,请优先参考存储过程的使用,查找使用合适的存储过程。
- 如需修改SQL Server参数,请在控制台进行修改,不支持通过执行SQL命令方式修改。
- 备份恢复相关操作请通过管理控制台下发或调用RDS API接口、SDK接口下发,不能通过SSMS或执行SQL直接操作。迁移上云请参考数据复制服务(DRS)。
- 恢复数据到已有实例请谨慎操作,避免错误覆盖已有数据导致影响业务。建议使用恢复到新实例功能。
- 数据库恢复模式(Recovery model)不要设置为simple模式,建议使用full模式。
- 设置为simple模式将不会对该库执行增量备份,因此该库无法恢复到指定时间点。
- 对于主备实例或者集群实例,设置数据库恢复模式是simple模式后,会导致该库不会建立复制关系,进而无法操作主备切换或者规格变更。
因此,请谨慎使用simple模式。
- 不建议使用长事务或长时间未提交事务。长事务会长时间占用数据库的事务日志,造成事务日志膨胀并且无法阶段回收空间,最终导致磁盘满并造成大量锁等待,阻塞其他SQL执行。如果kill掉后会导致回滚时间更长,至少是事务执行的1.5倍,造成主备复制延迟增大,导致主备切换失败、主备的规格变更失败。