服务器芯片镜像测试,模拟镜像服务器磁盘问题的两个测试【转】

我们知道在高安全模式下,在主服务器上提交的事务必须同时在镜像服务器上提交成功,否则该事务无法在主数据库上提交。

f420db400bba6b827bb21ea84c548d56.png

在上面的图中,一个事务在主数据库上提交的步骤包含:

客户端程序将事务发送给主数据库服务器SQLServer

主数据库服务器 SQL Server为这个事务写日志文件

2.1         主数据库服务器将这个事务的日志内容传递给镜像服务器的SQL Server

镜像数据库服务器SQL Server将收到的日志内容写入到日志文件。

镜像服务器回复主服务器写日志的动作完成。

主服务器SQL Server回复客户端程序该事务提交成功。

>2.主数据库服务器SQL Server在检查点时将该事务修改的数据页从内存中写入数据文件。

>3.镜像数据库服务器SQL Server将日志对于的数据页在文件上做变更。

从这样的顺序中,我们提出一个问题,如果镜像服务器的SQL Server在那个时候不能完成步骤3,是否这时主数据库服务器对于的数据库就不能正常的提交事务了呢?本文介绍的两个测试就是模拟日志文件和数据库不可用时候的测试结果

测试一:数据库有多个数据文件和日志文件,分布在不同的磁盘上,在镜像数据库联机的情况下删除一个磁盘,即一个数据文件和日志文件不可能的测试:

1.创建数据库test,添加四个文件。注意为第一个日志文件设置较小的大小并禁止自动增长:

test               C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\test.mdf

test_log           C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\test_log.ldf

test1              E:\test1.ndf

testlog1           E:\testlog1.ldf

2.配置数据库镜像高安全模式,主服务器为SQL1,镜像数据库为SQL2.

3.创建两张测试表test和test1,插入超过1,000,000行数据到test表中.由于第一个日志文件较小且不能自动增长,因此SQL Server开始使用第二个日志文件testlog1.检查数据库镜像的状态:

结果:主数据库显示已principal/sychronized

4.执行下面的脚本,开始事务,这个事务会执行超过10分钟:

begin tran

insert into test  select * from test

insert into test  select * from test

commit

当事务开始执行1分钟以后,暂停数据库镜像1分钟,然后在手工恢复数据库镜像的同步:

结果: 主数据库状态显示principal/synchronizing.

访问test1表,可以返回数据。

6.手工将E盘从镜像数据库服务上拔出:.

结果: 主数据库状态立即变更为 (principal/suspend)。

测试访问主数据库并查询test1表

镜像数据库状态变更为: (mirrored, suspend/restoring)

7.检查事务的执行:

几分钟以后,这个事务显示在主数据库上提交成功。

.

8.检查主数据库和镜像数据库的SQL Server错误日志:

主数据库:

Error: 1453, Severity: 16, State: 1.

‘TCP://LDUA2481460-2.DOM248146.COM:5023‘, the remote mirroring partner for database ‘test‘, encountered error 5159, status 1, severity 24. Database mirroring has been suspended.  Resolve the error on the remote server and resume mirroring, or remove mirroring and re-establish the mirror server instance.

镜像数据库:

‘TCP://LDUA2481460-2.DOM248146.COM:5023‘, the remote mirroring partner for database ‘test‘, encountered error 5159, status 1, severity 24. Database mirroring has been suspended.  Resolve the error on the remote server and resume mirroring, or remove mirroring and re-establish the mirror server instance.

Operating system error 2(The system cannot find the file specified.) on file "E:\test_3.ldf" during RestoreFileHdr.

Test 2:在执行并同步一个大事务的时候将镜像数据库删除:

1.    创建数据库test,包含一个数据文件一个日志文件。

test1            E:\test1.mdf

test1_log        E:\test1_log.ldf

2.配置数据库镜像高安全模式,主服务器为SQL1,镜像数据库为SQL2.

3.创建两张测试表test和test1,插入超过1,000,000行数据到test表中.由于第一个日志文件较小且不能自动增长,因此SQL Server开始使用第二个日志文件testlog1.检查数据库镜像的状态:

结果:主数据库显示已principal/sychronized

4.执行下面的脚本,开始事务,这个事务会执行超过10分钟:

begin tran

insert into test select * from test

insert into test select * from test

commit

5.当事务开始执行1分钟以后,暂停数据库镜像1分钟,然后在手工恢复数据库镜像的同步:

结果: 主数据库状态显示principal/synchronizing.

访问test1表,可以返回数据。

6.手工将E盘从镜像数据库服务上拔出:

结果: 主数据库状态立即变更为 (principal/ disconnected)。

测试访问主数据库并查询test1表

镜像数据库不存在。

7.检查事务的执行:

几分钟以后,这个事务显示在主数据库上提交成功。

8.检查主数据库和镜像数据库的SQL Server错误日志:

主数据库:

1453, Severity: 16, State: 1

‘TCP://LDUA2481460-2.DOM248146.COM:5023‘, the remote mirroring partner for database ‘test1‘, encountered error 5149, status 1, severity 16. Database mirroring has been suspended.  Resolve the error on the remote server and resume mirroring, or remove mirroring and re-establish the mirror server instance..

镜像数据库:

Error: 17053 Severity: 16 State: 1

RestoreFileHdr: Operating system error 2(The system cannot find the file specified.) encountered.

Error: 5159 Severity: 24 State: 1

Operating system error 2(The system cannot find the file specified.) on file "E:\test1_1.ldf" during RestoreFileHdr.

Error: 823 Severity: 24 State: 3.

The operating system returned error 21(The device is not ready.) to SQL Server during a write at offset 0x00000000012000 in file ‘E:\test1.mdf‘. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe system-level error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information see SQL Server Books Online.

Error: 1454 Severity: 16 State: 1.

While acting as a mirroring partner for database ‘test1‘ server instance ‘LDUA2481460-1\MSSQLSERVER1‘ encountered error 823 status 3 severity 24. Database mirroring will be suspended.  Try to resolve the error and resume mirroring.

测试结果:

主数据库在这两种情况下依然可以访问并且成功提交事务

转自:http://blogs.msdn.com/b/apgcdsd/archive/2012/03/09/10280123.aspx

### 实现服务器整机双机热备配置 #### 配置概述 为了确保业务连续性和高可用性,在Ubuntu 22.04环境中实现服务器整机的双机热备配置至关重要。这涉及到硬件冗余设计以及软件层面的心跳检测和资源接管机制。 #### 硬件准备 对于目标环境中的每台服务器,建议采用相同的硬件规格以简化管理和维护工作。具体来说: - CPU:选用性能一致的处理器型号,如Intel Xeon E7系列或多核AMD EPYC等高性能芯片[^2]。 - 内存容量应相匹配,推荐至少配备64 GB RAM来满足大多数应用场景下的需求。 - 存储方面可以考虑使用RAID阵列提高读写速度与数据安全性;同时为两台机器配置相同大小及类型的磁盘设备以便于镜像同步。 - 网络接口数量不少于四个千兆以太网端口用于内部通讯,并额外安装光纤通道(HBA)卡支持SAN/NAS存储连接。 #### 软件部署 基于Linux平台搭建集群服务框架,Heartbeat或Pacemaker是比较常见的开源解决方案之一。以下是详细的实施步骤: 1. **安装依赖包** 在所有节点上执行命令更新系统并安装必要的组件: ```bash sudo apt update && sudo apt upgrade -y sudo apt install pacemaker corosync pcs resource-agents -y ``` 2. **初始化Cluster Configuration System (CCS)** 使用`pcs cluster setup`指令定义集群名称及其成员列表,例如命名为`hacluster`并将主机A、B加入其中: ```bash sudo pcs cluster auth nodeA nodeB -u hacluster --name hacluster sudo pcs cluster start --all sudo pcs cluster enable --all ``` 3. **配置STONITH(Shoot The Other Node In The Head)策略** STONITH是一种防止脑裂现象的安全措施,当一台服务器发生故障无法正常关闭时,另一台会通过电源管理手段强制重启它。这里假设已存在外部Fence装置,则只需指定相应的参数即可激活此功能: ```bash sudo pcs stonith create fence_ipmilan ipmi hostname=<target_node> pcmk_host_list=nodeA,nodeB \ ipaddr=<ip_address_of_target_node> login=root passwd=secret lanplus=true interface=lan ``` 4. **设定资源和服务约束条件** 接下来要规划哪些应用程序实例应该由哪一方负责运行,比如Web Server、Database Engine等关键进程都可作为独立对象纳入监管范畴内。利用`pcs resource`子命令添加各类虚拟IP地址、文件系统挂载点或是自定义脚本动作至现有架构之中: ```bash sudo pcs property set no-quorum-policy=ignore sudo pcs resource create Virtual_IP ocf:heartbeat:IPaddr2 ip=192.168.x.y cidr_netmask=24 op monitor interval=30s sudo pcs constraint colocation add Virtual_IP with Master <your_service_name> sudo pcs constraint order promote <your_service_name> then start Virtual_IP ``` 5. **验证整体稳定性** 经过上述调整之后应当进行全面测试模拟各种可能发生的异常状况观察自动切换流程是否顺畅无误。可以通过手动停止主控单元上的特定服务触发备用方接替作业的功能来进行检验。 #### 日常运维注意事项 除了构建初期的技术选型外,后期还需要持续关注以下几个方面的表现情况: - 定期审查日志记录查找潜在隐患; - 对比两端之间的差异及时修复不一致之处; - 根据实际负载动态调整资源配置比例优化效率; - 建立完善的应急预案处理突发事故影响范围最小化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值