zoukankan      html  css  js  c++  java
  • 基于无域故障转移群集 配置高可用SQLServer 2016数据库

    基于上次的文章搭建的环境,可以在这里:http://www.cnblogs.com/DragonStart/p/8275182.html看到上次的文章.


    演示环境

    1. 配置一览

    Key Value
    系统版本 Win2016
    数据库版本 SQLServer 2016
    群集IP 10.22.20.201
    数据库侦听器IP 10.22.20.202

    2. 连接

    3. 写点初始数据

    这个只需要在其中一个写就行,不用全部写

    4. 备份数据库

    如果不做备份的话,后面会失败.进入后不用改什么,直接备份即可.

    5. 给SQLServer服务打开高可用性组支持

    操作完记得重启数据库服务:


    创建与分享证书

    1. 在服务器上建立目录

    创建证书过程中会生成证书文件,所以每个服务器准备个文件夹用于存放证书文件:
    记得给everyone读写权限

    2. 创建证书

    每一个服务器上,执行如下SQL代码,注意:每一个服务器执行之前要做小改动,要改的地方写在注释里:

    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 = 'D:shareCERT1.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
    

    如果创建证书过程中有失败的,可以用这个回退一些操作:

    --删除终结点
    drop ENDPOINT [group0_endpoint];
    go
    --删除证书
    DROP CERTIFICATE CERT1;
    --删除主密钥
    drop master key 
    go
    

    3. 把证书文件发到每台设备

    随便用什么方法,把证书文件发到每台服务器:

    4. 在每台服务器的SQL里,安装其它服务器的证书:

    --载入其它节点证书
    --不用载入自己的证书!
    --不用载入自己的证书!
    --不用载入自己的证书!
    --CREATE CERTIFICATE CERT1 FROM FILE = 'D:shareCERT1.cer'; 
    CREATE CERTIFICATE CERT2 FROM FILE = 'D:shareCERT2.cer'; 
    CREATE CERTIFICATE CERT3 FROM FILE = 'D:shareCERT3.cer'; 
    GO 
    

    5. 查看证书与终结点

    现在在每台设备执行如下指令应该都能看到所有证书,以及终结点.group0_endpoint,如果没有,需要根据以上操作创建.

    select * from sys.certificates
    select * from sys.endpoints 
    

    创建可用性组

    1. 新建可用性组向导

    2. 根据向导走流程

    名称随意

    如果你之前没备份数据库,这里会过不了

    把所有节点添加进来,注意还要配置些选项

    默认过过过~



    3. 数据同步成功


    到这里,数据同步就成功了,我们可以看到每台服务器都同步了这个数据库
    根据之前的配置,我们有1个可读写的主节点,和2个只读的备用节点.当客户端要连接的时候,如何知道主节点与备用节点呢?接下来需要配置一个侦听器,让客户端通过侦听器自动连接到主节点.


    创建侦听器

    我们需要给可用性组创建一个侦听器,该侦听器会自动把侦听器IP指向主库服务器.

    1. 点这里

    2. 填写侦听器IP和端口

    3. 完成


    简单测试

    1. 使用侦听器连接

    我们刚才创建了侦听器,现在可以用这个侦听器的IP去连接当前主数据库节点.

    成功!

    2. 尝试手工切换主节点

    点这里

    选D2节点切换

    连接一下

    后面都是默认配置即可.

    刷新下连接,可以看到当前还是连着"主要"节点:

    3. 尝试自动切换

    接着试试以关机的方式,让数据库自己去切换节点.
    强行关闭该服务器:

    再次刷新客户端:

    可以看到主库自动切换到D1去了.

    4. 写入数据


    在切换过的库写数据会出现这样的情形:写入的数据自增长字段多了1000,所以,在设计业务的时候,最好对此有所准备.

    结束~

  • 相关阅读:
    pip install uwsgi 报错 AttributeError: module 'os' has no attribute 'uname'
    npm安装vue
    Node.js安装及环境配置之Windows篇
    Centos7 安装nodejs
    Centos7 Jenkins 插件下载速度慢、安装失败
    Centos7 使用docker 安装redis
    Centos7 安装jdk
    supervisor配置文件详解
    MySQL5.7 group by新特性,报错1055
    配置python虚拟环境Virtualenv及pyenv
  • 原文地址:https://www.cnblogs.com/DragonStart/p/8296276.html
Copyright © 2011-2022 走看看