AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 276225
Accepted
RonJohn
RonJohn
Asked: 2020-09-29 16:02:13 +0800 CST2020-09-29 16:02:13 +0800 CST 2020-09-29 16:02:13 +0800 CST

Ouvinte do Grupo de Disponibilidade e software cliente antigo

  • 772

Temos um multisegment AG Listener nomeado SQLAGL01que aponta para estes dois endereços: 10.143.162.32 (o servidor primário) 10.140.165.32 (servidor DR)

Como o software de aplicativo de terceiros (o que significa que não podemos corrigi-lo e não, não podemos migrar para outra coisa) usa drivers antigos que não suportam MultiSubnetFailover=True, estamos vendo problemas em que os relatórios falham na metade do tempo porque SQLAGL01resolve o endereço DR 10.140.165.32.

Seguindo os documentos da Microsoft , definimos RegisterAllProvidersIP=0e reiniciamos o cluster. No entanto, SQLAGL01ainda resolve para o endereço DR metade do tempo.

No Gerenciador de Cluster de Failover, o nó proprietário do Ouvinte AG é o servidor primário e o endereço DR está offline . (Isso é normal?)

Aqui está uma captura de tela da função do cluster: insira a descrição da imagem aqui EDIT: RegisterAllProvidersIPvalor agregado.

PS C:\windows\system32> get-clusterresource "Cluster Name" | Get-ClusterParameter RegisterAllProvidersIP

Object       Name                   Value Type
------       ----                   ----- ----
Cluster Name RegisterAllProvidersIP 0     UInt32

EDIT 2: Adicionados valores de recursos de cluster AG. Não parece haver um RegisterAllProvidersIPrecurso para o AG Listener. insira a descrição da imagem aqui

EDIT 3: Adicionado o valor real do recurso Listener.

PS C:\windows\system32> get-clusterresource KYHIXSQLAGL01_KYHIXSQLAGL01 | Get-ClusterParameter RegisterAllProvidersIP

Object                      Name                   Value Type
------                      ----                   ----- ----
KYHIXSQLAGL01_KYHIXSQLAGL01 RegisterAllProvidersIP 1     UInt32
availability-groups sql-server-2016
  • 2 2 respostas
  • 208 Views

