SQLSERVER2016alwayson(有域控)背景:实现数据库层面的读写分离。数据库有SQLNODE1节点。SQLNODE2节点。还有一台域控的服务器DomainController。整体结构如图所示注意:所有的操作都是在所有服务器都关闭防火墙的操作下完成撰写人:雷锋两个节点SQLNODE1和SQLNODE2采用非共享文件夹的方式进行存储文件。系统和环境要求1cn_sql_server_2016_enterprise_x64_dvd_8699450.iso2cn_windows_server_2016_x64_dvd_9327743.iso3SSMS-Setup-CHS.exe虚拟机的安装虚拟机使用VM。虚拟就具体的安装步骤不在叙述。1虚拟机系统的安装选择第一个典型。点击下一步2选择稍后安装操作系统3选择windows操作系统此处选择任意版本均可4选择虚拟机文件的路径和虚拟机的名字5选择虚拟机中磁盘的大小。选择存储为单一文件6点击完成即可。(此步骤也可以修改虚拟机的配置)7设置虚拟机网络。选择桥接即可8安装操作系统,选择iso文件所在路径操作系统的安装1打开虚拟机之后会自动进入系统的安装界面。系统的安装不在介绍。最后一步选择2016datacenterwithGUI即可。系统安装好之后设置下密码就可以了VMWareTools安装1选择虚拟机下面的xmwaretools安装工具。会联网自动下载安装程序。下载完成后会在虚拟机的下方提示安装2进入虚拟机的环境内输入WIN+R输入D:\Setup.exe进行安装选择下一步3提示需要进行重启。按照提示进行操作即可Windows故障转移集群的安装1打开服务器管理器选择添加角色和功能选择故障转移集群点击安装进行集群的安装。安装完后会提示安装成功.Net3.5的安装1将windowsserveriso文件中的sources文件夹下的sxs文件夹拷贝到虚拟机中c盘下面路径格式为C:\sxs选中.netFrameWork3.5功能全部选中选择指定路径输入完整的c盘下路径c:\sxs点击ok。在点击安装即可。这一步需要时间比较长需要耐心等待虚拟机的复制(复制出来SQLNODE1和SQLNODE2节点)1选中第一台DomainController虚拟机。点击克隆记住此处选择的虚拟机Node1的完整路径成功之后在vm中就能看到克隆成功的虚拟机了。2重复上述步骤克隆第二台虚拟机node2虚拟机MAC地址的修改1为了避免MAC地址重复。需要修改虚拟机node1和node2的mac地址2选择生成会生成新的mac地址。点击OK即可。在node2上重复上述动作虚拟机node1和node2上安装网卡重复上述动作在node2节点上。虚拟机系统的重置1为了避免虚拟机操作系统GUID的重复。我们需要把虚拟机进行重置。Sysprep/generalize/shutdown/oobe输入完密码点击完成即可。重复上述动作在node2虚拟机上域控(DomainController)设置ipTCP/IPv6取消选中.选中IPv4设置ip和首选DNS为192.168.15.1域控服务器安装(ActiveDirectoryDomainServices)1点击服务器管理器选中ActiveDirectoryDomainServices2点击下一步最后完成安装后界面上有一个感叹号。选择Promotethisservertoadomaincontroller3选择添加一个新林输入名字LAB.COM4指定密码。其他的按照如图配置即可。5这个警告可以忽略直接点击下一步即可。6指定NetBIOS为LAB即可7点击下一步即可8点击下一步9点击安装即可。安装完成后会执行重启使用使用管理员身份登陆DC服务器即可为域控服务器设置DNS1在DC服务器WIN+R输入cmd.exe–nslookup输入nslookup2取消IPV6的选中3在管理工具中找到DNS4选中ReverseLookupZone和DNS的网关前面三个一样就行了为node1和node2配置网络用来连接域控服务器1使用admin登陆node1服务器。按照如图所示设置网络2设置完之后ping一下网关(192.168.15.1)一定要保证网关能ping通3选中我的电脑属性4选择计算机名。点击更改。修改计算机名字为SQLNODE1。选中域。输入之前设置好的LAB.COM。点击保存在弹出的认证框里面输入系统管理员的账号密码即可。5如下提示就说明计算机已经进入域控了。6重复上述动作在NODE2节点ip为192.168.15.3计算机名字为SQLNODE2再次重申一点所有服务器上的防火墙都要关闭为域控创建DBA和服务账户1在WIN+R中输入2选中建立好的域控点击新建选择用户3按照如图所示建立新的用户4同理新建一个svc-sql用户用于运行sqlserver服务5以管理员身份登陆NODE1和NODE2服务器将DBA用户添加到管理组里面安装数据库1用DBA账户登陆NODE1服务器。选中2016数据库安装的iso文件。选择setup.exe选择开发者版本2选择接受点击下一步3更新这个不需要打勾4报错不用担心直接点击下一步安装的过程中sharepointR服务。分析服务,报表服务不需要安装polybase也不需要安装。点击下一步即可SQLServer代理选择svc-sql账户输入密码选择自动SQLServer数据库引擎选择svc-sql输入密码选择自动将当前登陆的dba用户和本身的admin用户添加。一直等到数据库最终的完成安装。重复执行同样的操作在NODE2上完成数据库的安装配置node1和node2之间的故障转移1使用域控账号LAB登陆node1执行上述操作可以在node1上安装故障转移集群。重复执行上述步骤在node2上安装故障转移集群WINCLU2(注意这一步可能不是必须的。Node1和Node2已经安装过WINCLU1。重复执行的目的是为了和最初的版本保持一致。执行WINCLU2的安装肯定没问题。我已经测试过了,只不过是需要在sqlserver部署alwayson的时候选中WINCLUE2即可)为WINCLU2设置完全控制权限1打开域控选项首先在试图中把高级功能给打勾2选择计算器点击右键属性3定位到安全选项卡点击高级然后点击左侧的添加。点击选择一个主体。点击对象类型把computer打勾。点击ok。将WINCLU2用户添加过来并且把完全控制打勾。最后点击保存在数据库服务上启用alwayson1使用dba账户登陆SQLNODE1.在数据库服务器管理里面选择sqlserver的主服务。点击属性找到alwayson选项卡。选中启用alwayson服务。此处操作的时候是可能是WINCLU2。这是因为我们在node2服务器上也装了一个故障转移集群。应该只在node1上装一个故障转移集群即可。(需测试)保存后服务自动重启NODE1服务器ssms中执行脚本USE[master]GO/******Object:Database[Company]ScriptDate:8/23/20163:31:44PM******/CREATEDATABASE[Company]CONTAINMENT=NONEONPRIMARY(NAME=N'Company',FILENAME=N'C:\ProgramFiles\MicrosoftSQLServer\MSSQL12.MSSQLSERVER\MSSQL\DATA\Company.mdf',SIZE=1048576KB,MAXSIZE=UNLIMITED,FILEGROWTH=1024KB)LOGON(NAME=N'Company_log',FILENAME=N'C:\ProgramFiles\MicrosoftSQLServer\MSSQL12.MSSQLSERVER\MSSQL\DATA\Company_log.ldf',SIZE=524288KB,MAXSIZE=2048GB,FILEGROWTH=10%)GOALTERDATABASE[Company]SETCOMPATIBILITY_LEVEL=120GOIF(1=FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))beginEXEC[Company].[dbo].[sp_fulltext_database]@action='enable'endGOALTERDATABASE[Company]SETRECOVERYFULLGOALTERDATABASE[Company]SETMULTI_USERGOCreatetableEmployee(idintidentity(1,1),empnamevarchar(200))insertintoemployeevalues('king')insertintoemployeevalues('john')sp_configure'showadvancedoptions',1Reconfiguregosp_configure'xp_cmdshell',1Reconfiguregoxp_cmdshell'mdc:\bkp'gobackupdatabasecompanytodisk='c:\bkp\company_full.bak'gobackuplogcompanytodisk='c:\bkp\company_log.full'go注意:文件的路径一定要注意不能有错误。我说的就是上面创建sqlserver数据和日志文件的路径去c盘下的sqlserver安装目录看看不要一下子全部执行建议是每个go执行一下。执行如图所示的命令将数据库文件从node1复制到node2一份注意路径文件在node2的ssms界面执行如下命令(确保文件已经复制过来了)restoredatabasecompanyfromdisk='c:\bkp\company_full.bak'withnorecoveryrestoredatabasecompanyfromdisk='c:\bkp\company_log.full'withnorecovery配置alwayson高可用集群1修改node1mssql主服务的账户为admin登陆。如果不修改的话会导致安装失败2修改node2的主服务的账户登陆类型为admin最后可以在node1服务器上登陆node2数据库。可以看到数据库后面都有已同步的标识。在数据库中增删该查会发现数据可以自动同步至此。Alwayson已经搭建完毕