当前位置: 澳门新濠3559 > 数据库 > 正文

目前在Linux上可以搭建两种类型的SQL Server

时间:2019-11-07 13:43来源:数据库
上边简单介绍一下怎么样在Red Hat Enterprise Linux上一步一步创制贰个SQLServer AG(Always On AvailabilityGroup卡塔 尔(阿拉伯语:قطر‎,以至配备进度中遇到的坑的填充方法。 上边简要介绍一

上边简单介绍一下怎么样在Red Hat Enterprise Linux上一步一步创制贰个SQL Server AG(Always On Availability Group卡塔 尔(阿拉伯语:قطر‎,以至配备进度中遇到的坑的填充方法。

上边简要介绍一下怎样在Ubuntu上一步一步创制三个SQL Server AG(Always On Availability Group卡塔 尔(阿拉伯语:قطر‎,以致配备进度中遇见的坑的填写方法。

从前发布过黄金时代篇看似的稿子是Configure Always On Availability Group for SQL Server on Ubuntu——Ubuntu上配置SQL Server Always On Availability Group,有对Ubuntu感兴趣的请看那生龙活虎篇。

 

当前在Linux上得以搭建两体系型的SQL Server AG,生机勃勃种是高可用性的构造相同的时候接受Cluster服务器提供业务三回九转性。这种协会包括read-scale节点。接下来就能够介绍这种AG的搭建方法。别的意气风发种是绝非Cluster服务的read-scale AG,这种组织仅仅提供只读的可扩充性,不提供高可用性作用。关于怎么样成立这种简单的AG请参谋:Configure read-scale availability group for SQL Server on Linux。

如今在Linux上得以搭建三种档案的次序的SQL Server AG,后生可畏种是高可用性的社团同一时间采纳Cluster服务器提供事业三番五次性。这种组织包涵read-scale节点。接下来就能介绍这种AG的搭建方法。别的大器晚成种是还未有Cluster服务的read-scale AG,这种结构仅仅提供只读的可扩大性,不提供高可用性功用。关于怎么样成立这种总结的AG请参谋:Configure read-scale availability group for SQL Server on Linux。

此外在CREATE AVAILABILITY GROUP时能够钦命CLUSTEGL450 TYPE:

别的在CREATE AVAILABILITY GROUP时能够钦定CLUSTE智跑 TYPE:

  • WSFC:Windows server failover cluster。那几个是Windows系统上的私下认可值;
  • EXTERNAL:非Windows server上的failover cluster,比如Linux上的Pacemaker;
  • NONE:不包蕴cluster manager,指的是创建read-scale类型的Availability Group。
  • WSFC:Windows server failover cluster。这些是Windows系统上的暗中同意值;
  • EXTERNAL:非Windows server上的failover cluster,比如Linux上的Pacemaker;
  • NONE:不分包cluster manager,指的是创造read-scale类型的Availability Group。

内部Linux能够使用EXTEENCORENAL或NONE,小编精晓的是EXTENRAL功用正是相仿近日SQL Server中的AG,NONE则是黄金年代种新类型,未有Cluster功效的不补助高可用性和灾荒恢复生机的AG。首要功效是分担主服务器的负载,帮助多少个只读备用节点,同一时间这连串型也扶持Windows上行使,是SQL Server 2017新支撑的机能。更加多详细的信息请参见这里:Read-scale availability groups。

当中Linux可以使用EXTE中华VNAL或NONE,作者领悟的是EXTENRAL作用就是周边这段日子SQL Server中的AG,NONE则是风姿罗曼蒂克种新品类,未有Cluster功用的不扶持高可用性和魔难苏醒的AG。重要职能是分担主服务器的负荷,帮忙五个只读备用节点,同不经常候那种类型也支撑Windows上行使,是SQL Server 2017新支持的法力。越来越多详细的消息请参谋这里:Read-scale availability groups。

 

 

接下去进入正题首要介绍一下高可用性结构的Availability Group的搭建方法。

接下去步向正题重要介绍一下高可用性结构的Availability Group的搭建方法。

1.      安装及陈设SQL Server

五个SQL AG至少有多少个以上的节点,由于情状简单,这里只设置一个最简便的隐含多个节点的AG。首先是依照SQL Server on Red Hat Enterprise Linux——RHEL上的SQL Server(全截图)中的介绍,安装多个卡宴HEL机器和SQL Server。

Note:同三个AG的四个节点必需都以实体机或许虚构机,当都以虚构机的时候也必需都在同叁个虚构化平台上,原因是出于Linux须要用fencing agent去隔开分离节点上的财富,不一致平台fencing agent类型是见仁见智的,详细参谋Policies for Guest Clusters。

 

 

2.      创建AG

在Linux上,必得先创制AG技能把它当成三个财富加到Cluster中开展管理。上边介绍一下什么创造AG。

a)       计划干活:

立异每二个节点服务器的机器名切合那些须求:23个字符只怕更加少;网络上是唯黄金年代的。假使不相符需求能够使用如下命令修正机器名:

sudo vi /etc/hostname

运用如下命令改良Hosts文件以保险同贰个AG中几个节点能够互相通讯

sudo vi /etc/hosts

这里肯定注意:改进后能够用ping命令尝试ping hostname,必得回到对应的着实IP地址才行,也正是Hosts文件中不可能包蕴形似hostname和127.0.0.1的应和记录,配置后如下,注意个中”127.0.1.1 路虎极光HEL73鲍勃3”那行被本人注释了,不然开启Cluster 服务的时候或许会有标题:

澳门新濠3559 1

万一不注释,ping hostname的回来结果是127.0.1.1,注释后回到的是真的IP:

澳门新濠3559 2

急需回到真正IP中期配置才好使。

其它能够用那些命令查看当前server的IP:

sudo ip addr show

b)      在享有节点SQL Server上开启Always On Availability Group功用不分互相启服务:

sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled  1
sudo systemctl restart mssql-server

c)       在装有节点上实践SQL语句开启AlwaysOn_health事件会话以便于确诊难点:

ALTER EVENT SESSION  AlwaysOn_health ON SERVER WITH (STARTUP_STATE=ON);
GO

越多关于Event Session新闻方可参照:AlwaysOn Extended Events。

d)      创制db mirroring endpoint使用的顾客:

CREATE LOGIN dbm_login WITH PASSWORD = '**<Your Password>**';
CREATE USER dbm_user FOR LOGIN dbm_login;

e)      创立证书:

Linux上的SQL Server Mirroring Endpoint是用证件去验证通讯的。下边包车型大巴通令创立二个master key和证件并备份。连接到Primary端SQL Server并举行如下命令:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**<Master_Key_Password>**';
CREATE CERTIFICATE dbm_certificate WITH SUBJECT = 'dbm';
BACKUP CERTIFICATE dbm_certificate
   TO FILE = '/var/opt/mssql/data/dbm_certificate.cer'
   WITH PRIVATE KEY (
           FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
           ENCRYPTION BY PASSWORD = '**<Private_Key_Password>**'
       );

f)        把证件的备份复制到全数的非Primary节点上,相同的时候接收它成立证书:

