一周碎碎念,2021.11.7,两个MGR集群间还可以构建传统的主从复制通道吗

叨叨最近遇到的一些事以及见闻、思考。

1. GreatSQL编译环境Dockerfile更新了

用于构建GreatSQL编译环境的Dockerfile发现几个小瑕疵,于是更新了下。

利用Docker环境来编译GreatSQL显然更方便,一次构建即可多次使用,非常推荐这种方式。有兴趣的 戳此查看最新Dockerfile

另外,这是自制Docker镜像参考

欢迎留言提建议呀。

2. MGR分享直播

最近两周,分别尝试了在工作日白天和晚上直播分享MGR相关内容,测试下来发现放在晚上似乎人会更多些,可能白天大家还有手头的工作要处理,所以参加的人略少些。

相比回看录制好的视频,大家似乎更喜欢参加直播,可能录播视频给人一种反正现在不看以后还可以再看的心态,而直播则是过了就没了,所以似乎更愿意参加。

以后打算继续继在晚上做直播分享了,预计周二、四的晚上吧,我会尽量提前预告。

若有更好的建议也请留言。

3. 为什么 INSERT … SELECT 会报告锁等待超时错误

这是因为在默认的RR(repeatable read)隔离级别下,INSERT INTO t … SELECT FROM s 事务中,对要读取的源 s表 所涉及的数据要加上 next-key lock 。因此如果此时有其他事务也正对这些数据加锁的话,是有可能导致行锁没释放,报告锁等待超时。

此时可以通过查看 performance_schema.data_lock_waits 来确认行锁等待情况。

4. MGR集群从节点可以2个以上吗

这是来自一位群友的问题,看来还是有不少群友对MGR没什么概念。虽然是基础问题,也值得回答一下。

目前在整个MGR集群中最多可支持9个节点。采用 single-primary 模式(group_replication_single_primary_mode = ON)时,则最多可以有8个SECONDARY节点。而如果采用 multi-primary 模式(group_replication_single_primary_mode = OFF)的话,则都是 PRIMARY 节点,不再有 SECONDARY 节点了。

5. 两个MGR集群间还可以构建传统的主从复制通道吗

答案是肯定的,可以。

在MGR集群里,只有PRIMARY节点才能作为传统主从复制的SLAVE节点,集群里的 SECONDARY 节点是不能成为传统主从复制的 SLAVE节点的(想想也能理解,否则就会造成MGR里主从节点数据不一致了)。

群友补充提问:MGR1的secondary -> MGR2的primary行不行?只能主到主?还是主到主,从到主都行?这里说的只是从节点必须是主节点吧?主节点有要求吗?

下图是在MGR里构建传统主从复制通道的详细要求:

群友再次补充提问:可以通过rooter去连接主节点吗,或者当发生了主节点切换怎么办?

首先,一个mysqlrouter实例只能连接一个MGR集群,是不能连接到多个MGR集群的。

其次,两个MGR集群间构建主从复制通道后,如果担心主节点切换时复制通道会断掉的话,可以利用MySQL 8.0.22后新增的 Async Replication Auto failover 特性,指定多个复制通道的 MASTER源,利用该特性可以应对主节点 切换的场景,详情见这两篇文章:

最后,这些内容在《实战MGR》 免费课程里已有详细介绍,欢迎加入学习。

6. 睡前看会书

最近利用晚上睡前的时间,陆陆续续把刘慈欣的几个科幻短片给看完了,印象深刻的主要有《朝闻道》、《山》、《带上她的眼睛》、《中国太阳》等几篇。刘慈欣的脑洞真的是很大,如果能把这些都拍成电影的话,想必也会挺卖座的。

发现睡前看会书这种方式还不错,晚上睡眠质量似乎也会更好些,可能是看书让人更容易静下来吧,之前的《南渡北归》也是这样陆续看完的,睡眠不好的同学可以试试这个方法。

This post has already been read 2676 times!

叶金荣

Oracle MySQL ACE Director,腾讯云TVP成员

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

Time limit is exhausted. Please reload CAPTCHA.