千家信息网

SQL Server 2017 AlwaysOn on Linux 配置和维护(8)

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,2.3.2 创建AG准备工作1.更新每个节点的机器名,必须满足:15个字符或更少。在网络中是唯一的。可以用以下语句修改机器名:sudo vi /etc/hostname2.配置主机名和IP地址的解析通
千家信息网最后更新 2026年11月03日SQL Server 2017 AlwaysOn on Linux 配置和维护(8)
2.3.2 创建AG


准备工作

1.更新每个节点的机器名,必须满足:

  • 15个字符或更少。

  • 在网络中是唯一的。

可以用以下语句修改机器名:

sudo vi /etc/hostname


2.配置主机名和IP地址的解析

通常在DNS服务器注册主机名和IP地址,为了进一步保证同一个AG中多个节点可以互相通信,我们在每个节点使用如下命令修改Hosts文件:

sudo vi /etc/hosts

通过如下命令可以查看ip地址

sudo ip addr show

或

sudo ifconfig

修改后可以用ping命令尝试ping hostname,必须返回对应的真正IP地址才行,也就是Hosts文件中不能包含类似hostname和127.0.0.1的对应记录。


启用AG并重启mssql-server

在所有节点的SQL Server上启用AlwaysOn AG,然后重启mssql-server服务:

sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1sudo systemctl restart mssql-server


启用AlwaysOn_health扩展事件会话

在每个节点上开启该会话,以便在对某一可用性组进行故障排除时帮助诊断根本原因:

ALTER EVENT SESSION AlwaysOn_health ON SERVER WITH (STARTUP_STATE=ON);GO


创建数据库镜像端点访问使用的用户

CREATE LOGIN dbm_login WITH PASSWORD = '****';CREATE USER dbm_user FOR LOGIN dbm_login;


创建证书

Linux 上的 SQL Server 服务使用证书验证镜像终结点之间的通信。连接到主 SQL Server 实例。以下 Transact-SQL 脚本创建主密钥和证书。 然后备份证书,并使用私钥保护文件。 使用强密码更新脚本。

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '****';CREATE CERTIFICATE dbm_certificate WITH SUBJECT = 'dbm';BACKUP CERTIFICATE dbm_certificateTO FILE = '/var/opt/mssql/data/dbm_certificate.cer'WITH PRIVATE KEY (FILE = '/var/opt/mssql/data/dbm_certificate.pvk',ENCRYPTION BY PASSWORD = '****');


将证书和私钥拷贝到所有可用副本的服务器上的相同位置。

cd /var/opt/mssql/datascp dbm_certificate.* root@****:/var/opt/mssql/data/


在每个目标服务器上,授予mssql用户访问这些文件的权限。

cd /var/opt/mssql/datachown mssql:mssql dbm_certificate.*


在辅助服务器上创建证书

以下 Transact-SQL 脚本根据在主 SQL Server 副本上创建的备份创建主密钥和证书。 使用强密码更新脚本。 解密密码与在此前的步骤中创建 .pvk 文件使用的密码相同。

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '****';CREATE CERTIFICATE dbm_certificateFROM FILE = '/var/opt/mssql/data/dbm_certificate.cer'WITH PRIVATE KEY (FILE = '/var/opt/mssql/data/dbm_certificate.pvk',DECRYPTION BY PASSWORD = '****');


在所有节点上创建数据库镜像端点

(可选)可以包含 IP 地址 LISTENER_IP = (0.0.0.0)。 侦听器 IP 地址必须是 IPv4 地址。 还可以使用 0.0.0.0。

如果配置的节点是仅配置副本,唯一有效的值为ROLE = WITNESS。

对于 SQL Server 2017 版本中,支持数据库镜像终结点的唯一身份验证方法是CERTIFICATE。

CREATE ENDPOINT [Hadr_endpoint]AS TCP (LISTENER_IP = (0.0.0.0), LISTENER_PORT = **<5022>**)FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE dbm_certificate,ENCRYPTION = REQUIRED ALGORITHM AES);ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [dbm_login];


