Red Hat Enterprise Linux上为SQL Server配置共享磁盘集群

栏目: 数据库 · SQL Server · 发布时间: 6年前

内容简介:Red Hat Enterprise Linux上为SQL Server配置共享磁盘集群

下面一步一步介绍一下如何在Red Hat Enterprise Linux系统上为SQL Server配置共享磁盘集群(Shared Disk Cluster)及其相关使用(仅供测试学习之用,基础篇)

一.      创建共享磁盘和 Cluster

微软官方配置文档: https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-shared-disk-cluster-red-hat-7-configure

Linux Cluster结构图如下:

Red Hat Enterprise Linux上为SQL Server配置共享磁盘集群

具体配置步骤如下:

1.            安装及配置SQL Server

a)      先安装两个SQL Server作为Cluster的两个节点,请参考博文“ Red Hat Enterprise Linux上安装部署SQL Server 2017 http://www.linuxidc.com/Linux/2017-06/144837.htm ”(如果需要更多节点则安装更多);

b)      在Secondary端停掉并禁用SQL Server服务:

sudo systemctl stop mssql-server
sudo systemctl disable mssql-server

c)      备份同步Server Master Key(由于 Linux 中SQL Server是以本地用户mssql运行的,因此不同的节点无法识别别的节点的认证,所以需要备份同步加密key从Primary端到其它节点上以便于能够成功解密Server Master Key):

  • Secondary端备份原来的machine-key:
sudo su
cd /var/opt/mssql/secrets
mv machine-key machine-key.original.bak
  • Primary端把machine-key复制到Secondary端:
sudo su
cd /var/opt/mssql/secrets/
scp machine-key root@**<Secondary Node IP Address>**:/var/opt/mssql/secrets/
  • Secondary端检查是否成功备份过来并且添加相关权限:
ls

Red Hat Enterprise Linux上为SQL Server配置共享磁盘集群

chown mssql:mssql machine-key

d)      在Primary端为Pacemaker程序创建一个 SQL 登录用户,并给足足够的权限运行sp_server_diagnostics。

先开启SQL Server服务:

sudo systemctl start mssql-server

连接到SQL Server上:

sqlcmd -S localhost -U sa -P **<Your Password>**

执行以下SQL语句创建用户并赋予权限:

USE [master] CREATE LOGIN [<loginName>] with PASSWORD= N'<loginPassword>'
GRANT VIEW SERVER STATE TO <loginName>
GO

退出sqlcmd:

exit

e)      在Primary端停掉并禁用SQL Server服务:

sudo systemctl stop mssql-server
sudo systemctl disable mssql-server

f)        配置每一个节点的hosts文件,保证互相能够识别。

sudo vi /etc/hosts

下图是配置完成后的例子:

Red Hat Enterprise Linux上为SQL Server配置共享磁盘集群

2.            配置共享磁盘以及转移数据库文件

有很多种提供共享磁盘的解决方案。下面简单介绍配置NFS的共享磁盘。推荐使用Kerberos去配置NFS以提高安全性: https://www.certdepot.net/rhel7-use-kerberos-control-access-nfs-network-shares/ 。这里仅介绍最简单的方式用于简单测试和学习。

用NFS配置共享磁盘

找另一个RHEL系统机器作为NFS Server,执行如下命令(由于仅是测试研究,这里选用Cluster的一个节点作为NFS Server也可):

a)      安装NFS软件包:

sudo yum -y install nfs-utils

b)      启用并开启rpcbind服务:

sudo systemctl enable rpcbind && systemctl start rpcbind

c)      启用并开启nfs-server服务:

sudo systemctl enable nfs-server && systemctl start nfs-server

d)      编辑/etc/exports文件去设置想要共享的存储路径,注意每一个共享是一行:

vi /etc/exports

设置完的例子如下:

Red Hat Enterprise Linux上为SQL Server配置共享磁盘集群

e)      导出共享并确定是否成功:

sudo exportfs -rav
sudo showmount -e

Red Hat Enterprise Linux上为SQL Server配置共享磁盘集群

f)        在SELinux中添加异常设置:

sudo setsebool -P nfs_export_all_rw 1

g)      防火墙中允许相关服务通信:

sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload

为Cluster所有节点设置NFS

在所有的Cluster节点机器上执行如下命令,确保能访问NFS共享磁盘:

a)      安装NFS软件包:

sudo yum -y install nfs-utils

b)      防火墙中允许相关服务通信:

sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload

c)      确认是否可以看到NFS共享:

sudo showmount -e **<IP OF NFS SERVER>**

更多关于NFS的文档资源参考以下站点:

设置数据库文件路径为共享磁盘

转移数据库文件到共享磁盘上:

a)      在Primary节点上先把数据库文件保存到临时路径/var/opt/mssql/tmp下,

su mssql
mkdir /var/opt/mssql/tmp
cp /var/opt/mssql/data/* /var/opt/mssql/tmp
rm /var/opt/mssql/data/*
exit

b)      在所有节点上编辑/etc/fstab文件,保证重启系统后自动挂载NFS共享磁盘:

<IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intr

例子如下:

Red Hat Enterprise Linux上为SQL Server配置共享磁盘集群

Note(摘自微软):

Red Hat Enterprise Linux上为SQL Server配置共享磁盘集群

关于如何配置Fencing,请参考 How To Configure VMware fencing using fence_vmware_soap in RHEL High Availability Add On(RHEL Pacemaker中配置STONITH)

c)      挂载刚刚配置的NFS存储:

sudo mount -a

可以执行mount命令检测是否已经成功挂载:

Red Hat Enterprise Linux上为SQL Server配置共享磁盘集群

d)      在Primary节点上把临时路径下的数据库文件复制到新挂载的路径下,并保证mssql这个本地用户有��写权限:

chown mssql /var/opt/mssql/data
chgrp mssql /var/opt/mssql/data
su mssql
cp /var/opt/mssql/tmp/* /var/opt/mssql/data/
rm /var/opt/mssql/tmp/*
exit

e)      在Primary节点上开启SQL Server服务验证是否成功,这时SQL Server已经使用NFS服务器上的共享磁盘了:

sudo systemctl start mssql-server
sudo systemctl status mssql-server
sudo systemctl stop mssql-server

f)        在其它非Primary节点上依次开启SQL Server服务验证是否成功。

Note:目前所有节点的SQL Server都使用这个NFS服务器共享磁盘了,根据微软推荐,为了防止冲突,需要使用一个File System Cluster资源来防止一个共享路径被挂载多次。

更多详情见请继续阅读下一页的精彩内容 http://www.linuxidc.com/Linux/2017-06/144838p2.htm


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Erlang趣学指南

Erlang趣学指南

邓辉、孙鸣 / 人民邮电出版社 / 2016-9-7 / 79.00元

这是一本讲解Erlang编程语言的入门指南,内容通俗易懂,插图生动幽默,示例短小清晰,结构安排合理。书中从Erlang的基础知识讲起,融汇所有的基本概念和语法。内容涉及模块、函数、类型、递归、错误和异常、常用数据结构、并行编程、多处理、OTP、事件处理,以及所有Erlang的重要特性和强大功能。一起来看看 《Erlang趣学指南》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码