先在Primary节点上实践如下命令复制证书的备份到任何节点上:

cd /var/opt/mssql/data
scp dbm_certificate.* root@**<node2>**:/var/opt/mssql/data/

Note:借使遇上Permission denied,能够利用sz和rz命令通过主机来传输文件。

目前在Linux上可以搭建两种类型的SQL Server。再在目标端Secondary节点上实行如下命令给客商mssql增加足够的权杖:

cd /var/opt/mssql/data
chown mssql:mssql dbm_certificate.*

终极在指标端Secondary节点上行使备份的证书创造证书:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**<Master_Key_Password>**';
CREATE CERTIFICATE dbm_certificate  
    AUTHORIZATION dbm_user
    FROM FILE = '/var/opt/mssql/data/dbm_certificate.cer'
    WITH PRIVATE KEY (
    FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
    DECRYPTION BY PASSWORD = '**<Private_Key_Password>**'
            );

g)       在享有节点上创设database mirroring endpoint:

CREATE ENDPOINT [Hadr_endpoint]
    AS TCP (LISTENER_IP = (0.0.0.0), LISTENER_PORT = **<5022>**)
    FOR DATA_MIRRORING (
        ROLE = ALL,
        AUTHENTICATION = CERTIFICATE dbm_certificate,
        ENCRYPTION = REQUIRED ALGORITHM AES
        );
ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [dbm_login];