在主节点上创建AG

  • 三个同步副本

CREATE AVAILABILITY GROUP [ag1]WITH (DB_FAILOVER = ON, CLUSTER_TYPE = EXTERNAL)FOR REPLICA ONN''WITH (ENDPOINT_URL = N'tcp://:<5022>',AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,FAILOVER_MODE = EXTERNAL,SEEDING_MODE = AUTOMATIC),N''WITH (ENDPOINT_URL = N'tcp://:<5022>',AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,FAILOVER_MODE = EXTERNAL,SEEDING_MODE = AUTOMATIC),N''WITH(ENDPOINT_URL = N'tcp://:<5022>',AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,FAILOVER_MODE = EXTERNAL,SEEDING_MODE = AUTOMATIC);ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;


  • 两个同步副本

CREATE AVAILABILITY GROUP [ag1]WITH (CLUSTER_TYPE = EXTERNAL)FOR REPLICA ONN'node1' WITH (ENDPOINT_URL = N'tcp://node1:5022',AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,FAILOVER_MODE = EXTERNAL,SEEDING_MODE = AUTOMATIC),N'node2' WITH (ENDPOINT_URL = N'tcp://node2:5022',AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,FAILOVER_MODE = EXTERNAL,SEEDING_MODE = AUTOMATIC);ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;


  • 两个同步副本和仅配置副本

CREATE AVAILABILITY GROUP [ag1]WITH (CLUSTER_TYPE = EXTERNAL)FOR REPLICA ONN'' WITH (ENDPOINT_URL = N'tcp://:<5022>',AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,FAILOVER_MODE = EXTERNAL,SEEDING_MODE = AUTOMATIC),N'' WITH (ENDPOINT_URL = N'tcp://:<5022>',AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,FAILOVER_MODE = EXTERNAL,SEEDING_MODE = AUTOMATIC),N'' WITH (ENDPOINT_URL = N'tcp://:<5022>',AVAILABILITY_MODE = CONFIGURATION_ONLY);ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;


将辅助副本加入到AG

在所有辅助副本上执行:

ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = EXTERNAL);ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;


将数据库添加到可用性组

确保添加到可用性组的数据库处于完全恢复模式,并具有有效的日志备份。

CREATE DATABASE [db1];ALTER DATABASE [db1] SET RECOVERY FULL;BACKUP DATABASE [db1]TO DISK = N'/var/opt/mssql/data/db1.bak';ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [db1];


验证是否已在辅助服务器上创建了数据库

在每个辅助服务器上执行:

SELECT * FROM sys.databases WHERE name = 'db1';GOSELECT DB_NAME(database_id) AS 'database', synchronization_state_desc FROM sys.dm_hadr_database_replica_states;


副本 节点 服务 地址 证书 数据 数据库 服务器 文件 辅助 配置 密码 脚本 镜像 可用性 命令 备份 同步 更新 验证 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 西安纸贵互联网科技有限公司 互联网科技卖菜 金融科技创新监管互联网金融 互联网科技金融 多迪互联网科技有限公司 甘肃拓世互联网科技有限公司 广州慧亚互联网科技怎么样 互联网科技中介 福州新华互联网科技学校 知乎 互联网科技创新服务 深圳市优智互联网科技有限公司 工业互联网等科技实现智能化赋能 爱医互联网络科技 滨湖区互联网智能科技产品有哪些 产业互联网科技服务公司 互联网科技股为什么大涨 九思连强互联网电子科技有限公司 互联网科技收购价值 兰石爱特工业互联网科技分公司 手冲咖啡和咖啡机区别 润盈互联网科技 卓越科技互联网 招聘 互联网科技素材视频竖屏 昭通云南众福互联网科技有限公司 互联网科技有哪些公司 中国科技创新与世界互联网大会 怎样加入科技互联网 互联网高科技行业有哪些企业 科技互联网经济论坛
0