设为首页 加入收藏

TOP

Ubuntu上配置SQL Server Always On Availability Group(一)
2017-06-22 10:23:33 】 浏览:1624
Tags:Ubuntu 配置 SQL Server Always Availability Group

目前在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时可以指定CLUSTER TYPE:


其中Linux可以使用EXTERNAL或NONE,我理解的是EXTENRAL功能就是类似目前SQL Server中的AG,NONE则是一种新类型,没有Cluster功能的不支持高可用性和灾难恢复的AG。主要作用是分担主服务器的负载,支持多个只读备用节点,同时这种类型也支持Windows上使用,是SQL Server 2017新支持的功能。更多详细的信息请参考这里:Read-scale availability groups


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


Note:同一个AG的多个节点必须都是实体机或者虚拟机,当都是虚拟机的时候也必须都在同一个虚拟化平台上,原因是由于Linux需要用fencing agent去隔离节点上的资源,不同平台fencing agent类型是不同的,详细参考Policies for Guest Clusters


在Linux上,必须先创建AG才能把它当成一个资源加到Cluster中进行管理。下面介绍一下如何创建AG。


a)      准备工作:


更新每一个节点服务器的机器名符合这个要求:15个字符或者更少;网络上是唯一的。如果不符合要求可以使用如下命令更改机器名:


使用如下命令修改Hosts文件以保证同一个AG中多个节点可以互相通信


这里一定注意:修改后可以用ping命令尝试ping hostname,必须返回对应的真正IP地址才行,也就是Hosts文件中不能包含类似hostname和127.0.0.1的对应记录,配置后如下,注意其中”127.0.1.1  Ubuntu1604Bob2”这行被我注释了,否则开启Cluster 服务的时候可能会有问题:


 


如果不注释,ping hostname的返回结果是127.0.1.1,注释后返回的是真正IP:



需要返回真正IP后期配置才好使。


另外可以用这个命令查看当前server的IP:


b)      在所有节点SQL Server上开启Always On Availability Group功能并重启服务:


c)      在所有节点上执行SQL语句开启AlwaysOn_health事件会话以方便诊断问题:


更多关于Event Session信息可以参考:AlwaysOn Extended Events


d)      创建db mirroring endpoint使用的用户:


e)      创建证书:


Linux上的SQL Server Mirroring Endpoint是用证书去认证通信的。下面的命令创建一个master key和证书并备份。连接到Primary端SQL Server并执行如下命令:


f)        把证书的备份复制到所有的非Primary节点上,同时使用它创建证书:


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


Note:如果遇到Permission denied,可以使用sz和rz命令通过主机来传输文件。


再在目的端Secondary节点上执行如下命令给用户mssql添加足够的权限:


最后在目的端Secondary节点上利用备份的证书创建证书:


g)      在所有节点上创建database mirroring endpoint:


Note:这里Listener IP暂时不能修改,只能是0.0.0.0,目前有BUG,未来可能会修复。


h)      在Primary节点上创建AG:


Note:执行过程中可能会出现这个警告”Attempt to access non-existent or uninitialized availability group with ID”,暂时忽略即可,未来版本可能会修复。


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



i)        把其它Secondary节点加入到AG中:


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



j)        测试:创建一个DB并加入到刚刚创建的AG中:


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



这时,一个简单的AG就创建好了,但是它不能提供高可用性和灾难恢复功能,必须配置一个Cluster技术才能好使。如果上述h)和i)步骤的TSQL更换成以下两个,则创建出来的就是read-scale类型的AG。


把Secondary节点加到AG中命令:


Note:这时的AG是没有Listener的,目前版本也暂时无法创建Listener。


 


具体步骤如下:


a)      在所有的Cluster节点上安装和配置Pacemaker:


先设置防火墙允许相关端口通过(包括Pacemaker high-availability service、SQL Server Instance和Availability Group Endpoint),


或者也可以直接禁用防火墙:


在所有节点上安装Pacemaker软件包:


设置Pacemaker和Corosync软件包在安装时创建的默认用???的密码,需保证所有节点上密码一样:


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


执行过程中可能出现这个错误”pacemaker Default-Start contains no runlevels, aborting.”,可以暂时忽略。


c)      创建Cluster并启动:


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


然后创建并配置Cluster:


这时可能会出现这个错误”Job for corosync.service failed because the control process exited with error code. See "systemctl status corosync.service" and "journalctl -xe" for details.”诊断解决方法如下:



d)      配置隔离:STONITH。目前测试环境为了简单,暂时不配置了,以后会更新。正常来说生产环境需要一个fencing agent去隔离资源,关于支持信息请参考这里:Suppor

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MSSQL-Scripter,一个新的生成T-S.. 下一篇RHEL Pacemaker中配置STONITH

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目