Note:这里Listener IP近年来不能改改,只好是0.0.0.0,这几天有BUG,今后可能会修复。

h)      在Primary节点上开创AG:

CREATE AVAILABILITY GROUP [RHELAG]
    WITH (DB_FAILOVER = ON, CLUSTER_TYPE = EXTERNAL)
    FOR REPLICA ON
        N'**<node1>**'
        WITH (
            ENDPOINT_URL = N'tcp://**<node1>**:**<5022>**',
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
            FAILOVER_MODE = EXTERNAL,
            SEEDING_MODE = AUTOMATIC
            ),
        N'**<node2>**'
        WITH (
            ENDPOINT_URL = N'tcp://**<node2>**:**<5022>**',
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
            FAILOVER_MODE = EXTERNAL,
            SEEDING_MODE = AUTOMATIC
            );
ALTER AVAILABILITY GROUP [RHELAG] GRANT CREATE ANY DATABASE;

Note:施行进程中只怕会见世那些警告”Attempt to access non-existent or uninitialized availability group with ID”,一时半刻忽视就可以,以后版本或者会修复。

下图中汉兰达HELAG是新创立的AG,Secondary节点还处在OFFLINE状态:

澳门新濠3559 3

i)        把其他Secondary节点插手到AG中:

ALTER AVAILABILITY GROUP [RHELAG] JOIN WITH (CLUSTER_TYPE = EXTERNAL);
ALTER AVAILABILITY GROUP [RHELAG] GRANT CREATE ANY DATABASE;

下图为增加完节点后的景况:

澳门新濠3559 4

j)        测验:创设二个DB并参与到刚刚成立的AG中:

CREATE DATABASE [db1];
ALTER DATABASE [db1] SET RECOVERY FULL;
BACKUP DATABASE [db1]
   TO DISK = N'var/opt/mssql/data/db1.bak';
ALTER AVAILABILITY GROUP [RHELAG] ADD DATABASE [db1];

k)       验证:在Secondary端查看DB是不是已经成功同步过去了:

SELECT * FROM sys.databases WHERE name = 'db1';
GO
SELECT DB_NAME(database_id) AS 'database', synchronization_state_desc FROM sys.dm_hadr_database_replica_states;

澳门新濠3559 5 

那儿,二个粗略的AG就创设好了,不过它不能够提供高可用性和祸殃恢复生机功能,必需布署贰个Cluster手艺技能好使。假若上述h)和i)步骤的TSQL更改来以下七个,则开创下来的就是read-scale类型的AG。

  • 创建AG命令:

    CREATE AVAILABILITY GROUP [RHELAG]

    WITH (CLUSTER_TYPE = NONE)
    FOR REPLICA ON
        N'**<node1>**' WITH (
            ENDPOINT_URL = N'tcp://**<node1>**:**<5022>**',
            AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
            FAILOVER_MODE = MANUAL,
            SEEDING_MODE = AUTOMATIC,
                    SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
            ),
        N'**<node2>**' WITH (
            ENDPOINT_URL = N'tcp://**<node2>**:**<5022>**',
            AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
            FAILOVER_MODE = MANUAL,
            SEEDING_MODE = AUTOMATIC,
            SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
            );
    

    ALTER AVAILABILITY GROUP [RHELAG] GRANT CREATE ANY DATABASE;

  • 把Secondary节点加到AG中命令:

    ALTER AVAILABILITY GROUP [RHELAG] JOIN WITH (CLUSTER_TYPE = NONE); ALTER AVAILABILITY GROUP [RHELAG] GRANT CREATE ANY DATABASE;

