[AlwaysOn Availability Groups]排查:AG配置

时间:2023-04-30 09:50:56

排查AG配置

本文主要用来帮助排查在AG配置时出现的问题,包括,AG功能被禁用,账号配置不正确,数据库镜像endpoint不存在,endpoint不能访问。

Section

Description

AlwaysOn Availability Groups Is Not Enabled

如果实例没有启动AG特性,实例就不支持任何AG相关的功能

Accounts

在SQL Server在运行的情况下,正确的账号配置

Endpoints

诊断关于实例的镜像endpoint问题。

System name

Endpoint URL中可用来替换实例的系统名

Network access

关于每个持有AG副本的实例,都必须要有可以通过TCP访问其他实例的权限

Endpoint Access (SQL Server Error 1418)

SQL Server错误信息1418

Join Database Fails (SQL Server Error 35250)

关于join数据库出现的问题,因为primary副本不是活动的

Read-Only Routing is Not Working Correctly

 

Related Tasks

 

Related Content

 

1. AG不可用

可以通过联机文档:启用和禁用 AlwaysOn 可用性组 (SQL Server) 查看如何启动关闭AG

2. 账号

SQL Server运行的必须有正确的配置:

1.权限配置是否正确?

a.如果运行在相同域账号,正确的用户login都会保存在2个master数据库中。这个配置简单也是被推荐的配置。

b.如果2个实例使用不同的账号,每个账号必须在远程master库被正确的创建,被授予CONNECT权限,通过镜像endpoint连接远程实例。

2.如果以build-in账号运行,比如Local System,Local Service,或者其他用户,必须创建一个证书,用于endpoint的验证。如果你的服务是使用域账号的,可以给每个服务器启动账号授予CONNECT权限,或者使用证书验证。

3. Endpoint

Endpoint必须正确配置

1.保证每个要有副本的实例都有镜像endpoint。为了确定是否存在镜像endpoint,可以使用,sys.database_mirroring_endpoints 查看,更多信息可以查看:Create a Database Mirroring Endpoint for Windows Authentication (Transact-SQL) or Allow a Database Mirroring Endpoint to Use Certificates for Outbound Connections (Transact-SQL).

2.检查端口号,可以查看DMV sys.tcp_endpoint查看端口号。

3.对于AG的安装问题,很难解释,建议你检查每个实例是否监听正确的端口。具体看:MSSQLSERVER_1418.

4.为了保证endpoint是否启动,可以使用以下语句:

SELECT state_desc FROM sys.database_mirroring_endpoints

如果未启动,可以使用语句:

ALTER ENDPOINT Endpoint_Mirroring

STATE = STARTED

AS TCP (LISTENER_PORT = <port_number>)

FOR database_mirroring(ROLE = ALL);

GO

5.保证login有CONNECT权限。可以使用以下语句查看所有endpoint的连接权限

SELECT 'Metadata Check';

SELECT EP.name, SP.STATE,

CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id))

AS GRANTOR,

SP.TYPE AS PERMISSION,

CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id))

AS GRANTEE

FROM sys.server_permissions SP , sys.endpoints EP

WHERE SP.major_id = EP.endpoint_id

ORDER BY Permission,grantor, grantee;

GO

4. 系统名

对于endpoint URL中的系统名,可以使用任意的名字来识别系统。服务地址也可以是系统名,全域名或者ip地址。具体看:Specify the Endpoint URL When Adding or Modifying an Availability Replica (SQL Server).

5. 网络访问

每个实例必须可以通过TCP访问其他的实例。这个很重要特别是在不同的域,相互不可信的情况下。

6. EndPoint访问,1418错误

1418错误表示endpoint URL不能访问,或者不存在。建议你检查地址重新执行命令,具体看:MSSQLSERVER_1418

7. 加入数据库失败,35250错误

导致加入数据库错误的原因,是因为primary副本不活动,解决方法:

1.检查防火墙设置,是否允许endpoint访问

2.账号是否有权限访问endpoint。

8. 只读路由不能正确工作

只读路由不能工作检查一下信息:

On…

Action

Comments

Link

Current primary replica

保证AG Listener是活动的

To verify whether the listener is online:

SELECT * FROM sys.dm_tcp_listener_states;

To restart an offline listener:

ALTER AVAILABILITY GROUP myAG RESTART LISTENER 'myAG_Listener';

sys.dm_tcp_listener_states (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)

Current primary replica

保证READ_ONLY_ROUTING_LIST 中只有一个可定secondary副本。

  • To identify readable secondary replicas:

sys.availability_replicas (secondary_role_allow_connections_desc column)

  • To view a read-only routing list:

sys.availability_read_only_routing_lists

  • To change a read-only routing list:

ALTER AVAILABILITY GROUP

sys.availability_replicas (Transact-SQL)

sys.availability_read_only_routing_lists (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)

Every replica in the read_only_routing_list

保证windows不会堵塞READ_ONLY_ROUTING_URL的端口

Configure a Windows Firewall for Database Engine Access

Every replica in the read_only_routing_list

在SQL Server配置管理,验证:

1.SQL Server可以被远程连接

2.启动了TCP/IP连接

3.IP地址配置正确

View or Change Server Properties (SQL Server)

Configure a Server to Listen on a Specific TCP Port (SQL Server Configuration Manager)

Every replica in the read_only_routing_list

保证READ_ONLY_ROUTING_URL(TCP://system-address:port)配置是正确的

Calculating read_only_routing_url for AlwaysOn

sys.availability_replicas (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)

Client system

保证客户端驱动支持只读路由。

AlwaysOn Client Connectivity (SQL Server)

9. Related Tasks

·         Creation and Configuration of Availability Groups (SQL Server)

·         Create a Database Mirroring Endpoint for Windows Authentication (Transact-SQL)

·         Specify the Endpoint URL When Adding or Modifying an Availability Replica (SQL Server)

·         Manually Prepare a Secondary Database for an Availability Group (SQL Server)

·         Troubleshoot a Failed Add-File Operation (AlwaysOn Availability Groups)

·         Management of Logins and Jobs for the Databases of an Availability Group (SQL Server)

·         Manage Metadata When Making a Database Available on Another Server Instance (SQL Server)

10. Related Content

·         View Events and Logs for a Failover Cluster

·         Get-ClusterLog Failover Cluster Cmdlet

·         SQL Server AlwaysOn Team Blog: The official SQL Server AlwaysOn Team Blog