前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GreatSQL MGR 使用 IPv6 连接

GreatSQL MGR 使用 IPv6 连接

作者头像
GreatSQL社区
发布2023-02-22 10:35:14
3560
发布2023-02-22 10:35:14
举报
文章被收录于专栏:GreatSQL出品技术文章

* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。

1.概述

本文基于 GreatSQL 8.0.25-16 ,以下测试均使用此版本。

MySQL支持IPV6,创建用户时主机部分可以指定IPv6的地址,可以通过IPv6连接到MySQL服务器,从MySQL 8.0.14开始,组复制组成员可以在组内使用IPv6地址进行通信。

此次在测试环境中使用IPv6地址进行MGR的部署,分享一下使用IPv6部署MGR时,设置关于MGR参数需注意的地方。

2.查看本机IPv6地址

执行 ip a 在输出内容中查找当前使用的网卡的IPv6地址

代码语言:javascript
复制
shell>  ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:**:**:**:b4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.***.***/20 brd 192.168.***.255 scope global noprefixroute dynamic eth0
       valid_lft 259198sec preferred_lft 259198sec
    inet6 fe80::216:3eff:fed0:bab4/64 scope link 
       valid_lft forever preferred_lft forever

  • inet6 后面的地址就是IPv6的地址。
  • 注意 eth0网卡下的IPv6地址后面有 scope link 表示此地址为本地链路地址,以链路本地地址为源地址或目的地址的IPv6报文不会被路由设备转发到其他链路,因此不能用于部署MGR。

3.配置ipv6静态地址

由于上面的本地链路地址我们不能直接使用,因此我们可以配置一个IPv6的静态地址,每台机器都要配置。

这里我们使用IPv6(ULA,unique local address)唯一本地地址,该地址类似于IPv4中的私网地址,使用FD00:/8这个网段的地址。

代码语言:javascript
复制
shell> vim /etc/sysconfig/network-scripts/ifcfg-eth0
....
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_FAILURE_FATAL=no
IPV6ADDR=fd00::10/8

添加上面的内容到 ifcfg-eth0 文件。

4.重启网络服务

代码语言:javascript
复制
shell> systemctl restart network

5.再次查看本地IPv6地址

代码语言:javascript
复制
shell> ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:**:**:**:b4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.***.***/20 brd 192.168.***.255 scope global noprefixroute dynamic eth0
       valid_lft 259198sec preferred_lft 259198sec
    inet6 fd00::10/8 scope global noprefixroute
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fed0:bab4/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

可以看到配置的IPv6地址已经生效,同样的方式配置其他机器。

6.使用IPv6部署MGR需要注意的地方

这里主要说明一下,使用IPv6部署MGR时,设置关于MGR参数需注意的地方。部署MGR的步骤,我们这里不再重复了,可以参考GreatSQL安装部署MGR集群文档:https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/deep-dive-mgr/deep-dive-mgr-03.md

(1)设置 bind_address 参数

设置bind_address系统变量,以指定实例接受的TCP/IP连接。

代码语言:javascript
复制
[mysqld]
bind_address = *

设置为 * 值(默认值)或 ::,表示允许所有服务器主机同时连接IPv4和IPv6,也可以设置为特定的IP地址列表。

(2)IPv6地址需要用 [] 括起来

在设置参数 group_replication_local_address 和 group_replication_group_seeds 的值时,需要将每个IPv6的地址用 [] 括起来,如下所示:

代码语言:javascript
复制
[mysqld]
group_replication_local_address='[fd00::10]:33061';
group_replication_group_seeds='[fd00::10]:33061,[fd00::20]:33061,[fd00::30]:33061';

(3)手动指定allowlist

由于MGR默认的allowlist范围如下:

代码语言:javascript
复制
IPv4 (as defined in RFC 1918)
10/8 prefix       (10.0.0.0 - 10.255.255.255) - Class A
172.16/12 prefix  (172.16.0.0 - 172.31.255.255) - Class B
192.168/16 prefix (192.168.0.0 - 192.168.255.255) - Class C

IPv6 (as defined in RFC 4193 and RFC 5156)
fc00:/7 prefix    - unique-local addresses
fe80::/10 prefix  - link-local unicast addresses

127.0.0.1 - localhost for IPv4
::1       - localhost for IPv6

我们所设置的IPv6地址不在这个范围,所以需要将这些IPv6的地址加入allowlist,可以将每个IPv6的地址写入,也可以使用 CIDR notation 这种方法表示。

代码语言:javascript
复制
[mysqld]
group_replication_ip_allowlist='fd00::/8';

7.使用IPv6本地主机地址连接

(1)使用管理员账户登录,创建可以在本机通过IPv6回环地址(::1)进行连接的账户

代码语言:javascript
复制
mysql> create user test1@'::1' identified by 'greatsql';

(2)登录test1账户

代码语言:javascript
复制
shell> mysql -utest1 -pgreatsql -h ::1 -P3306

mysql> select user(),current_user();
+-----------+----------------+
| user()    | current_user() |
+-----------+----------------+
| test1@::1 | test1@::1      |
+-----------+----------------+
1 row in set (0.00 sec)

8.使用IPv6远程主机地址连接

(1)使用管理员账户登录,为IPv6地址为 fd00::20 的主机创建可以连接的账户

代码语言:javascript
复制
mysql> create user test2@'fd00::20' identified by 'greatsql';

(2)登录test2账户

代码语言:javascript
复制
shell> mysql -utest2 -pgreatsql -h fd00::20 -P3306

mysql> select user(),current_user();
+----------------+----------------+
| user()         | current_user() |
+----------------+----------------+
| test2@fd00::20 | test2@fd00::20 |
+----------------+----------------+
1 row in set (0.00 sec)

Enjoy GreatSQL :)


《深入浅出MGR》视频课程

戳此小程序即可直达B站

https://www.bilibili.com/medialist/play/1363850082?business=space_collection&business_id=343928&desc=0


文章推荐:


关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

GreatSQL社区官网: https://greatsql.cn/

Gitee: https://gitee.com/GreatSQL/GreatSQL

GitHub: https://github.com/GreatSQL/GreatSQL

Bilibili:

https://space.bilibili.com/1363850082/video

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GreatSQL社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.概述
  • 2.查看本机IPv6地址
  • 3.配置ipv6静态地址
  • 4.重启网络服务
  • 5.再次查看本地IPv6地址
  • 6.使用IPv6部署MGR需要注意的地方
    • (1)设置 bind_address 参数
      • (2)IPv6地址需要用 [] 括起来
        • (3)手动指定allowlist
        • 7.使用IPv6本地主机地址连接
        • 8.使用IPv6远程主机地址连接
        相关产品与服务
        云数据库 SQL Server
        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档