欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > Mysql80主从复制搭建;遇到问题 Slave_IO_Running: Connecting和Slave_SQL_Running以及解决过程

Mysql80主从复制搭建;遇到问题 Slave_IO_Running: Connecting和Slave_SQL_Running以及解决过程

2024/10/24 21:34:46 来源:https://blog.csdn.net/qq_21561833/article/details/140893197  浏览:    关键词:Mysql80主从复制搭建;遇到问题 Slave_IO_Running: Connecting和Slave_SQL_Running以及解决过程

总结主要步骤

1.配置一个提供复制的账号;
创建用户

CREATE USER 'replication'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
FLUSH PRIVILEGES;

2.修改配置 选择模式
主库配置;
windows的得话是my.ini文件
默认这个目录下
C:\ProgramData\MySQL\MySQL Server 8.0
添加如下配置 server-id log_bin 指定一下位置
binlog_format 指定主从复制模式 。当然本文不涉及GTID这样的东西;就是简单的复制.

bind-address = 0.0.0.0
server-id = 1
log_bin = D:/mysqlbin/bin/mysql-bin.log
binlog_format = ROW
expire_logs_days = 7
max_binlog_size = 100M

更改完配置是需要重启mysql的;
windows的话是需要
net stop MySQL
net start MySQL
linux 我使用的docker的话
是 docker restart mysql;

3.找一个从库
配置复制源

CHANGE MASTER TOMASTER_HOST='192.168.56.1',  -- 主库的IP地址MASTER_USER='replication',  -- 复制用户MASTER_PASSWORD='1942951600',  -- 复制用户的密码MASTER_LOG_FILE='mysql-bin.000001',  -- 从主库SHOW MASTER STATUS得到的文件名MASTER_LOG_POS=1808;  -- 从主库SHOW MASTER STATUS得到的位置CHANGE MASTER TOMASTER_HOST='192.168.56.1',  -- 主库的IP地址MASTER_USER='replication',  -- 复制用户MASTER_PASSWORD='1942951600',  -- 复制用户的密码MASTER_LOG_FILE='mysql-bin.000001',  -- 从主库SHOW MASTER STATUS得到的文件名MASTER_LOG_POS=1808;  -- 从主库SHOW MASTER STATUS得到的位置start slave;
就搞定了;

MASTER_LOG_FILE 这个里面的文件是自己配置里面的文件通过SHOW MASTER STATUS; 来查看位置。

一些检查状态的sql

SHOW MASTER STATUS;
SHOW SLAVE STATUS\G
  1. dump数据 然后开始测试

遇到的问题

问题1.Slave_SQL_Running
密码策略问题

这个两个数据库密码策略使用不同:一个是密码策略问题。可以通过下面sql语句来查看;
有mysql_native_password 和caching_sha2_password ;我们使用mysql_native_password 这种

修改主库

修改用户的认证插件选项,禁用安全连接要求:
sql
ALTER USER 'replication'@'%' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
FLUSH PRIVILEGES;更改主库认证密码方式
ALTER USER 'replication'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;### mysql数据库查看权限
use mysql;
select host, user, plugin,  authentication_string, password_expired from user;
serve-id不同

这个需要去配置里面修改 server-id = 2 主从的id不能一样。所以后面删除了mysql容器又来了一遍
重新来一遍的步骤
0. 清楚原有数据卷里面的一些数据

  1. ’停止slave
  2. 停止mysql容器
  3. .卸载mysql容器
  4. 重启mysql容器
  5. 重新配置主从节点
  6. 检查配置状态

docker stop  
docker rm>   SHOW VARIABLES LIKE 'server_id';docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0docker exec -it mysql /bin/bashmysql -u root -p
SHOW SLAVE STATUS\GSTART SLAVE;
STOP SLAVE IO_THREAD;CHANGE MASTER TOMASTER_HOST='192.168.1.8',  -- 主库的IP地址MASTER_USER='root',  -- 复制用户MASTER_PASSWORD='1942951600',  -- 复制用户的密码MASTER_LOG_FILE='mysql-bin.000001',  -- 从主库SHOW MASTER STATUS得到的文件名MASTER_LOG_POS=1808;  -- 从主库SHOW MASTER STATUS得到的位置
CHANGE MASTER TOMASTER_HOST='192.168.56.1',  -- 主库的IP地址MASTER_USER='replication',  -- 复制用户MASTER_PASSWORD='1942951600',  -- 复制用户的密码MASTER_LOG_FILE='mysql-bin.000001',  -- 从主库SHOW MASTER STATUS得到的文件名MASTER_LOG_POS=1808;  -- 从主库SHOW MASTER STATUS得到的位置SHOW SLAVE STATUS\G
START SLAVE;查看中继日志位置;
[mysqld]
server-id = 2
relay-log = /var/lib/mysql/mysql-relay-bin### 其他命令语句
更改配置后重启mysql;
docker restart mysql查看从库mysql 日志;
tail -n 50 /var/log/mysql/mysqld.logGRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.8' IDENTIFIED BY '1942951600';reset slave;

问题二:

Slave_IO_Running: Connecting
主要我的是从库是docker上面来做的;可能有网段的问题;
排查过程:检查linux服务器是否能ping通我本机。添加bind-address配置。

监听一下

sudo yum install telnet
使用 telnet 测试 MySQL 端口
一旦安装了 telnet 客户端,你可以使用它来测试 MySQL 服务的端口是否开放。

telnet 192.168.1.8 3306
使用这个可以来

在主库 添加 如下代码块 方便虚拟机连接;

安装检测网络工具

yum search ifconfig
yum install net-tools
ifconfig

在这里插入图片描述

relay-log = /var/lib/mysql/mysql-relay-bin 我默认的中继日志配置在这个位置;

处理docker的网络问题 修改docker的网段 (应该和这个没关系)

重启docker
修改
/etc/docker/daemon.json,加入一行 “bip”: “192.168.56.1/24”,,然后再次查看 ifconfig,已经变成了 192 网段了

重启 docker 服务
sudo systemctl restart docker

做完处理后在虚拟机的docker里面也可以 通过mysql -u replication -p -h 192.168.56.1
这样的方式来去访问到

后来是改了从库连接主库的ip

以太网适配器 VirtualBox Host-Only Network: 使用的这个ipv4

成功截图

在这里插入图片描述
这两个标位yes即可

创建数据库

CREATE DATABASE yan
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

可以使用dump命令来备份mysql数据库。也可以使用数据库工具来完成工具的配置;来导入数据库。然后测试;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com