切换导航
{{systemName}}
{{ info.Title }}
{{info.Title}}
{{ menu.Title }}
{{menu.Title}}
登录
|
退出
搜索
数据库集群 SQLserver AlwaysOn部署
作者:ych
### AlwaysOn核心价值 1、在故障转移群集基础上完成部署 2、读写分离,支持负载均衡 3、最多3个写入节点实现故障转移 4、最多三个数据实时同步节点 5、SqlServer 2012 支持1+4 部署 6、SqlServer 2016 支持1+8 部署 ### 为何没有2008 SQL Server 2012的新功能,特别是always on技术、列存储索引技术、商业智能等。在老版本数据库中没有这一项功能。 ### 搭建带域的AlwaysOn #### 服务器规划 1、多个Windows服务器节点 2、节点必须要在同一个域 3、AlwaysOn部署必须在Windows故障转移群集中完成 4、需要准备的目标环境,且都在同一个域 主机名|主机地址|作用|备注 -|-|-|-|- jyw-dc|192.168.12.110|dc域节点| jyw-node1|192.168.12.112|副本1| jyw-node2|192.168.12.113|副本2| jyw-node3|192.168.12.114|副本3| 密码都使用: ``` xm^BBA666 ``` #### 配置域 ip改为使用静态ip保证一致性。 dc域节点需要安装dc和dns 设置域名:jiyuwu.com ``` xm^BBA666 ``` 将dns副本节点改为dc域节点地址 给计算机设置域并使用(JIYUWU\administrator)域账户登录。 在配置域安装共享磁盘(选两个)ISCSI(cluster)->mycluster->设置各副本到白名单 之后各个节点的ISCSI进行发起连接。 磁盘管理最初要先格式化一下,如果是脱机需要进行一下联机(GPT)。 #### 各副本配置故障转移群集 验证群集->输入(jyw-node1,jyw-node2,jyw-node3) 安装故障转移群集(jywcluster)(使用一个没有使用的地址) (虚拟机需要配置双网卡,网络选择仅本机) 然后设置管理群集访问点。 #### 配置副本登录 sqlserver服务配置域登录 #### 设置文件共享 数据库要先创建一个库 这个共享文件必须有一个完整备份(everyone) 之后设置AlwaysON指定可用性组(jywAlwaysON) 选择数据同步首选项(完整的数据库或日志) #### 添加可用性监听器 jywAlwaysONMinitor,1433(默认),使用静态ip(使用一个没有使用的地址) ### 搭建无域的AlwaysOn #### 服务器规划 1、多个Windows服务器节点 2、节点必须要可以相互访问 3、AlwaysOn部署必须在Windows故障转移群集中完成 4、需要准备相同目标环境并配置证书 主机名|主机地址|作用|备注 -|-|-|-|- jyw-node1|192.168.137.145|副本1| jyw-node2|192.168.137.147|副本2| jyw-node3|192.168.137.141|副本3| ``` IPv4 地址 . . . . . . . . . . . . : 192.168.137.147 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 192.168.137.2 DNS. . . . . . . . . . . . . . . :192.168.137.180 ``` 修改计算机名称(dns后缀要一致:jiyuwu.com) 密码都使用: ``` xm^BBA666 ``` #### 配置dns 高级部分等 ``` C:\Windows\System32\drivers\etc ``` ``` 192.168.137.145 jyw-node1 192.168.137.145 jyw-node1.jiyuwu.com 192.168.137.147 jyw-node2 192.168.137.147 jyw-node2.jiyuwu.com 192.168.137.141 jyw-node3 192.168.137.141 jyw-node3.jiyuwu.com 192.168.137.180 cluster 192.168.137.180 cluster.jiyuwu.com 192.168.137.181 listener 192.168.137.181 listener.jiyuwu.com ``` ping ``` PING 192.168.137.147 PING jyw-node2 PING jyw-node2.jiyuwu.com ``` #### 各副本配置故障转移群集 验证群集->输入(jyw-node1.jiyuwu.com,jyw-node2.jiyuwu.com,jyw-node3.jiyuwu.com) 安装故障转移群集(cluster)(192.168.137.180) (虚拟机需要配置双网卡,网络选择仅本机) 然后设置管理群集访问点。 #### 配置副本登录 sqlserver服务登录(.\Administrator)和alwaysON 数据库使用jyw-node1,jyw-node2,jyw-node3登录。 #### 设置文件共享 ##### 证书共享 \\JYW-NODE1\SQLAlwaysOnShare 既然节点没有加入域,那么就不能用域认证,只能用证书认证,因此需要在每个节点的数据库中创建其他节点的数据库证书。(请留意我连接数据库的账户,在创建端口的代码中有用到) 因此在配置可用性组前先在各节点配置证书认证信任。 分别在两个节点数据库上创建证书,并且彼此还原对方的证书,SQL代码如下: ``` ------------------------节点1执行 ------------------------ USE [master] GO --创建证书 CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'jiyuwu@123456' GO CREATE CERTIFICATE cert_node1 --证书名称 WITH SUBJECT='alwayson node1 local certificate', --主题 EXPIRY_DATE='9999-12-31' --有效时间 GO --备份证书到创建的指定文件夹中 BACKUP CERTIFICATE cert_node1 TO FILE='\\JYW-NODE1\SQLAlwaysOnShare\cert_node1.cer' GO --使用指定的证书,创建镜像端点 CREATE ENDPOINT [SQLAG_Endpoint] --镜像名称 STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE cert_node1, --证书名称 ENCRYPTION = REQUIRED ALGORITHM AES) GO ``` ``` ------------------------节点2执行 ------------------------ USE [master] GO --创建证书 CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'jiyuwu@123456' GO CREATE CERTIFICATE cert_node2 --证书名称 WITH SUBJECT='alwayson node2 local certificate', --主题 EXPIRY_DATE='9999-12-31' --有效时间 GO --备份证书到创建的指定文件夹中 BACKUP CERTIFICATE cert_node2 TO FILE='\\JYW-NODE1\SQLAlwaysOnShare\cert_node2.cer' GO --使用指定的证书,创建镜像端点 CREATE ENDPOINT [SQLAG_Endpoint] --镜像名称 STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE cert_node2, --证书名称 ENCRYPTION = REQUIRED ALGORITHM AES) GO ``` ``` ------------------------节点3执行 ------------------------ USE [master] GO --创建证书 CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'jiyuwu@123456' GO CREATE CERTIFICATE cert_node3 --证书名称 WITH SUBJECT='alwayson node3 local certificate', --主题 EXPIRY_DATE='9999-12-31' --有效时间 GO --备份证书到创建的指定文件夹中 BACKUP CERTIFICATE cert_node3 TO FILE='\\JYW-NODE1\SQLAlwaysOnShare\cert_node3.cer' GO --使用指定的证书,创建镜像端点 CREATE ENDPOINT [SQLAG_Endpoint] --镜像名称 STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE cert_node3, --证书名称 ENCRYPTION = REQUIRED ALGORITHM AES) GO ``` >注:我是在节点1上用administrator登录服务器,使用Windows身份登录SQL Server。在节点2上也是用administrator登录服务器,使用Windows身份登录SQL Server 执行证书 ``` --节点一上执行:创建节点二和三的证书 USE master; GO CREATE CERTIFICATE cert_node2 FROM FILE = '\\JYW-NODE1\SQLAlwaysOnShare\cert_node2.cer'; GO CREATE CERTIFICATE cert_node3 FROM FILE = '\\JYW-NODE1\SQLAlwaysOnShare\cert_node3.cer'; GO --节点二上执行:创建节点一和三的证书 USE master; GO CREATE CERTIFICATE cert_node1 FROM FILE = '\\JYW-NODE1\SQLAlwaysOnShare\cert_node1.cer'; GO CREATE CERTIFICATE cert_node3 FROM FILE = '\\JYW-NODE1\SQLAlwaysOnShare\cert_node3.cer'; GO --节点三上执行:创建节点一和二的证书 USE master; GO CREATE CERTIFICATE cert_node1 FROM FILE = '\\JYW-NODE1\SQLAlwaysOnShare\cert_node1.cer'; GO CREATE CERTIFICATE cert_node2 FROM FILE = '\\JYW-NODE1\SQLAlwaysOnShare\cert_node2.cer'; GO ``` ##### 库共享 数据库要先创建一个库 这个共享文件必须有一个完整备份(everyone) 之后设置AlwaysON指定可用性组(jywAlwaysON) 选择数据同步首选项(完整的数据库或日志) #### 添加可用性监听器 listener,1433(默认),使用静态ip(使用一个没有使用的地址)192.168.137.181 无法连接可以设置下sa账号。 ``` 1.域内使用监听:192.168.137.181(ApplicationIntent=ReadOnly:找只读节点),不加找主节点。(域外加ApplicationIntent=ReadOnly直接报错) 2.域外使用集群:192.168.137.180(ApplicationIntent=ReadOnly:找只读节点),不加这个链接无效。 3.非集群ApplicationIntent=ReadOnly添加后不会影响链接。 ``` ### 更多参考 https://www.jianshu.com/p/bad1fc5b2cbe https://blog.csdn.net/weixin_45130813/article/details/121139599 https://blog.csdn.net/chahuoci6454/article/details/100962657 https://blog.csdn.net/niechel/article/details/146883070
相关推荐
SQL Server 复制订阅后如何修改表结构
从零使用sqlserver打造一个选课系统数据库
评论区
先去登录
版权所有:机遇屋在线 Copyright © 2021-2025 jiyuwu Co., Ltd.
鲁ICP备16042261号-1