背景
最近遇到一个客户需求,客户的生产环境有大量的SQL Server数据库(大概120套),客户的诉求是需要把生产环境的Windows系统转为Linux系统,转为Linux系统之后需要沿用原来的数据库高可用方案。把数据库转到Linux系统比较容易,因为从SQL Server 2017开始就支持Linux系统,但是要沿用原来的数据库高可用方案就有点难度。了解到客户之前的生产环境所用的数据库高可用方案是数据库镜像,数据库版本是SQL Server 2019,因为客户的生产环境高可用性要求不算太高,所以无论是数据库版本还是数据库镜像高可用方案都完全满足要求。
于是本人建议客户把SQL Server迁移到Linux系统之后,依然使用之前的数据库镜像这种数据库高可用方案。数据库镜像这种技术本身搭建非常简单,不需要借助任何第三方组件,搭建步骤跟Windows系统上的一模一样,而且从SQL Server 2005版本开始就已经引入数据库镜像,历经9个大版本迭代,稳定性久经考验。
在SQL Server 2016版本引入了多线程并行redo,它可以
(1)显著减少镜像集群和AlwaysOn可用性组集群的数据同步延迟。
(2)数据库的启动速度显著加快,数据库启动需要经历redo阶段。
(3)加快故障转移的速度
很多用户会嫌弃Linux系统上的AlwaysOn可用性组搭建麻烦,因为需要借助Pacemaker与Corosync等第三方组件,搭建过程有一定的难度。对于生产环境上的数据库高可用性和性能要求不是很高的情况下,完全可以使用数据库镜像来替代AlwaysOn可用性组。
不知道如何在Linux平台上部署SQL Server可以查看下面的文章
一步步教你在CentOS 7.9上安装SQL Server 2019
搭建步骤
下面进行演示如何在Linux系统上搭建SQL Server数据库镜像,因为需要数据库自动故障转移能力,所以需要准备三台机器,第三台机器作为见证服务器,这个要求跟Windows系统上的部署方式是一模一样的。前提假设用户已经在Linux系统上安装好SQL Server数据库镜像。
环境要求
适用的数据库版本:SQL Server 2017 到 SQL Server 2022
适用的操作系统版本:CentOS 7.X 到 CentOS 9.X(其他Linux发行版也可以,Ubuntu或者SUSE)
Linux系统下的数据库目录结构如下:
/data/mssql/1433/database
/data/mssql/1433/dbbackup
/data/mssql/1433/dump
/data/mssql/1433/tempdb
IP |
主机名 |
|
---|---|---|
主库 |
192.168.22.122 |
wwwmssql122 |
镜像库 |
192.168.22.124 |
wwwmssql124 |
见证 |
192.168.22.128 |
wwwmssql128 |