Note:这时候的AG是从未Listener的,方今版本也临时不可能创制Listener。

 

1.      安装及安插SQL Server

叁个SQL AG至少有多个以上的节点,由于条件容易,这里只设置叁个最简易的包涵多少个节点的AG。首先是依据SQL Server on Ubuntu——Ubuntu上的SQL Server(全截图)中的介绍,安装多个Ubuntu机器和SQL Server。

Note:同贰个AG的七个节点必需都以实体机只怕虚构机,当都是设想机的时候也一定要都在同八个设想化平台上,原因是出于Linux须要用fencing agent去隔开节点上的能源,差别平台fencing agent类型是分裂的,详细参谋Policies for Guest Clusters。

 

3.      配置四个集群能源微机,如Pacemaker

具体步骤如下:

a)       在有着的Cluster节点上设置和配置Pacemaker:

先安装防火墙允许相关端口通过,

sudo firewall-cmd --permanent --add-service=high-availability
sudo firewall-cmd --reload

Note:要是接收任何firewall工具,必要敞开如下那多少个端口:

TCP: Ports 2224, 3121, 21064

UDP: Port 5405

在有着节点上设置Pacemaker软件包:

sudo yum install pacemaker pcs fence-agents-all resource-agents

设置Pacemaker和Corosync软件包在安装时成立的暗许顾客的密码,需保障具有节点上密码相似:

sudo passwd hacluster

b)      启用并拉开pcsd和Pacemaker服务:

sudo systemctl enable pcsd
sudo systemctl start pcsd
sudo systemctl enable pacemaker

c)       创建Cluster并启动:

先是为了防止有Cluster的残留配置文件影响中期搭建,可以先履行如下命令删除已经存在的Cluster:

sudo pcs cluster destroy # On all nodes
sudo systemctl enable pacemaker

下一场成立并配置Cluster:

sudo pcs cluster auth **<nodeName1>** **<nodeName2>**  -u hacluster -p **<password for hacluster>**
sudo pcs cluster setup --name **<clusterName>** **<nodeName1>** **<nodeName2…>**
sudo pcs cluster start --all

d)      配置隔绝:STONITH。最近测量试验碰着为了轻便,近年来不配备了,这里先施行以下命令禁止使用隔开:

sudo pcs property set stonith-enabled=false

假诺想布置,参考How To Configure VMware fencing using fence_vmware_soap in RHEL High Availability Add On——RHEL Pacemaker中配置STONITH。

e)      设置start-failure-is-fatal为false:

pcs property set start-failure-is-fatal=false

暗中同意值是true,当为true的时候,假若Cluster第一次开发银行能源失利,在机动Failover操作后,必要客商手动清空能源运行失利的多寡记录,使用那一个命令重新载入参数财富配置:

pcs resource cleanup <resourceName>

 

2.      创建AG

在Linux上,必得先创制AG才具把它当成三个能源加到Cluster中张开管理。下边介绍一下哪些创造AG。

a)       盘算干活:

更新每一个节点服务器的机械名相符那几个必要:15个字符只怕更加少;互连网上是唯风流倜傥的。尽管不相符必要能够行使如下命令校订机器名:

sudo vi /etc/hostname

应用如下命令校勘Hosts文件以管教同叁个AG中几个节点能够并行通讯

sudo vi /etc/hosts

此间料定注意:改良后得以用ping命令尝试ping hostname,必需再次来到对应的真的IP地址才行,也便是Hosts文件中不能包蕴相同hostname和127.0.0.1的呼应记录,配置后如下,注意在那之中”127.0.1.1   Ubuntu1604鲍伯2”那行被自身注释了,不然开启Cluster 服务的时候大概会非常:

