7 linux availability-groups sql-server-2017
我正在根据https://docs.microsoft.com/en-us/sql/linux/sql-server-linux为 Linux 配置 Always-on for SQL Server 2017 RC1(14.0.80.90,日期为 2017-7-18)-availability-group-configure-ha。此安装使用 docker 映像,全部位于同一物理主机上。所有步骤都在工作,直到我到达步骤:
CREATE AVAILABILITY GROUP [ag1]
WITH (DB_FAILOVER = ON, CLUSTER_TYPE = EXTERNAL)
FOR REPLICA ON
N'always-onA'
WITH (
ENDPOINT_URL = N'tcp://always-onA:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = EXTERNAL,
SEEDING_MODE = AUTOMATIC
),
N'always-onB'
WITH (
ENDPOINT_URL = N'tcp://always-onB:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = EXTERNAL,
SEEDING_MODE = AUTOMATIC
),
N'always-onC'
WITH(
ENDPOINT_URL = N'tcp://always-onC:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = EXTERNAL,
SEEDING_MODE = AUTOMATIC
);
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
Msg 35237, Level 16, State 1, Line 2
None of the specified replicas for availability group ag1 maps to the instance of SQL Server to which you are connected. Reenter the command, specifying this server instance to host one of the replicas. This replica will be the initial primary replica.
Run Code Online (Sandbox Code Playgroud)
我已经查看了https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-release-notes上的发行说明,以确保没有已知问题,并且应该支持此功能此时。
在每个 docker 容器中,名称“always-onX”解析:
> root@5194403487fe:/# ping always-onA
> PING always-onA (172.17.0.10): 56 data bytes
> 64 bytes from 172.17.0.10: icmp_seq=0 ttl=64 time=0.125 ms
> ^C--- always-onA ping statistics ---
> 1 packets transmitted, 1 packets received, 0% packet loss
> round-trip min/avg/max/stddev = 0.125/0.125/0.125/0.000 ms
> root@5194403487fe:/# ping always-onB
> PING always-onB (172.17.0.11): 56 data bytes
> 64 bytes from 172.17.0.11: icmp_seq=0 ttl=64 time=0.156 ms
> ^C--- always-onB ping statistics ---
> 1 packets transmitted, 1 packets received, 0% packet loss
> round-trip min/avg/max/stddev = 0.156/0.156/0.156/0.000 ms
> root@5194403487fe:/# ping always-onC
> PING always-onC (172.17.0.12): 56 data bytes
> 64 bytes from 172.17.0.12: icmp_seq=0 ttl=64 time=0.308 ms
> ^C--- always-onC ping statistics ---
> 1 packets transmitted, 1 packets received, 0% packet loss
> round-trip min/avg/max/stddev = 0.308/0.308/0.308/0.000 ms
Run Code Online (Sandbox Code Playgroud)
SQL Server 还在每个实例上侦听端口 5022(这对所有实例显示相同):
# netstat -alnp | grep 5022
tcp 0 0 0.0.0.0:5022 0.0.0.0:* LISTEN 9/sqlservr
Run Code Online (Sandbox Code Playgroud)
此外,系统上不存在可能导致混淆的其他 IP:
# ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:0a
inet addr:172.17.0.10 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::42:acff:fe11:a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4058 errors:0 dropped:0 overruns:0 frame:0
TX packets:2016 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2771303 (2.7 MB) TX bytes:241070 (241.0 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:470 errors:0 dropped:0 overruns:0 frame:0
TX packets:470 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1870657 (1.8 MB) TX bytes:1870657 (1.8 MB)
Run Code Online (Sandbox Code Playgroud)
名称 always-onA/B/C 在 docker 映像的主机文件中以及通过 DNS 解析,因此那里也不应该有任何问题:
# nslookup always-onA
Server: 192.168.1.1
Address: 192.168.1.1#53
Name: always-onA
Address: 172.17.0.10
Run Code Online (Sandbox Code Playgroud)
最后,SQL Server 日志显示镜像端点正在侦听连接:
# docker logs always-onA | tail -2
2017-07-23 16:53:27.76 spid56 Server is listening on [ 0.0.0.0 <ipv4> 5022].
2017-07-23 16:53:27.76 spid56 The Database Mirroring endpoint is now listening for connections.
Run Code Online (Sandbox Code Playgroud)
似乎 SQL Server 无法清楚地识别可用性组中的配置节点之一实际上是它本身,因此出现错误,但我看不到任何调试方法。我尝试使用以下名称而不是名称“always-onA”:
总是 127.0.0.1 本地主机 0.0.0.0
错误总是一样的。寻找有关如何解决此问题的任何想法。
归档时间: |
|
查看次数: |
1329 次 |
最近记录: |