有经验的大良网站建设,深圳市宝安区住房和建设局网站,网站为什么百度搜不到,图片渐隐 网站头部flash文章目录 一、前言二、SQL Server 主从同步的原理介绍三、具体的搭建过程3.1 准备工作3.1.1 卸载旧版本#xff08;如果有#xff0c;可选#xff0c;非必须#xff09;3.1.2 安装 Docker3.1.3 验证本地 Docker 是否安装成功 3.2 创建 Docker 网络3.3 创建主从节点的 SQL S… 文章目录 一、前言二、SQL Server 主从同步的原理介绍三、具体的搭建过程3.1 准备工作3.1.1 卸载旧版本如果有可选非必须3.1.2 安装 Docker3.1.3 验证本地 Docker 是否安装成功 3.2 创建 Docker 网络3.3 创建主从节点的 SQL Server 容器3.4 创建主从同步端点3.4.1 配置主节点的同步端点3.4.2 配置从节点的同步端点 3.5 创建主从同步数据库3.5.1 创建主节点同步数据库3.5.1 创建从节点同步数据库 3.6 开启主从同步3.7 验证同步状态 五、总结 一、前言
在当今信息化的时代数据的安全性和稳定性显得尤为重要。数据库是许多企业和组织存储和管理数据的核心因此如何保证数据库的高可用性和数据的同步性是一个非常关键的问题。而基于主从同步的技术可以有效地解决这个问题。本文将介绍如何在 Docker 环境下搭建 MS SQL Server 的主从同步帮助读者了解主从同步的原理和实现方式进而提高数据的可靠性和稳定性。
二、SQL Server 主从同步的原理介绍
主从同步是一种常用的技术用于在多个 SQL Server 实例之间保持数据同步。在主从同步中一个 SQL Server 实例被用作数据的源而另一个或多个 SQL Server 实例则作为数据的接收端。当主节点上的数据发生更改时这些更改将被捕获并保存到一个事务日志中。从节点会定期检查主节点的事务日志并将主节点上的更改应用到自己的数据库中从而保持两个数据库之间的数据同步。
三、具体的搭建过程
3.1 准备工作
在开始安装之前需要确保CentOS上已经安装了Docker和Docker Compose。可以通过以下命令来进行安装
3.1.1 卸载旧版本如果有可选非必须
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine3.1.2 安装 Docker
按照下列步骤依次进行安装中间过程直接略过
# 1.安装需要的软件包
sudo yum install -y yum-utils
# 2.设置docker的stable存储库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 3.安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 4.启动docker服务
sudo systemctl start docker
# 5.设置开机自启动docker服务
sudo systemctl enable docker挖坑002后续会写关于docker文章对于docker image 逻辑原理进行讲解 问答区有人提问该问题https://ask.csdn.net/questions/7923009/54161100 3.1.3 验证本地 Docker 是否安装成功
sudo docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
...3.2 创建 Docker 网络
在进行主从搭建之前需要先创建一个 Docker 网络。这个网络用于连接所有的 SQL Server 容器。 在创建网络之前需要先确认已经启动了 Docker
sudo systemctl start docker然后可以使用以下命令来创建一个名为sync-net的 Docker 网络
[roothecs-bluetata ~]# docker network create -d bridge sync-net
538c142757e91c0b798ce0e45dc02b6038f00adaf37cfe3b09659dea8c950c93其中参数 -d 指定了网络的类型bridge 指的是桥接网络sync-net 指的是新创建的网络的名称。 3.3 创建主从节点的 SQL Server 容器
创建 SQL Server 容器之前需要先准备 SQL Server 的 Docker 镜像。可以通过以下命令来获取 SQL Server 2019 的 Docker 镜像
docker pull mcr.microsoft.com/mssql/server:2019-latest获取到 Docker 镜像之后就可以创建 SQL Server 容器了。可以通过以下命令来创建2个 SQL Server 容器分别命名为 sqlserver-master、和 sqlserver-slave并加入所创建的 Docker 网络中。
docker run --name sqlserver-master --hostname sqlserver-master --network sync-net \-p 1433:1433 \-e ACCEPT_EULAY \-e SA_PASSWORDPssw0rd01 \-e MSSQL_AGENT_ENABLEDTrue \-e MSSQL_PIDDeveloper \-d mcr.microsoft.com/mssql/server:2019-latestdocker run --name sqlserver-slave --hostname sqlserver-slave --network sync-net \-p 1434:1433 \-e ACCEPT_EULAY \-e SA_PASSWORDPssw0rd02 \-e MSSQL_AGENT_ENABLEDTrue \-e MSSQL_PIDDeveloper \-d mcr.microsoft.com/mssql/server:2019-latest针对上述命令相关参数的解释
参数含义-e ‘ACCEPT_EULAY’此参数用于接受微软的许可证协议表明你已经同意了微软的许可协议。-e ‘SA_PASSWORDPssw0rd01’此参数用于设置 SQL Server 的 SA 账户密码你应该使用强密码。-p 1433:1433此参数用于暴露容器中的 1433 端口使外部可以访问到 SQL Server 实例。–name sqlserver-master此参数用于为 SQL Server 设置容器的名称。–hostname sqlserver-master此参数用于为 SQL Server 设置主机名。–network sync-net此参数用于将 SQL Server 容器连接到指定的网络中。-e “MSSQL_AGENT_ENABLEDTrue”此参数用于启用 SQL Server 代理以便可以自动执行定期任务。-e “MSSQL_PIDDeveloper”此参数用于指定 SQL Server 容器的产品ID这里指定的是 Developer 版本。-d mcr.microsoft.com/mssql/server:2019-latest此参数用于指定 SQL Server 容器的镜像这里使用的是最新的 SQL Server 2019 镜像。 请确确保在创建上述 Docker 的过程中没有错误。 如果在创建过程中出现端口占用或者名称占用等错误可以查看相应容器选择性的删除容器后重新创建相关命令
docker ps -a
docker rm d3d3a4712b5f
docker stop d3d3a4712b5f3.4 创建主从同步端点
3.4.1 配置主节点的同步端点
进入 SQL Server 主节点容器并创建主从同步端点
docker exec -it sqlserver-master /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P Pssw0rd01 \
-Q CREATE ENDPOINT endpoint_mirroring STATE STARTED AS TCP (LISTENER_PORT7022) FOR DATABASE_MIRRORING (ROLEPARTNER)3.4.2 配置从节点的同步端点
进入 SQL Server 从节点容器并创建主从同步端点
docker exec -it sqlserver-slave /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P Pssw0rd02 \
-Q CREATE ENDPOINT endpoint_mirroring STATE STARTED AS TCP (LISTENER_PORT7022) FOR DATABASE_MIRRORING (ROLEPARTNER)3.5 创建主从同步数据库
3.5.1 创建主节点同步数据库
回到 SQL Server 主节点容器并创建主从同步数据库
docker exec -it sqlserver-master /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P Pssw0rd01 \
-Q CREATE DATABASE mydb \
-Q BACKUP DATABASE mydb TO DISK/var/opt/mssql/data/mydb.bak \
-Q RESTORE DATABASE mydb WITH NORECOVERY \
-Q ALTER DATABASE mydb SET PARTNER TCP://sqlserver-slave:70223.5.1 创建从节点同步数据库
回到 SQL Server 从节点容器并创建主从同步数据库
docker exec -it sqlserver-slave /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P Pssw0rd02
docker exec -it sqlserver-slave /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P Pssw0rd02 \
-Q CREATE DATABASE mydb \
-Q RESTORE DATABASE mydb FROM DISK/var/opt/mssql/data/mydb.bak WITH NORECOVERY \
-Q ALTER DATABASE mydb SET PARTNER TCP://sqlserver-master:70223.6 开启主从同步
回到 SQL Server 主节点容器并启动主从同步
docker exec -it sqlserver-master /opt/mssql-tools/bin/sqlcmd
-S localhost -U SA -P Pssw0rd01 \
-Q ALTER DATABASE mydb SET PARTNER SAFETY OFF \
-Q ALTER DATABASE mydb SET PARTNER SAFETY ON \3.7 验证同步状态
回到 SQL Server 主节点容器并查看主从同步状态
docker exec -it sqlserver-master /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P Pssw0rd01 \
-Q SELECT database_id, synchronization_state_desc FROM sys.database_mirroring WHERE database_id DB_ID(mydb)可以看到以下的输出结果
database_id synchronization_state_desc
----------- ------------------------
5 SYNCHRONIZED这表示主从同步已经成功地建立并且 mydb 数据库已经在主从节点之间同步。 注意这里我这里使用了开发版的 SQL Server 镜像如果你在生产环境中使用 SQL Server请使用适当版本的镜像并根据需要进行调整。 五、总结
本文介绍了在 Docker 环境下搭建 MS SQL Server 的主从同步并演示了如何进行配置和管理。通过本文的学习你可以了解主从同步技术的实现原理和具体操作方法并为提高数据可靠性和稳定性提供了一种有效的解决方案。同时也需要认真考虑主从同步的一些限制和要求并根据实际情况进行配置和管理。