澳门新濠3559 6 

尽管不注释,ping hostname的回来结果是127.0.1.1,注释后回来的是的确IP:

澳门新濠3559 7

亟需回到真正IP早先时期配置才好使。

除此以外能够用那些命令查看当前server的IP:

sudo ip addr show

b)      在具备节点SQL Server上开启Always On Availability Group功用同等看待启服务:

sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled  1
sudo systemctl restart mssql-server

c)       在富有节点上施行SQL语句开启AlwaysOn_health事件会话以有益确诊难点:

ALTER EVENT SESSION  AlwaysOn_health ON SERVER WITH (STARTUP_STATE=ON);
GO

越来越多关于Event Session音讯可以参谋:AlwaysOn Extended Events。

d)      创制db mirroring endpoint使用的顾客:

CREATE LOGIN dbm_login WITH PASSWORD = '**<Your Password>**';
CREATE USER dbm_user FOR LOGIN dbm_login;

e)      创建证书:

Linux上的SQL Server Mirroring Endpoint是用证件去验证通讯的。上边包车型地铁下令创立四个master key和证件并备份。连接到Primary端SQL Server并推行如下命令:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**<Master_Key_Password>**';
CREATE CERTIFICATE dbm_certificate WITH SUBJECT = 'dbm';
BACKUP CERTIFICATE dbm_certificate
   TO FILE = '/var/opt/mssql/data/dbm_certificate.cer'
   WITH PRIVATE KEY (
           FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
           ENCRYPTION BY PASSWORD = '**<Private_Key_Password>**'
       );

f)        把证件的备份复制到全数的非Primary节点上,同一时间使用它成立证书:

先在Primary节点上试行如下命令复制证书的备份到别的节点上:

cd /var/opt/mssql/data
scp dbm_certificate.* root@**<node2>**:/var/opt/mssql/data/

Note:假设超出Permission denied,可以使用sz和rz命令通过主机来传输文件。

再在目标端Secondary节点上进行如下命令给客商mssql增加丰富的权位:

cd /var/opt/mssql/data
chown mssql:mssql dbm_certificate.*

末尾在目标端Secondary节点上应用备份的证书成立证书:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**<Master_Key_Password>**';
CREATE CERTIFICATE dbm_certificate  
    AUTHORIZATION dbm_user
    FROM FILE = '/var/opt/mssql/data/dbm_certificate.cer'
    WITH PRIVATE KEY (
    FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
    DECRYPTION BY PASSWORD = '**<Private_Key_Password>**'
            );

g)       在具有节点上创立database mirroring endpoint:

CREATE ENDPOINT [Hadr_endpoint]
    AS TCP (LISTENER_IP = (0.0.0.0), LISTENER_PORT = **<5022>**)
    FOR DATA_MIRRORING (
        ROLE = ALL,
        AUTHENTICATION = CERTIFICATE dbm_certificate,
        ENCRYPTION = REQUIRED ALGORITHM AES
        );
ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [dbm_login];

Note:这里Listener IP权且不可能改改,只好是0.0.0.0,目前有BUG,今后或然会修复。

h)      在Primary节点上创造AG:

CREATE AVAILABILITY GROUP [UbuntuAG]
    WITH (DB_FAILOVER = ON, CLUSTER_TYPE = EXTERNAL)
    FOR REPLICA ON
        N'**<node1>**'
        WITH (
            ENDPOINT_URL = N'tcp://**<node1>**:**<5022>**',
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
            FAILOVER_MODE = EXTERNAL,
            SEEDING_MODE = AUTOMATIC
            ),
        N'**<node2>**'
        WITH (
            ENDPOINT_URL = N'tcp://**<node2>**:**<5022>**',
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
            FAILOVER_MODE = EXTERNAL,
            SEEDING_MODE = AUTOMATIC
            );
ALTER AVAILABILITY GROUP [UbuntuAG] GRANT CREATE ANY DATABASE;

Note:实施进程中或者会现出这几个警告”Attempt to access non-existent or uninitialized availability group with ID”,一时忽视就可以,今后版本大概会修复。

下图中UbuntuAG2是新创造的AG,Secondary节点还地处OFFLINE状态:

澳门新濠3559 8

i)        把任何Secondary节点出席到AG中:

ALTER AVAILABILITY GROUP [UbuntuAG] JOIN WITH (CLUSTER_TYPE = EXTERNAL);
ALTER AVAILABILITY GROUP [UbuntuAG] GRANT CREATE ANY DATABASE;

下图为增加完节点后的状态:

澳门新濠3559 9

j)        测量试验:成立三个DB并加入到刚刚创设的AG中:

CREATE DATABASE [db1];
ALTER DATABASE [db1] SET RECOVERY FULL;
BACKUP DATABASE [db1]
   TO DISK = N'var/opt/mssql/data/db1.bak';
ALTER AVAILABILITY GROUP [UbuntuAG] ADD DATABASE [db1];

k)       验证:在Secondary端查看DB是或不是曾经成功同步过去了:

SELECT * FROM sys.databases WHERE name = 'db1';
GO
SELECT DB_NAME(database_id) AS 'database', synchronization_state_desc FROM sys.dm_hadr_database_replica_states;

澳门新濠3559 10

当时,贰个精简的AG就创立好了,可是它无法提供高可用性和苦难复苏功效,必需配备一个Cluster技术技艺好使。要是上述h)和i)步骤的TSQL改造到以下多少个,则开创下来的便是read-scale类型的AG。

  • 创建AG命令:

    CREATE AVAILABILITY GROUP [UbuntuAG]

    WITH (CLUSTER_TYPE = NONE)
    FOR REPLICA ON
        N'**<node1>**' WITH (
            ENDPOINT_URL = N'tcp://**<node1>**:**<5022>**',
            AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
            FAILOVER_MODE = MANUAL,
            SEEDING_MODE = AUTOMATIC,
                    SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
            ),
        N'**<node2>**' WITH (
            ENDPOINT_URL = N'tcp://**<node2>**:**<5022>**',
            AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
            FAILOVER_MODE = MANUAL,
            SEEDING_MODE = AUTOMATIC,
            SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
            );
    

    ALTER AVAILABILITY GROUP [UbuntuAG] GRANT CREATE ANY DATABASE;

把Secondary节点加到AG中命令:

ALTER AVAILABILITY GROUP [UbuntuAG] JOIN WITH (CLUSTER_TYPE = NONE);
ALTER AVAILABILITY GROUP [UbuntuAG] GRANT CREATE ANY DATABASE;

Note:那个时候的AG是未曾Listener的,近些日子版本也一时不能够制造Listener。

 

澳门新濠3559,4.      添加AG到Cluster集群中

具体步骤如下:

a)       在装有节点上设置与Pacemaker集成的SQL Server能源包:

sudo yum install mssql-server-ha

b)      在具备节点上创造Pacemaker用的SQL Server登入顾客:

USE [master]
GO
CREATE LOGIN [pacemakerLogin] with PASSWORD= N'<Your Password>'
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin]

也足以不给sysadmin权限,给上如下丰富的权位就可以:

GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::RHELAG TO pacemakerLogin

c)       在具有节点上,保存SQL Server Login的消息:

echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo '<Your Password>' >> ~/pacemaker-passwd
sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd
sudo chown root:root /var/opt/mssql/secrets/passwd
sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root

d)      在Cluster中Primary节点上创立AG的能源:

sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=RHELAG --master meta notify=true

e)      在Cluster中Primary节点上开创虚构IP能源:

sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=**<10.2.38.202>**

f)        配置Cluster财富的信赖关系和运转顺序:

sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master
sudo pcs constraint order promote ag_cluster-master then start virtualip

g)       最终查看Cluster状态如下:

sudo pcs status

澳门新濠3559 11 

能够用虚构IP(10.2.38.202卡塔尔访谈这么些AG:

澳门新濠3559 12

至此,Red Hat Enterprise Linux上的Cluster管理的SQL Server Always On Availability Group就搭建落成了。

末段附一张配置了STONITH成功的截图:

澳门新濠3559 13

 

Note:

  • 当把AG加入到Cluster中作为一个能源的时候,就不能够再采用TSQL去failover AG了。SQL Server服务端是不明了Cluster的存在的,整个系统是经过Linux Cluster来决定的,在Ubuntu和景逸SUVHEL中用pcs命令,在SLES中用crm命令。
  • 整整陈设完结后,能够选择设想IP去做客整个AG,这时候能够在DNS中手动注册一个Listener名字指向那一个设想IP,就足以算作Windows中的AG Listener使用了。
  • SQL Server 2017 CTP 1.4中新引进了三个sequence_number的定义幸免数据遗失,详细参照他事他说加以考查Understand SQL Server resource agent for pacemaker( )。

参照链接:

  • Configure Always On availability group for SQL Server on Linux
  • Configure RHEL Cluster for SQL Server Availability Group
  • Configure read-scale availability group for SQL Server on Linux
  • Overview of Always On Availability Groups (SQL Server)

 

本文首要介绍了如何布署AG以致哪些减轻配置进程中相见的主题素材,关于AG的拘禁使用上之后再详尽介绍,如有错误大概介绍相当不够,敬请谅解。

 

[原创作品,转发请申明出处,仅供就学钻研之用,如有错误请留言,如喜欢请推荐,感激扶持]

[原文:,来自世代薰薰]

3.      配置一个集群能源微机,如Pacemaker

具体步骤如下:

a)       在颇负的Cluster节点上设置和布署Pacemaker:

先安装防火墙允许相关端口通过(包涵Pacemaker high-availability service、SQL Server Instance和Availability Group Endpoint卡塔 尔(英语:State of Qatar),

sudo ufw allow 2224/tcp
sudo ufw allow 3121/tcp
sudo ufw allow 21064/tcp
sudo ufw allow 5405/udp
sudo ufw allow 1433/tcp # Replace with TDS endpoint
sudo ufw allow 5022/tcp # Replace with DATA_MIRRORING endpoint
sudo ufw reload

或然也可以直接禁止使用防火墙:

sudo ufw disable

在具有节点上设置Pacemaker软件包:

sudo apt-get install pacemaker pcs fence-agents resource-agents

安装Pacemaker和Corosync软件包在安装时创制的暗许客商的密码,需保险拥有节点上密码相通:

sudo passwd hacluster

b)      启用并展开pcsd和Pacemaker服务:

sudo systemctl enable pcsd
sudo systemctl start pcsd
sudo systemctl enable pacemaker

执行进程中大概出现那么些荒谬”pacemaker Default-Start contains no runlevels, aborting.”,能够不常忽视。

c)       创建Cluster并启动:

首先为了防卫有Cluster的残留配置文件影响早先时期搭建,能够先实行如下命令删除已经存在的Cluster:

sudo pcs cluster destroy # On all nodes
sudo systemctl enable pacemaker

下一场创立并布署Cluster:

sudo pcs cluster auth **<nodeName1>** **<nodeName2>**  -u hacluster -p **<password for hacluster>**
sudo pcs cluster setup --name **<clusterName>** **<nodeName1>** **<nodeName2…>**
sudo pcs cluster start --all

那儿恐怕会见世那些荒唐”Job for corosync.service failed because the control process exited with error code. See "systemctl status corosync.service" and "journalctl -xe" for details.”确诊消除措施如下:

  • 依附2-a)中的描述查看是不是有标题;
  • 运用如下命令查看配置文件中的Log路线是哪些。

    vi /etc/corosync/corosync.conf

澳门新濠3559 14

  • 查阅相关文件是不是留存,如荒诞不经,则创设连锁文件,要是上海教室中logfile路线为/var/log/cluster/corosync.log同一时间该公文还不设有,则实践如下命令,

    sudo mkdir /var/log/cluster sudo chmod 777 /var/log/cluster sudo echo >> /var/log/cluster/corosync.log

d)      配置隔开分离:STONITH。近来测量试验蒙受为了简单,暂且不配备了,今后会更新。不荒谬的话分娩情状需求三个fencing agent去隔绝能源,关于帮助音信请参见这里:Support Policies for RHEL High Availability Clusters - Virtualization Platforms。

此外大家这里先进行以下命令禁止使用隔开分离:

sudo pcs property set stonith-enabled=false

e)      设置start-failure-is-fatal为false:

pcs property set start-failure-is-fatal=false

默许值是true,当为true的时候,借使Cluster第一回运维财富退步,在机动Failover操作后,需求顾客手动清空能源运维失利的多寡记录,使用那几个命令重新设置能源配置:

pcs resource cleanup <resourceName>

 

4.      添加AG到Cluster集群中

具体步骤如下:

a)       在享有节点上设置与Pacemaker集成的SQL Server能源包:

sudo apt-get install mssql-server-ha

b)      在有着节点上开创Pacemaker用的SQL Server登陆客商:

USE [master]
GO
CREATE LOGIN [pacemakerLogin] with PASSWORD= N'<Your Password>'
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin]

也得以不给sysadmin权限,给上如下丰富的权杖就可以:

GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::UbuntuAG TO pacemakerLogin

c)       在有着节点上,保存SQL Server Login的音讯:

echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo '<Your Password>' >> ~/pacemaker-passwd
sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd
sudo chown root:root /var/opt/mssql/secrets/passwd
sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root

d)      在Cluster中Primary节点上开创AG的能源:

sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=UbuntuAG --master meta notify=true

e)      在Cluster中Primary节点上创立虚构IP资源:

sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=**<10.2.38.204>**

f)        配置Cluster能源的依附关系和运维顺序:

sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master
sudo pcs constraint order promote ag_cluster-master then start virtualip

g)       最后查看Cluster状态如下:

sudo pcs status

澳门新濠3559 15

能够用设想IP(10.2.38.204卡塔 尔(英语:State of Qatar)访谈那个AG:

澳门新濠3559 16

 

现今,Ubuntu上的Cluster管理的SQL Server Always On Availability Group就搭建完毕了。

 

Note:

  • 当把AG加入到Cluster中作为三个能源的时候,就不可能再利用TSQL去failover AG了。SQL Server服务端是不明了Cluster的留存的,整个系统是通过Linux Cluster来支配的,在Ubuntu和LX570HEL中用pcs命令,在SLES中用crm命令。
  • 意气风发体安排达成后,能够利用虚构IP去做客整个AG,那个时候可以在DNS中手动注册多个Listener名字指向那个编造IP,就足以算作Windows中的AG Listener使用了。
  • SQL Server 2017 CTP 1.4中新引进了叁个sequence_number的概念幸免数据错失,详细参谋Understand SQL Server resource agent for pacemaker()。

参照链接:

  • Configure Always On availability group for SQL Server on Linux
  • Configure Ubuntu Cluster and Availability Group Resource
  • Configure read-scale availability group for SQL Server on Linux
  • Overview of Always On Availability Groups (SQL Server)

 

正文主要介绍了何等布署AG以致怎么着解决配置进度中相遇的难点,关于AG的田间管理使用上未来再详尽介绍,如有错误也许介绍非常不足,敬请谅解。

 

[原创小说,转发请注脚出处,仅供就学商讨之用,如有错误请留言,如喜欢请推荐,多谢协助]

[原文:,来自千古薰薰]

编辑:数据库 本文来源:目前在Linux上可以搭建两种类型的SQL Server

关键词: