zoukankan      html  css  js  c++  java
  • sql server 2016 AlwaysOn实现无域高可用全教程

    一、简介
    环境:小编使用的服务器是windows server 2016(系统服务器) + sql server 2016(数据库服务器)
    (windows server 2016 + sql server 2016以上才可用无域高可用,windows server 2016 + sql server 2016下载地址:http://msdn.itellyou.cn/

    windows server 2016 下载


    sql server 2016 下载

    下面进入主题吧!

    ip地址
    二、安装故障转移和.net3.5
    主机名 IP 说明
    win-138 192.168.66.138 服务器138,也就是节点138
    win-139 192.168.66.139 服务器139,也就是节点139
    mk-AlwaysOn 192.168.66.137 集群IP,虚拟的,自己随便写,同网段就行,后续会用到
    mk-SQL 192.168.66.140 监听器IP,也是虚拟的,自己随便写
    在服务器中添加角色和功能(两台计算机都要安装)
    默认下一步,下一步,勾选NET Framework 3.5 功能和故障转移群集,直到安装完成。

     

     

     


    二.修改并加入域(两台计算机都要改)
    在我的电脑中点击属性(也可以使用win+E进入文件夹,在此电脑中右键后点击属性)—>更改设置–>在弹出的窗口点击更改–>弹出的窗口点击其他–>最后点击确定(点击确定之后会重启电脑,点击立即重新启动)

     

    修改HOST文件(两台计算机都要安装)
    在文件夹中 C:WindowsSystem32driversetc 打开文件hosts,在hosts以笔记本或写字板方式打开,并进行新增和保存(保存不了的,把hosts文件复制到桌面后进行修改,修改完再覆盖C:WindowsSystem32driversetc中的hosts)
    新增内容hosts(注意是自己的IP,请参考下面的表格图):

    主机名 IP 说明
    win-138 192.168.66.138 服务器138,也就是节点138
    win-139 192.168.66.139 服务器139,也就是节点139
    mk-AlwaysOn 192.168.66.137 集群IP,虚拟的
    mk-SQL 192.168.66.140 监听器IP
    192.168.66.137 mk-AlwaysOn
    192.168.66.138 win-138.gdmk01.cn
    192.168.66.139 win-139.gdmk01.cn
    192.168.66.140 mk-SQL


    三、关闭防火墙(两台电脑执行)
    关闭防火墙,要不然故障转移会有问题


    设置允许应用或功能通过windows防火墙
    还是在刚刚的防火墙中点击设置允许应用或功能通过windows防火墙,设置以下几项

     

     

    四、修改DNS(两台电脑执行)
    在右下角网络中打开internet网络,设置DNS服务器


    五、新建故障转移(任意一台电脑执行)
    打开PoserShell运行以下代码,注意修改成自己的IP跟计算机名(参考上面的表格)

     

    New-Cluster -Name mk-AlwaysOn -Node win-138,win-139 -StaticAddress 192.168.66.137 -AdministrativeAccessPoint DNS


    六、验证故障转移是否成功(任意一台电脑关机)
    最好测试两台电脑(也可跳过不做这一步)
    如WIN-139关机(有人问怎么打开这个界面?在服务器管理器–>工具–>故障转移群集–>右键故障转移群集管理器–>连接到群集(N)–>输入集群的名称,如:mk-alwayson)

     

    恭喜各位故障转移已全部搞定,接下来就是sql server 2016的高可用性安装了
    七、安装sql server 2016(两台电脑都要装)
    下载地址:http://msdn.itellyou.cn/ 上面有提过的


    安装的话就不介绍了,不懂的小朋友请参考特别注意安装的功能和目录要一致,否则高可用会失败https://jingyan.baidu.com/article/948f592434b407d80ef5f97d.html

    八、设置共享文件
    在C盘中新建一个gdmk文件夹(两台都要建)
    设置共享人为Everyone,修改权限级别为读取/写入


    九、在配置管理器中启用高可用和修改账户名登录(两台节点上都要操作)
    1.点击SQL Server服务,再点击【SQL Server(MS…】

     

     

    2.勾选“启用AlwaysOn可用性组(E)”

    3.选择【登录】,设置电脑的账号名、密码(电脑开机的密码)注意注意:两台电脑的开机密码一定要一样的!!!


    十、在数据库里面安装证书(特别特别要小心)/客户机上操作

    先将两台安装客户端登录到数据库并且启用sa权限可以远程登陆
    1.这是sql的客户端下载地址:
    SQL Server Management Studio (SSMS) 下载地址:https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-2017
    2.在sql的客户端连接两台电脑装的数据库,用sa用户登录
    3.使用客户端去访问两台虚拟机的服务器。(可以在物理机里访问,物理机连接两台服务器的数据库),,注意:一定先要在两台虚拟机备份,快照,以防坏了不好恢复。步骤如下:

    3.新建查询,执行以下语句:

    节点1:WIN-138(数据库)
    USE master;
    GO
    --创建主密钥
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Abc123';
    --创建证书 这里有两个"CERT1",建议每台机器都改成不同的名称以作区分
    CREATE CERTIFICATE CERT1 WITH SUBJECT = 'CERT1', START_DATE = '2017-01-01',EXPIRY_DATE = '2099-12-30';
    --把刚才创建的证书备份到文件 这里也有两个CERT1要改
    BACKUP CERTIFICATE CERT1 TO FILE = 'C:gdmkCERT1.cer';
    --创建终结点,设为证书验证 这里第二行有1个CERT1要改
    CREATE ENDPOINT [group0_endpoint] AUTHORIZATION [sa] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
    FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE CERT1, ENCRYPTION = REQUIRED ALGORITHM AES)
    GO

    节点2:WIN-139
    USE master;
    GO
    --创建主密钥
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Abc123';
    --创建证书 这里有两个"CERT1",建议每台机器都改成不同的名称以作区分
    CREATE CERTIFICATE CERT2 WITH SUBJECT = 'CERT2', START_DATE = '2017-01-01',EXPIRY_DATE = '2099-12-30';
    --把刚才创建的证书备份到文件 这里也有两个CERT1要改
    BACKUP CERTIFICATE CERT2 TO FILE = 'C:gdmkCERT2.cer';
    --创建终结点,设为证书验证 这里第二行有1个CERT1要改
    CREATE ENDPOINT [group0_endpoint] AUTHORIZATION [sa] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
    FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE CERT2, ENCRYPTION = REQUIRED ALGORITHM AES)
    GO

    3.1将两边得共享文件夹里面证书互换,确保两节点上gdmk文件夹里面都有CERT1跟CERT2证书

    4.证书通过共享文件互相复制粘贴,共享文件地址:win-138gdmk


    5.执行完上一步,接着运行win-138,win-139里面的内容

    节点1:WIN-138
    --载入其它节点证书
    --不用载入自己的证书!
    --不用载入自己的证书!
    --不用载入自己的证书!
    --CREATE CERTIFICATE CERT1 FROM FILE = 'C:gdmkCERT1.cer';
    CREATE CERTIFICATE CERT2 FROM FILE = 'C:gdmkCERT2.cer';
    GO

    节点2:WIN-139
    --载入其它节点证书
    --不用载入自己的证书!
    --不用载入自己的证书!
    --不用载入自己的证书!
    CREATE CERTIFICATE CERT1 FROM FILE = 'C:gdmkCERT1.cer';
    --CREATE CERTIFICATE CERT2 FROM FILE = 'C:gdmkCERT2.cer';
    GO

    十、新建可用性组(此操作在连接集群ip上进行操作)
    数据库先备份

     

     

     

     

     

    这里添加副本辅助角色选择为:win-139

     

     

     

    添加监听器IP及名称

     

     

    最后一直下一步,直到完成!

    大功告功!

    连接的时候连接监听器地址192.168.66.140就可以了   

    这时测试下,可以让其中一台电脑故障(关机也可以),这时会自动转移到另外一台数据库上,在另外一台数据库里做增删改查等操作,但凡这台电脑开机,正常运行了,数据也会自动同步到这台电脑数据库里,这台电脑挂了,另外一台电脑的数据库依然接着继续运行,保证数据一切正常。

    sqlserver 2019  on windows server2019集群上也是一样的  

    特别要注意的是: 

    1.监听器ip可以不用做  连接集群ip就可以了 

    2.建立集群的时候必须要在集群ip上建立

    3.集群建立好之后先创建数据库 看到主副本数据库同步之后才能转移

    4.调节的时候我是将猪调节为同步模式  副本调节为异步模式    

    5.测试的时候  在集群ip上创建数据库跟可用性模式     看能否同步到主从数据库上

  • 相关阅读:
    PHP和Redis实现在高并发下的抢购及秒杀功能示例详解
    thinkphp整合系列之微信公众号支付
    JS之变量的运算
    (php)thinkphp3.2配置sql_server
    jyd数据结构
    mac终端下svn常用命令
    项目学习
    抛错
    phpunit
    Python
  • 原文地址:https://www.cnblogs.com/guarderming/p/11957657.html
Copyright © 2011-2022 走看看