SQL Server 2016 AlwaysON 非域部署脚本

原创 2016年11月08日 22:12:45

注:搭了2次,所以代码中IP可能不一致,请自行替换下即可

    大致步骤以 --1  --2 标出,跳跃下看,因为是从主、副SSMS里复制的

    参考了宋云剑翻译的SQL SERVER 2012/14管理,ITPUB上jieyancai的贴子


1.所有成员都必须是Win Svr 2016

2.所有成员创建相同的帐号、密码,且属于本地Administrators组
3.所有SVR POWERSHELL:new-itemproperty -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name LocalAccountTokenFilterPolicy -Value 1
  重启
4.所有成员设置DNS后缀 noad.com
5.服务器都有一个共同的DNS服务器地址进行注册(或者自己添加A记录),包含DNS后缀。如果没有共同的DNS服务器进行注册,那就在每台写上host记录
6.检查防火墙响应的协议是否打开
7.安装群集角色
7.New-Cluster –Name <Cluster Name> -Node <Nodes to Cluster> -–StaticAddress <Cluster IP> -AdministrativeAccessPoint DNS
  示例:New-Cluster –Name NOADCluster -Node Node1,Node2 -NoStorage -StaticAddress 192.168.112.130 -AdministrativeAccessPoint DNS


仲裁配置:
  见证类型部队与工作组群集和多域群集建议采用云见证或磁盘见证。不支持文件共享见证。
群集验证中以下信息可以忽略:
  群集配置-验证资源状况
  系统配置-验证AD配置
建议在群集中的每一个节点都采用相同的配置,例如相同的补丁,相同的策略等。
确保群集所有节点的信息可以在权威DNS服务器上得到解析。
在工作组群集中是不支持Get-ClusterDiagnostics命令进行群集诊断的。
这时打开故障转移群集控制台可以看见创建的工作组群集。


hosts:


N1: 192.168.112.140  N1.noad.com
N2: 192.168.112.141  N2.noad.com
打开网络发现


Storage: 192.168.112.135
N1: 192.168.112.136  169.254.192.168

N2: 192.168.112.137  169.254.77.185



建群集、开防火墙
--1.
Create Database DB1
ON PRIMARY (Name='DB1',FileName='C:\Data\DB1.mdf',Size=100MB,FileGrowth=10MB)
LOG ON (Name='DB1_Log',FileName='C:\Data\DB1_Log.ldf',Size=100MB,FileGrowth=10MB);
Create Database DB2
ON PRIMARY (Name='DB2',FileName='C:\Data\DB2.mdf',Size=100MB,FileGrowth=10MB)
LOG ON (Name='DB2_Log',FileName='C:\Data\DB2_Log.ldf',Size=100MB,FileGrowth=10MB);
GO
Alter Database DB1 SET RECOVERY FULL;
Alter Database DB2 SET RECOVERY FULL;


GO
Use Master
Go
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'dba123!@#'
Go
CREATE CERTIFICATE CertA WITH SUBJECT = 'Cert A'
Go
CREATE ENDPOINT Endpoint_Mirroring
 STATE = STARTED
   AS TCP (LISTENER_PORT=7022,LISTENER_IP = ALL) 
   FOR DATABASE_MIRRORING 
   (AUTHENTICATION = CERTIFICATE CertA,
    ENCRYPTION = REQUIRED ALGORITHM AES,
    ROLE = ALL);
Go
BACKUP CERTIFICATE CertA TO FILE = '\\N2\Setup\CertA.cer';
--Copy CertA.cer 到备用机
GO


--3.
CREATE LOGIN LoginB WITH PASSWORD = 'dba123!@#';
Go
CREATE USER UserB FOR LOGIN LoginB
Go
CREATE CERTIFICATE CertB AUTHORIZATION UserB FROM FILE='\\N2\Setup\CertB.cer'
Go
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [LoginB];
---------
Go
ALTER DATABASE DB1 SET TRUSTWORTHY ON;
ALTER DATABASE DB2 SET TRUSTWORTHY ON;


