[202209]mysql8.0 双主集群搭建 亲测可用
[202209]mysql8.0 双主集群搭建 亲测可用
我两个 mysql 都是用 Docker 部署,所以配置文件和你们会有些不同,但问题不大,可以自己上网找对应的路径。
- 主机信息
- A:
192.168.1.10
- B:
192.168.1.11
- A:
第一步:配置文件
主机:/etc/my.cnf
- 我们要改的只有两个地方:
- 其他地方直接复制就可以了。
server-id
:每台服务器都要有一个不同的IDauto_increment_offset
:同上
改完需要重启Mysq。改完需要重启Mysq。改完需要重启Mysq。
#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation = READ-COMMITTED
# ------------------集群--------------
# 每台服务器ID为集群内唯一, 例如1,2,3
# A
server-id = 1
# B
#server-id = 2
# 开启binlog,数据同步的关键
log-bin=on
# 步进值auto_imcrement 。一般有n台主mysql就填n
auto_increment_increment=2
# 自增起始位置,一般填写第n台主机mysql.此时为第一台主
auto_increment_offset=1
#auto_increment_offset=2
#忽略mysql库,可以不填写
#binlog-ignore=mysql
#忽略information_schema库,一般不填写
#binlog-ignore=infomation_schema
#指定同步的数据库,不填写则默认所有的数据库
#replicate-do-db=test_db
# 从库连接
default_authentication_plugin=mysql_native_password
# 将复制事件写入binlog,一台服务器既做主库又做从库此选项必须要开启
log-slave-updates = true
# 主从复制模式开启
gtid_mode=on
enforce_gtid_consistency=1
第二步:创建用户
单独创建一个给 主从 用的用户,毕竟你总不能用root吧?安全隐患太大了
直接复制就可以了,如果报错就分开执行,不要一起执行
CREATE USER share@'%' IDENTIFIED BY '123456';
#分配权限
GRANT REPLICATION SLAVE ON *.* to share@'%';
第三步:配置节点
我们先在两边都执行一次:reset master;
然后在执行:
- 这里我们要改的只有三个地方
- SOURCE_HOST:对方主机IP
- SOURCE_USER:用户
- SOURCE_PASSWORD:密码
A节点
change master to SOURCE_HOST='192.168.1.11',SOURCE_PORT=3306,SOURCE_USER='share',SOURCE_PASSWORD='123456',SOURCE_AUTO_POSITION=1;
START REPLICA;
B节点
change master to SOURCE_HOST='192.168.1.10',SOURCE_PORT=3306,SOURCE_USER='share',SOURCE_PASSWORD='123456',SOURCE_AUTO_POSITION=1;
START REPLICA;
最后
我们先在两边都执行一次:reset master;
查看是否成功
SHOW REPLICA STATUS;
找到:Last_IO_Error
字段
这样就算成功了。
error connecting to master 'share@192.168.1.10:3306' - retry-time: 60 retries: 1 message: Can't connect to MySQL server on '192.168.1.10:3306' (111)
踩坑:
- 重置节点
- 如果提示:
The server is not configured as slave; fix in config file or with CHANGE MASTER TO
。 时执行
- 如果提示:
reset master;
- UUID相同
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; thes
查看文件 mysql/data/auto.cnf
,就是他的UUID和其他相同了,随便改个数字和字母就可以了。