作者 | JiekeXu
来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)
如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA)
大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来看看因修改 MySQL 复制账号密码导致主从复制异常,欢迎点击上方蓝字“JiekeXu DBA之路”关注我的公众号,标星或置顶,更多干货第一时间到达!
书接上回,通过Linux 环境搭建 MySQL8.0.28 主从同步环境,在同一台机器上通过不同的端口来区分实例,搭建 MySQL 三节点的一主两从架构的测试环境。由于搭建环境时的用户密码过于简单,安全扫描出来弱口令,需要整改,则当时就使用如下命令修改了 root 和 rep 用户的密码。
alter user root@'%' identified by 'MySQL8.0';
alter user rep@'%' identified by 'MySQL8.0';
select User,Host,plugin ,max_user_connections,max_connections
from mysql.user;
修改完密码后,MySQL 实例一直没有重启,复制也是正常的,直到这个月初的机房断电主机关机,MySQL 实例重新启动后,主从复制出现了中断。
--分别启动三个 MySQL 实例
nohup mysqld_safe --defaults-file=/mysql/conf/my3306.cnf --user=mysql &
nohup mysqld_safe --defaults-file=/mysql/conf/my3307.cnf --user=mysql &
nohup mysqld_safe --defaults-file=/mysql/conf/my3308.cnf --user=mysql &
发现问题
登录到从节点查看从库复制状态,发现“MY-001045”错误。
mysql -h192.168.77.86 -uroot -pMySQL8.0 -P 3308 -S /mysql/data/mysql3308/socket/mysql3308.sock
show slave status\G
show replica status\G
查看实例 3308 端口的 log 如下,rep 复制用户无法连接到主节点。这时候才想起来之前修改过 root 和 rep 复制用户的密码,修改复制用户的密码导致主从复制中断,从节点无法连接到主库。从库 IO 线程状态为 “Replica_IO_Running: Connecting”。
2023-10-13T14:51:57.414780+08:00 5 [ERROR] [MY-010584] [Repl] Slave I/O for channel '': error connecting to master 'rep@192.168.77.86:3306' - retry-time: 60 retries: 13 message: Access denied for user 'rep'@'192.168.77.86' (using password: YES), Error_code: MY-001045
解决问题
登录到从节点,停止复制,使用 change master to 命令修改复制用户密码。其他从节点依法炮制。
stop replica;
change master to master_password='MySQL8.0';
start replica;
show replica status\G
注意:“change master to”命令也即将过期,从 MySQL 8.0.23 开始是“CHANGE REPLICATION SOURCE TO”。“master_password” 命令也被 “SOURCE_PASSWORD” 所替代。
--附录:CHANGE REPLICATION SOURCE TO 完整命令
CHANGE REPLICATION SOURCE TO option [, option] ... [ channel_option ]
option: {
SOURCE_BIND = 'interface_name'
| SOURCE_HOST = 'host_name'
| SOURCE_USER = 'user_name'
| SOURCE_PASSWORD = 'password'
| SOURCE_PORT = port_num
| PRIVILEGE_CHECKS_USER = {NULL | 'account'}
| REQUIRE_ROW_FORMAT = {0|1}
| REQUIRE_TABLE_PRIMARY_KEY_CHECK = {STREAM | ON | OFF | GENERATE}
| ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = {OFF | LOCAL | uuid}
| SOURCE_LOG_FILE = 'source_log_name'
| SOURCE_LOG_POS = source_log_pos
| SOURCE_AUTO_POSITION = {0|1}
| RELAY_LOG_FILE = 'relay_log_name'
| RELAY_LOG_POS = relay_log_pos
| SOURCE_HEARTBEAT_PERIOD = interval
| SOURCE_CONNECT_RETRY = interval
| SOURCE_RETRY_COUNT = count
| SOURCE_CONNECTION_AUTO_FAILOVER = {0|1}
| SOURCE_DELAY = interval
| SOURCE_COMPRESSION_ALGORITHMS = 'algorithm[,algorithm][,algorithm]'
| SOURCE_ZSTD_COMPRESSION_LEVEL = level
| SOURCE_SSL = {0|1}
| SOURCE_SSL_CA = 'ca_file_name'
| SOURCE_SSL_CAPATH = 'ca_directory_name'
| SOURCE_SSL_CERT = 'cert_file_name'
| SOURCE_SSL_CRL = 'crl_file_name'
| SOURCE_SSL_CRLPATH = 'crl_directory_name'
| SOURCE_SSL_KEY = 'key_file_name'
| SOURCE_SSL_CIPHER = 'cipher_list'
| SOURCE_SSL_VERIFY_SERVER_CERT = {0|1}
| SOURCE_TLS_VERSION = 'protocol_list'
| SOURCE_TLS_CIPHERSUITES = 'ciphersuite_list'
| SOURCE_PUBLIC_KEY_PATH = 'key_file_name'
| GET_SOURCE_PUBLIC_KEY = {0|1}
| NETWORK_NAMESPACE = 'namespace'
| IGNORE_SERVER_IDS = (server_id_list),
| GTID_ONLY = {0|1}
}
channel_option:
FOR CHANNEL channel
server_id_list:
[server_id [, server_id] ... ]
参考链接
https://dev.mysql.com/doc/refman/8.0/en/change-master-to.html
https://dev.mysql.com/doc/refman/8.1/en/change-replication-source-to.html
全文完,希望可以帮到正在阅读的你,如果觉得此文对你有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~
另外公众号和社群发起了一个 1024 抽奖送书活动,明天早上 10:24 分开奖,6 本 Oracle、MySQL技术书籍直接包邮到家,还有作者亲笔签名,大约还有 10 个小时的时间就开奖了,目前看每个抽奖大概七八十人的样子,概率挺大的,可在本微信公众号后台回复【送书】赶快参与吧,还要想增加中奖概率及详细规则介绍可查看上篇文章:说几件事【很重要,必看】(福利多多)。
欢迎关注我公众号【JiekeXu DBA之路】,第一时间一起学习新知识!以下三个地址可以找到我,其他地址均属于盗版侵权爬取我的文章,而且代码格式、图片等均有错乱,不方便阅读,欢迎来我公众号或者墨天轮地址关注我,第一时间收获最新消息。
——————————————————————————
公众号:JiekeXu DBA之路
CSDN :https://blog.csdn.net/JiekeXu
墨天轮:https://www.modb.pro/u/4347
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————
分享几个数据库备份脚本
Oracle 表碎片检查及整理方案
OGG|Oracle GoldenGate 基础2022 年公众号历史文章合集整理
Oracle 19c RAC 遇到的几个问题
OGG|Oracle 数据迁移后比对一致性
OGG|Oracle GoldenGate 微服务架构
Oracle 查询表空间使用率超慢问题一则
Oracle 11g升级到19c需要关注的几个问题
国产数据库|TiDB 5.4 单机快速安装初体验
Oracle ADG 备库停启维护流程及增量恢复
Linux 环境搭建 MySQL8.0.28 主从同步环境