mysql8.0.36主从复制(读写分离)配置教程

本文详细介绍了如何在Ubuntu系统中关闭防火墙,配置MySQL主库和从库,包括设置server-id、读写权限,以及解决Slave_IO_Running:No和ERROR3021故障。
摘要由CSDN通过智能技术生成

1、关闭防火墙
 

使用命令行关闭防火墙

在Ubuntu系统中,可以使用以下命令关闭防火墙:

sudo ufw disable

执行该命令后,系统会提示是否要关闭防火墙,确认后即可关闭防火墙。

查看防火墙状态

使用以下命令可以查看防火墙当前的状态:

sudo ufw status

如果防火墙已经关闭,则会显示如下信息:

Status: inactive

如果防火墙处于开启状态,则会显示如下信息:

Status: active

当前演示IP:

主库IP:192.168.91.152

从库IP:192.168.91.153

2、配置主库(192.168.91.152)

修改配置文件

vim /etc/my.cnf

 或

vim /etc/mysql/my.cnf

[mysqld]
#id要确保在局域网环境里是唯一的
server-id=1
#1代表只读,0代表可读写
read-only=0
#忽略的数据,指不需要同步的数据库,如需要请把以下的#注释符号删掉即可
#lbinlog-ignore-db=mysql
#指定同步的数据库,如需要请把以下的#注释符号删掉即可
#binlog-do-db=db_001

修改后,重启mysql服务

service mysqld restart

service mysql restart

进入mysql:

mysql -u root -p

创建用户:

-- 创建用户并设置密码
CREATE USER 'test123'@'%' IDENTIFIED WITH mysql_native_password BY 'Root@123456';

-- 赋予用户全部权限
GRANT ALL PRIVILEGES ON *.* TO 'test123'@'%';

-- 刷新权限
FLUSH PRIVILEGES;

 显示当前主服务器(Master)二进制日志的状态信息

show master status;

记录一下File值和Position值

File值:binlog.000006

Position值:157

3、配置从库(192.168.91.153)

修改配置文件

vim /etc/my.cnf

 或

vim /etc/mysql/my.cnf
[mysqld]
#id要确保在局域网环境里是唯一的
server-id=2
#1代表只读,0代表可读写
read-only=1
#忽略的数据,指不需要同步的数据库,如需要请把以下的#注释符号删掉即可
#lbinlog-ignore-db=mysql
#指定同步的数据库,如需要请把以下的#注释符号删掉即可
#binlog-do-db=db_001

 修改后,重启mysql服务

service mysqld restart

service mysql restart

 进入mysql:

mysql -u root -p

修改复制源信息,指定新的主服务器

 mysql命令行输入:

CHANGE REPLICATION SOURCE TO 
    SOURCE_HOST='192.168.91.152',
    SOURCE_USER='test123',
    SOURCE_PASSWORD='Root@123456',
    SOURCE_LOG_FILE='binlog.000006',
    SOURCE_LOG_POS=157;

 

-- 启动主从复制

START REPLICA;

-- 显示从库的状态信息

SHOW SLAVE STATUS \G;

成功了

4、开始测试

分别在主库、从库查看所有数据库列表:

SHOW DATABASES;

主库:

从库:

在主库执行以下SQL语句:

-- 创建数据库 db_001
CREATE DATABASE IF NOT EXISTS db_001 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 切换到数据库 db_001
USE db_001;

-- 创建表 example_table
CREATE TABLE IF NOT EXISTS example_table (
    id INT AUTO_INCREMENT PRIMARY KEY,          -- 主键,自增长整数类型
    name VARCHAR(50) NOT NULL COMMENT '姓名',    -- 姓名,最大长度为50的字符串,不允许为空
    age INT COMMENT '年龄',                      -- 年龄,整数类型
    email VARCHAR(100) COMMENT '电子邮件'       -- 电子邮件,最大长度为100的字符串
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 插入数据
INSERT INTO example_table (name, age, email) VALUES
('张三', 25, 'zhangsan@example.com'),
('李四', 30, 'lisi@example.com'),
('王五', 22, 'wangwu@example.com');

分别在主库、从库查看所有数据库列表:

SHOW DATABASES;

主库:

从库:

可以看到,从库和主库同步了

常见问题:

问题1:Slave_IO_Running: No

我是直接克隆的虚拟机,主库和从库的uuid一致了,所以需要修改一下

搜索auto.cnf文件

find / -iname "auto.cnf"

 找到:/var/lib/mysql/auto.cnf

vim /var/lib/mysql/auto.cnf

 修改UUID,要保证唯一性

  • 将两台机器的UUID改成不一样就行

 修改后,重启mysql服务

service mysqld restart

service mysql restart

进入mysql

mysql -u root -p

-- 启动主从复制

start replica;

 -- 显示从库的状态信息

SHOW SLAVE STATUS \G;

 成功了

问题2:ERROR 3021 (HY000): This operation cannot be performed with a running replica io thread; run STOP REPLICA IO_THREAD FOR CHANNEL '' first.

原因:

从库已经配置过,需要先停止,然后重置一下

停止:

stop replica;

重置:

reset replica;

重新设置:

CHANGE REPLICATION SOURCE TO 
    SOURCE_HOST='192.168.91.152',
    SOURCE_USER='test123',
    SOURCE_PASSWORD='Root@123456',
    SOURCE_LOG_FILE='binlog.000006',
    SOURCE_LOG_POS=157;

-- 启动

START REPLICA;

  • 18
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的佳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值