Go
--5.
Backup Database DB1 TO Disk='\\N2\Setup\DB1.Bak' With Format;
Backup Database DB2 TO Disk='\\N2\Setup\DB2.Bak' With Format;


--7
GO
CHECKPOINT;
Backup Log DB1 TO Disk='\\N2\Setup\DB1_Log.Bak';
Backup Log DB2 TO Disk='\\N2\Setup\DB2_Log.Bak';




--8
CREATE AVAILABILITY GROUP MyAG 
   FOR DATABASE DB1, DB2 
   REPLICA ON 
      'N1' WITH 
         (ENDPOINT_URL = 'TCP://N1.noad.com:7022',
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
         FAILOVER_MODE = AUTOMATIC),
      'N2' WITH 
         (ENDPOINT_URL = 'TCP://N2.noad.com:7022',
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
         FAILOVER_MODE = AUTOMATIC); 


GO
--9
ALTER AVAILABILITY GROUP MyAG 
 MODIFY REPLICA ON 'N2' WITH (SECONDARY_ROLE  (ALLOW_CONNECTIONS = ALL));
ALTER AVAILABILITY GROUP MyAG 
 MODIFY REPLICA ON 'N2' WITH (FAILOVER_MODE=MANUAL);
ALTER AVAILABILITY GROUP MyAG 
 MODIFY REPLICA ON 'N2' WITH (AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT);


GO
--11  监听器


ALTER AVAILABILITY GROUP MyAG 
  Add Listener 'MyLT' (WITH IP (('192.168.112.120','255.255.255.0')),PORT=1433);


--副本路径
ALTER AVAILABILITY GROUP MyAG
 MODIFY REPLICA ON N'N1' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://N1.noad.com:1433'));
ALTER AVAILABILITY GROUP MyAG
 MODIFY REPLICA ON N'N2' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://N2.noad.com:1433'));


--只读路由
ALTER AVAILABILITY GROUP MyAG
 MODIFY REPLICA ON N'N1' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('N2','N1')));
ALTER AVAILABILITY GROUP MyAG
 MODIFY REPLICA ON N'N2' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('N1','N2')));


GO
--TEST:
Use DB1;
Create Table T1 (ID INT,Qty INT,Constraint PK_T1 Primary key (ID));
INSERT T1 (ID,Qty) Values (1,10);
INSERT T1 (ID,Qty) Values (2,20);
INSERT T1 (ID,Qty) Values (3,30);


Use DB2;
Create Table T1 (ID INT,Qty INT,Constraint PK_T1 Primary key (ID));
INSERT T1 (ID,Qty) Values (1,10);
INSERT T1 (ID,Qty) Values (2,20);
INSERT T1 (ID,Qty) Values (3,30);





--2
Use Master
Go
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'dba123!@#';
GO
CREATE CERTIFICATE CertB WITH SUBJECT = 'CertB for Database Mirroring';
Go
CREATE ENDPOINT Endpoint_Mirroring
 STATE = STARTED
 AS TCP (LISTENER_PORT=7022,LISTENER_IP = ALL) 
 FOR DATABASE_MIRRORING 
  (AUTHENTICATION = CERTIFICATE CertB,
   ENCRYPTION = REQUIRED ALGORITHM AES,
   ROLE = ALL);
Go
BACKUP CERTIFICATE CertB TO FILE = 'C:\Setup\CertB.cer';
--Copy CertB.cer 到正式机
GO
--4
CREATE LOGIN LoginA WITH PASSWORD = 'dba123!@#';
Go
CREATE USER UserA FOR LOGIN LoginA;
Go
CREATE CERTIFICATE CertA AUTHORIZATION UserA FROM FILE = 'C:\Setup\CertA.cer';
Go
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [LoginA];
GO
--6
ALTER AVAILABILITY GROUP MyAG JOIN;
GO
--8
Restore Database DB1 From Disk='C:\Setup\DB1.Bak' With NORECOVERY;
Restore Database DB2 From Disk='C:\Setup\DB2.Bak' With NORECOVERY;
GO


