暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

当最简单的主从复制配置来袭,你还不动手搭建测试一下?

TtrOpsStack 2022-05-10
476

官方参考资料

  • 二进制日志记录选项和变量https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_log_bin

一、环境规划

角色IP主机名操作系统mysql版本
master192.168.11.148mysql8-1CentOS7.88.0.26
slave192.168.11.149mysql8-2CentOS7.88.0.26

二、注意事项

  1. 如果是虚拟机环境下(特别是克隆的),那么2台节点的网卡的UUID最好不一样,经测试,在网卡配置文件中去掉UUID参数也不影响使用和网络通信,但如需要添加UUID参数和改变UUID,那么可用以下方法操作:
# 通过uuidgen命令给指定的网卡随机生成UUID
># uuidgen ens32
8f90f93f-d026-43af-b31d-901eaa230356

#
 增加到网卡配置文件中,如增加配置文件ifcfg-ens32
UUID=8f90f93f-d026-43af-b31d-901eaa230356

  1. 两个节点(master、slave)的MySQL Server的UUID不能一样,如果基于二进制包安装的mysql,那么配置文件auto.cnf是datadir目录下,也就是auto.cnf配置文件在数据目录下
  • 笔者本文的环境,两台节点的数据目录都是统一的标准路径,如:/home/mysqlData/auto.cnf
# Master节点
# cat auto.cnf 
[auto]
server-uuid=18359589-30ea-11ec-83d6-0050563fcc17

#
 Slave节点
# cat auto.cnf 
[auto]
server-uuid=18359589-30ea-11ec-83d6-0050563fcc18

  1. Master节点要启用二进制日志从 MySQL 8.0 开始,二进制日志默认启用

三、Master节点配置

  1. 创建同步账户
2. CREATE USER 'repl'@'192.168.11.149' IDENTIFIED BY 'abcdefg123';
CREATE USER 'repl'@'192.168.11.149' IDENTIFIED WITH mysql_native_password BY 'abcdefg123'#推荐的方式,指定密码策略
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.11.149'#授权

  1. 增加锁,阻止数据写入(如果没有客户端连接,可省略此步骤)
FLUSH TABLES WITH READ LOCK;

  1. 查看当前的二进制日志文件名和位置
mysql> SHOW MASTER STATUS;
+---------------------+----------+--------------+------------------+-------------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------------+----------+--------------+------------------+-------------------+
| mysql8-1-bin.000003 |      156 |              |                  |                   |
+---------------------+----------+--------------+------------------+-------------------+
记录这些值。稍后在设置副本时需要它们。它们表示副本应开始处理来自源的新更新的复制坐标。

  1. 释放锁(如果没有客户端连接,可省略此步骤)
UNLOCK TABLES;

  • 建议从库配置好后,再回到主库解锁

四、Slave配置

  1. 要将从库配置与主库通信
CHANGE REPLICATION SOURCE TO SOURCE_HOST='192.168.11.148', SOURCE_USER='repl', SOURCE_PASSWORD='abcdefg123', SOURCE_LOG_FILE='mysql8-1-bin.000003', SOURCE_LOG_POS=451;

  1. 启动复制
START REPLICA;


五、可能的问题

  1. 认证插件类型为'caching_sha2_password'导致从库连接不上主库
1)查看从库的log
2021-10-29T13:45:15.283827Z 8 [ERROR] [MY-010584] [Repl] Slave I/O for channel '': error connecting to master 'repl@192.168.11.148:3306' - retry-time: 60 retries: 24 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. Error_code: MY-002061
MY-002061错误代码:这个错误的意思是,创建的授权账号没有指定密码策略

2)查看主库
mysql> select plugin from mysql.user where user='repl';
+-----------------------+
| plugin                |
+-----------------------+
| caching_sha2_password |
+-----------------------+

3)原因
原来是主库repl的plugin是caching_sha2_password 导致连接不上,修改为mysql_native_password即可解决

4)目前主库上已经创建好了repl账号,因此在主库上修改即可
ALTER USER 'repl'@'192.168.11.149' IDENTIFIED WITH mysql_native_password BY 'abcdefg123';

5)在主库修改后,再次查看
mysql> select plugin from mysql.user where user='repl';
+-----------------------+
| plugin                |
+-----------------------+
| mysql_native_password |
+-----------------------+


六、主库常用管理命令

  1. 在主库查看已连接过来的从库状态
SHOW PROCESSLIST \G;

  1. 在主库上查看从库的基本信息
mysql> SHOW REPLICAS;
+-----------+------+------+-----------+--------------------------------------+
| Server_Id | Host | Port | Source_Id | Replica_UUID                         |
+-----------+------+------+-----------+--------------------------------------+
|         2 |      | 3306 |         1 | 18359589-30ea-11ec-83d6-0050563fcc18 |
+-----------+------+------+-----------+--------------------------------------+

七、从库常用管理命令

  1. 查看从库的复制状态
SHOW REPLICA STATUS\G;

  1. 在从库上执行:slave停止从master复制
STOP REPLICA;

  1. 也可以在从库停止指定的线程
mysql> STOP REPLICA IO_THREAD;
mysql> STOP REPLICA SQL_THREAD;

  1. 从库启动复制
START REPLICA;

  1. 从库启动指定的线程
mysql> START REPLICA IO_THREAD;
mysql> START REPLICA SQL_THREAD;

文章转载自TtrOpsStack,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论