2 respostas

  • Voted
  1. Best Answer
    AMtwo
    2020-09-30T08:05:41+08:002020-09-30T08:05:41+08:00

    Na sua pergunta, você incluiu a seguinte verificação para validar que definiu RegisterAllProvidersIPcomo false:

    PS C:\> get-clusterresource "Cluster Name" | Get-ClusterParameter RegisterAllProvidersIP
    
    Object       Name                   Value Type
    ------       ----                   ----- ----
    Cluster Name RegisterAllProvidersIP 0     UInt32
    

    Se você usou o nome do cluster , então você definiu o RegisterAllProvidersIPparâmetro no objeto errado.

    Existem vários objetos com nomes semelhantes em sua captura de tela:

    • O cluster do Windows:WC01
    • O Grupo de Disponibilidade:AG01
    • O Ouvinte AG:AGListener01

    Para validar como a configuração é definida, você deve usar o nome do ouvinte e não o nome do cluster ou do AG:

    PS C:\> Get-ClusterResource AGListener01 | Get-ClusterParameter RegisterAllProvidersIP
    

    Ou, para fazer isso um pouco mais passo a passo, você pode fazer Get-ClusterResourcee verá algo assim:

    Name                         State   OwnerGroup     ResourceType
    ----                         -----   ----------     ------------
    10.10.10.199                 Online  Cluster Group  IP Address
    Cluster IP Address           Online  Cluster Group  IP Address
    Cluster Name                 Online  Cluster Group  Network Name
    AG01                         Online  AG01           SQL Server Availability Group
    AG01_10.10.20.138            Offline AG01           IP Address
    AGListener01                 Online  AG01           Network Name
    File Share Witness           Online  Cluster Group  File Share Witness
    IP Address 10.10.10.138      Online  AG01           IP Address
    

    De todas essas coisas, nos preocupamos apenas com os objetos que pertencem ao OwnerGroup para o AG. Podemos filtrar um pouco mais com Get-ClusterResource | Where OwnerGroup -eq AG01:

    Name                        State   OwnerGroup   ResourceType
    ----                        -----   ----------   ------------
    AG01                        Online  AG01         SQL Server Availability Group
    AG01_10.10.20.138           Offline AG01         IP Address
    AGListener01                Online  AG01         Network Name
    IP Address 10.10.10.138     Online  AG01         IP Address
    

    Esses 4 itens representam os recursos que compõem meu AG: o próprio AG, o ouvinte (listado como "Nome da rede") e os dois endereços IP, cada um em sub-redes diferentes.

    O item que eu quero verificar para o RegisterAllProvidersIPparâmetro é o recurso listener (Network name): Get-ClusterResource AGListener01 | Get-ClusterParametervai me dar a lista completa de parâmetros no objeto Listener:

    Object        Name                   Value                            Type
    ------        ----                   -----                            ----
    AGListener01  Name                   AGListener01                     String
    AGListener01  DnsName                AGListener01                     String
    AGListener01  Aliases                                                 String
    AGListener01  RemapPipeNames         1                                UInt32
    AGListener01  HostRecordTTL          1200                             UInt32
    AGListener01  RegisterAllProvidersIP 1                                UInt32
    AGListener01  PublishPTRRecords      0                                UInt32
    AGListener01  ResourceData           {1, 0, 0, 0...}                  ByteArray
    AGListener01  StatusNetBIOS          0                                UInt32
    AGListener01  StatusDNS              0                                UInt32
    AGListener01  StatusKerberos         0                                UInt32
    AGListener01  CreatingDC             \\dc01.am2.co                    String
    AGListener01  LastDNSUpdateTime      9/29/2020 3:57:12 PM             DateTime
    AGListener01  ObjectGUID             abc1234def567890ab12cd3456ef7890 String
    AGListener01  DnsSuffix              am2.co                           String
    AGListener01  ADAware                1                                UInt32
    

    E eu posso obter o parâmetro específico pedindo explicitamente por eleGet-ClusterResource AGListener01 | Get-ClusterParameter RegisterAllProvidersIP

    Object        Name                   Value  Type
    ------        ----                   -----  ----
    AGListener01  RegisterAllProvidersIP 1      UInt32
    

    Se não estiver definido como 0, você precisará usar o bloco de código descrito nos documentos e ter certeza de que está usando o nome do ouvinte e não o nome do cluster . O exemplo também recomenda definir o TTL (escolher um número exato é com você, embora os documentos sugiram 300 segundos). Observe que off-line e on-line o Listener é necessário para que as novas configurações sejam selecionadas pelo nome DNS:

    Get-ClusterResource AGListener01 | Set-ClusterParameter RegisterAllProvidersIP 0   
    Get-ClusterResource AGListener01 | Set-ClusterParameter HostRecordTTL 300  
    Stop-ClusterResource AGListener01 
    Start-ClusterResource AGListener01 
    

    Depois que isso for feito (e o TTL antigo expirou), você poderá ver que o Lister tem apenas um único endereço IP configurado:

    Resolve-DnsName AGListener01 
    
    • 2
  2. KASQLDBA
    2020-09-29T17:13:52+08:002020-09-29T17:13:52+08:00

    Acredito que você esteja na configuração de cluster de failover de várias sub-redes. Isso é provavelmente você tem primário em um site e DR em outro.

    Se for esse o caso, até onde eu saiba, outro IP de sub-rede sempre será exibido offline.

    Também não tenho certeza se você tentou colocar manualmente online e obter esse erro. Se você puder atualizar sua pergunta com a configuração de várias sub-redes, caso seja ou não, provavelmente gostaria de colar mais detalhes do que está fazendo quando estiver recebendo esse erro durante o failover

    Vou atualizar minha resposta com base nisso

    • 0

relate perguntas

  • AlwaysOn AG, DTC com failover

  • Bancos de dados fora do grupo de disponibilidade AlwaysOn travados no status RESTORING [fechado]

  • Os bloqueios em bancos de dados secundários somente leitura se propagam para o banco de dados de leitura/gravação

  • Nó preferencial para leitura no Grupo de Disponibilidade em uma configuração multisite

  • Como determinar se a configuração de alta disponibilidade está funcionando corretamente

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve