MySQL——主从同步

ops/2025/1/23 12:52:17/

提醒:进行配置时,需要确保一主两从的操作系统、MySQL版本一致,否则将出现问题

环境介绍

服务器IP
主服务器172.25.254.10
从服务器-1172.25.254.11
从服务器-2172.25.254.12

配置

# 快速配置,选择多重执行,确保版本一致
[root@localhost ~]# yum install mysql-server -y
# 默认开启binlog日志

主库操作


# 主配置文件
[root@localhost ~]# vim /etc/my.cnf
# 子配置文件(二选一配置)
[root@localhost ~]# vim /etc/my.cnf.d/mysql-server.cnf
# 设置server_id(要求唯一)
server_id=10
# 启动服务
[root@localhost ~]# systemctl enable --now mysqld
# 默认无密码
[root@localhost ~]# mysql -u root -p
# 创建同步用账户
CREATE USER 'xxx'@'172.25.254.%' IDENTIFIED BY 'aaa';
# 对账户开放同步权限
GRANT REPLICATION SLAVE ON *.* TO 'xxx'@'172.25.254.%';
# 查看主服务器状态(关注MASTER_LOG_FILE、MASTER_LOG_POS)
SHOW MASTER STATUS\G
# 记录MASTER_LOG_FILE=binlog.000001、MASTER_LOG_POS=710

在这里插入图片描述

从服务器

# 从服务器设置不重复的server_id
# 从服务器-1——server_id=11
# 从服务器-2——server_id=12# 启动服务
[root@localhost ~]# systemctl enable --now mysqld
# 默认无密码
[root@localhost ~]# mysql -u root -p
# 主从设置
mysql> CHANGE MASTER TO
# 主服务器IP-> MASTER_HOST='172.25.254.10',
# 主从同步账户-> MASTER_USER='xxx',
# 主从账户密码-> MASTER_PASSWORD='aaa',
# 主服务器的binlog日志-> MASTER_LOG_FILE='binlog.000001',
# 主服务器的Position-> MASTER_LOG_POS=710,
# 解决密码插件报错-> get_master_public_key=1;
# 当错误配置时,先stop slave再再进行配置
mysql> start slave;
# 查看从服务器状态
mysql> SHOW SLAVE STATUS\G

当显示 Slave_IO_Running: Yes、 Slave_SQL_Running: Yes 时,从服务器配置成功

在这里插入图片描述

验证

# 在主服务器中,添加一些数据
mysql> CREATE DATABASE ovo;
mysql> CREATE TABLE ovo.userlist (-> username varchar(20) not null,-> password varchar(50) not null);
mysql> INSERT INTO ovo.userlist VALUE ('ovo','111');
# 在从服务器中,查看是否有名为 ovo 的数据库
# 以及数据库内是否有 username:ovo password:111 的数据

在这里插入图片描述

主从同步原理

在主从同步过程中,会基于多个线程来操作(主库线程以及从库线程)

二进制日志转储线程(Binlog dump thread)是一个主库线程

当从库线程连接的时候, 主库可以将二进制日志发送给从库

主库读取事件的时候,会在 Binlog 上加锁,读取完成之后,再将锁释放掉

从库 I/O 线程会连接到主库,向主库发送请求更新 Binlog

从库的 I/O 线程就可以读取到Dump线程发送的 Binlog 更新部分,并且拷贝到本地的中继日志 (Relay log)

从库 SQL 线程会读取从库中的中继日志,并且执行日志中的事件,使得从库中的数据与主库保持同步

遇到的问题

描述:从服务器的Slave_IO_Running一直处于Connecting状态

报错:Message: Authentication plugin ‘caching_sha2_password’ reported error: Authentication requires secure connection.
原因:密码插件导致的
方案一:修改主服务器的密码加密方式

ALTER USER 'xxx'@'172.25.254.%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD by 'aaa';

方案二:主从设置时,添加get_master_public_key=1;参数(文章采用此方法)

描述:从服务器的Slave_IO_Running 处于No状态

报错:‘Could not find first log file name in binary log index file’
原因:从服务器MASTER_LOG_FILE配置错误,与主服务器的binlog不一致
方案:修改主从设置的MASTER_LOG_FILE参数


http://www.ppmy.cn/ops/152469.html

相关文章

docker load报错(unexpected EOF)

今天解决了一个困扰我2天的问题,那就是docker load 失败,背景是这样的,同事离职交接给我一个基础docker镜像文件,大约600M,然后我把这个文件拖到Centos7虚拟机中,然而docker load的时候报错了,错…

java开发之文件上传

前端:必须设置表单的内容格式为multipart/form-data,必须有file表单项,method必须为POST 服务器端:用MultipartFile格式接受文件 文件存储 本地存储:存储到服务器本地磁盘目录。调用MultipartFile的transferTo()方…

于灵动的变量变幻间:函数与计算逻辑的浪漫交织(下)

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 这一节我们主要来学习单个函数的声明与定义,static和extern… 这里写目录标题 一、单个函数…

python实现答题游戏

有这样一个需求:使用python实现一个游戏,一共有10个问题,依次回答每个问题,每个用户可以输入问题的答案,但是互相不能看到,有一个管理员可以看到所有人的答案,并且当所有人都填写完成后可以公布…

论文速读| A Survey on Data Synthesis and Augmentation for Large Language Models

论文地址:https://arxiv.org/abs/2410.12896v1 bib引用: misc{wang2024surveydatasynthesisaugmentation,title{A Survey on Data Synthesis and Augmentation for Large Language Models}, author{Ke Wang and Jiahui Zhu and Minjie Ren and Zeming L…

【Ubuntu】安装SSH启用远程连接

【Ubuntu】安装OpenSSH启用远程连接 零、安装软件 使用如下代码安装OpenSSH服务端: sudo apt install openssh-server壹、启动服务 使用如下代码启动OpenSSH服务端: sudo systemctl start ssh贰、配置SSH(可跳过) 配置文件 …

Tmux新手使用教程

1. 概述tmux 想象一下,你需要在终端中同时做很多事情:编辑代码、运行程序、查看日志等等。如果每个任务都开一个终端窗口,会很乱而且切换麻烦。 tmux 就相当于一个终端的“管理器”,它可以: 让你在一个终端窗口里打…

Docker Compose创建镜像服务

什么是Docker Compose 使用Docker Compose,可以使用YAML配置文件(称为Compose文件)来配置应用程序的服务,然后使用Compose CLI从配置中创建并启动所有服务 。 Compose文件的默认路径是compose.yaml(首选)…