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 TO
  MASTER_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 TO
  MASTER_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.0


docker exec -it mysql /bin/bash

 mysql -u root -p
SHOW SLAVE STATUS\G

START SLAVE;
STOP SLAVE IO_THREAD;

CHANGE MASTER TO
  MASTER_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 TO
  MASTER_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.log

GRANT 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数据库。也可以使用数据库工具来完成工具的配置;来导入数据库。然后测试;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值