当前位置: 首页 > news >正文

CRM部署Always on 后 CRM报无法更新数据库,数据库只读,且读写分离不正常

CRM部署Always on 后 CRM报无法更新数据库,数据库只读,读写分离不正常

      • 问题描述
      • 背景信息
      • 问题原因
      • 解决方案

问题描述

CRM部署Always on 后 CRM报无法更新数据库,数据库只读
读写分离不正常,出现错乱链接。

背景信息

1.2个节点配置SQL server AG(DB01,DB02)
2.错误信息:
Unable to update database ‘CRMAPIDB’ because the database is read-only
Unable to update database ‘CRM_MSCRM’ because the database is read-only
3.连接字符串:connecttion string :Data Source=SQLHA;Initial Catalog=CRM_MSCRM;Integrated Security=SSPI

问题原因

应用和SQL的4台服务器都为Azure VM,检查AG侦听器的负载均衡设置,发现负载均衡器的运行状况探测设置端口为1433,与SQL server的端口重复。并且负载均衡规则的浮动IP 并未勾选。

解决方案

1.负载均衡器的运行状况探测重新设置为59999,并运在SQL任意节点中运行以下Powershell。

$ClusterNetworkName = “” # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name.
$IPResourceName = “” # The IP address resource name.
KaTeX parse error: Expected 'EOF', got '#' at position 29: … = "<n.n.n.n>" #̲ The IP address…ListenerProbePort =

Import-Module FailoverClusters

Get-ClusterResource KaTeX parse error: Expected '}', got 'EOF' at end of input: …e @{"Address"="ListenerILBIP";“ProbePort”= L i s t e n e r P r o b e P o r t ; " S u b n e t M a s k " = " 255.255.255.255 " ; " N e t w o r k " = " ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"=" ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="ClusterNetworkName";“EnableDhcp”=0}

在这里插入图片描述

2.应用指定ReadOnly的时候,连接就连到SQL高可用组的次要副本,指定ReadWrite的时候连接就连到SQL高可用组的主要副本。
通过以下T-SQL修改只读路由列表,然后测试连接

ALTER AVAILABILITY GROUP [CRMHA]

MODIFY REPLICA ON

N’DB01’ WITH

(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=((‘DB02’),‘DB01’)));

ALTER AVAILABILITY GROUP [CRMHA]

MODIFY REPLICA ON

N’DB02’ WITH

(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=((‘DB01’),‘DB02’)));

3.在Azure Portal中将DB01和DB02的负载均衡器规则的浮动IP开启。
在这里插入图片描述

更多信息
教程:配置 SQL Server Always On 可用性组 - SQL Server on Azure VMs | Microsoft Learn

http://www.lryc.cn/news/63990.html

相关文章:

  • 麓言信息设计创意思维,打开设计师思路
  • POJ3704 括号匹配问题 递归方法
  • leetcode — JavaScript专题(三):完全相等的 JSON 字符串、复合函数、 分组、柯里化、将对象转换为 JSON 字符串
  • OGNL 的表达式
  • JAVA面试中遇到的那些坑,80%的人都种过招
  • 【测试开发】单元测试、基准测试和性能分析(以 Go testing 为例)
  • linux中一条命令查询当前端口的进程,然后拿到进程pid,作为另一条杀死进程的参数
  • 程序员找工作难吗?我用亲身经历来告诉大家
  • 【Web服务】HTTP和DNS重要知识
  • 【C++】-关于类和对象的默认成员函数(中)-拷贝构造函数和赋值运算符重载函数
  • c++11上篇
  • 异构无线传感器网络路由算法研究(Matlab代码实现)
  • MySQL数据库——MySQL TRUNCATE:清空表记录
  • 财报解读:连续三年逆势增长的背后,欧派家居到底靠的是什么?
  • 希望计算机专业同学都知道这些宝藏博主
  • 1694_week1_MIT使用Python编程学习手记1
  • 第二十一章 光源
  • CVPR 2023 超分辨率(super-resolution)方向上接收论文总结
  • Python 基于 Django 的学生成绩管理系统,可视化界面(附源码,教程)
  • 第二弹进阶吴恩达 ChatGPT Prompt 技巧
  • 约瑟夫环问题
  • JavaScript中的异步编程
  • 奥斯汀独家对话|从机构的「拉扯」中成长的美国加密监管
  • PostgreSQL16中pg_dump的LZ4和ZSTD压缩
  • 网络安全基础入门学习路线
  • 错误检测技术:奇偶校验
  • 语义版本控制规范(SemVer)
  • 基于Flask的留言板的设计与实现
  • vmware 详细安装教程
  • Python 爬虫工具