配置过程本应是一帆风顺,但是因为MySQL版本不同花费了一下午和一晚上的时间。在寻找解决办法的过程中有很多博客带给我巨大的帮助。先把这几篇博客粘贴到下面。
解决了 主高到从低 连接报错的问题:(这里的高指的是高版本,即8.0,低版本指的是5.7)
博客原文是纯英文的,链接如下:
https://www.percona.com/blog/2018/04/10/migrating-database-charsets-to-utf8mb4/
他的两篇翻译转载链接如下,两篇各有优劣,我是互相结合着看最后解决了问题:
https://opensource.actionsky.com/20190906-mysql/
https://www.modb.pro/db/148289
好!粘完了博客链接正式开始解决问题。
Error_code: 2003
全部的报错信息如下:
[ERROR] Slave I/O for channel '': error connecting to master 'mslave@192.168.236.129:3306' - retry-time: 60 retries: 1, Error_code: 2003
这日志里的报错信息只是告诉你连接不到主数据库,完全没有头绪。经过我多方排查发现出现错误2003
的原因是主服务器的3306端口没有打开。
Error_code: 2059
[ERROR] Slave I/O for channel '': error connecting to master 'mslave@192.168.236.129:3306' - retry-time: 60 retries: 1, Error_code: 2003
出现错误2059
的原因是,MySQL不支持:
8.0主 --> 5.7从
的主从复制。
按照上面博客的步骤设置就能支持从高版本到低版本主从复制。我觉得最重要的步骤是创建复制用户时使用的语句。
使用mysql_native_password
密码策略创建用户:
CREATE USER 'mslave2'@'%' IDENTIFIED WITH mysql_native_password BY 'repli$cat';
GRANT REPLICATION SLAVE ON *.* TO 'mslave2'@'%';
我当时使用这个用户就成功连接了。