Restore Log DB1 From Disk='C:\Setup\DB1_Log.bak' With NORECOVERY;
Restore Log DB2 From Disk='C:\Setup\DB2_Log.bak' With NORECOVERY;
GO
10
ALTER DATABASE DB1 SET HADR AVAILABILITY GROUP = MyAG;
GO


ALTER DATABASE DB2 SET HADR AVAILABILITY GROUP = MyAG;
GO

配置SQL Server 2016无域AlwaysOn

Windows Server 2016 以及 SQL Server 2016出来已有一段时间了,因为Windows Server 2016可以配置无域的Windows群集,因此也能够以此来配置无域的S...
  • roven257
  • roven257
  • 2017-12-02 02:50:46
  • 844

SQL Server 2016 无域群集配置 AlwaysON 可用性组

windows 2016 与 sql server 2016 高可用允许不许要加入AD ,管理方面省了挺多操作,也不用担心域控出现问题影响各服务器了。...
  • kk185800961
  • kk185800961
  • 2017-04-09 22:22:53
  • 3912

SQL Server 阿里云ECS实现AlwaysOn可用性组

阿里云ECS当前可以部署 SQL Server Alwayson 可用性组,但是在阿里云上实现故障转移的高可用虚拟IP还无法实现。在阿里云上安装完成 Alwayson 可用性组后,数据库的监听器只能在...
  • kk185800961
  • kk185800961
  • 2017-06-06 13:10:09
  • 1546

SQL Server2014新特性——用SSD作为缓冲池扩展

SQL Server中,内存无疑是非常重要的一环,因为它决定了你能使用多少缓存。当你从存储中读取数据,数据会在缓冲池中缓存。直接读缓存是最快的,如果经常访问的数据得不到缓存,那就只能读存储,速度自然就...
  • yenange
  • yenange
  • 2018-01-08 15:45:22
  • 104

SQL SERVER 2016 AlwaysOn 无域集群+负载均衡搭建与简测

原文:点击打开链接 之前和很多群友聊天发现对2016的无域和负载均衡满心期待,毕竟可以简单搭建而且可以不适用第三方负载均衡器,SQL自己可以负载了。windows2016已经可以下载使用了,...
  • yenange
  • yenange
  • 2016-10-28 11:28:36
  • 2029

Powershell 5.1 脚本化配置 Windows 2016 & SQL Server 2016 无域 AlwaysOn AG

基本使用 Powershell 脚本配置完成的。这里在创建证书和端点时用的是SQL命令,其实PS有相关命令可以完成。此脚本配置AG,都是基本的操作命令,命令执行前后都没有逻辑判断和检查。如果完整一些,...
  • kk185800961
  • kk185800961
  • 2017-10-23 11:18:25
  • 655

SQL SERVER 2016 AlwaysOn搭建实例

安装要求https://docs.microsoft.com/zh-cn/sql/database-engine/availability-groups/windows/prereqs-restric...
  • prosperity1006
  • prosperity1006
  • 2018-03-27 16:17:30
  • 5

AlwaysOn无域高可用组2016(图)

  • 2017年04月09日 22:16
  • 4.32MB
  • 下载

AlwaysOn的实施笔记

最近有案子要将Always On搞到正式环境。Sql Server cluster + Alwayson  1 primary(cluster) + 1 secondary(单机)的架构。无论是之前做...
  • u013003966
  • u013003966
  • 2017-07-06 17:00:28
  • 435

SQL Server 2017 ALWAYSON无域无群集部署问题

1.创建可用性时,若在指定TCP地址错误,再去修改,则不会生效。要手工删除可用性组,再创建才行     **没测试重启动服务是否会生效 2.若较多数据库(部署案例100+)部署到同一个节点,速度非...
  • luckyrandom
  • luckyrandom
  • 2018-01-25 09:30:43
  • 183
收藏助手
不良信息举报
您举报文章:SQL Server 2016 AlwaysON 非域部署脚本
举报原因:
原因补充:

(最多只允许输入30个字)