当前位置: 首页 > news >正文

mysql 主从配置

  1. 核心概念

    • 主服务器(Master):负责处理客户端的写操作,并将数据更改记录到二进制日志(binlog)中。
    • 从服务器(Slave):负责读取主服务器的二进制日志,并在本地执行这些更改,以保持数据同步。
  2. 工作流程

    • 主服务器
      • 执行数据更改操作(如INSERT、UPDATE、DELETE)。
      • 将这些操作记录到二进制日志中。
    • 从服务器
      • 启动I/O线程连接到主服务器,请求二进制日志。
      • 主服务器将二进制日志发送到从服务器。
      • 从服务器将接收到的日志写入中继日志(relay log)。
      • SQL线程从中继日志中读取日志并执行相应的SQL语句。

3.配置过程:
实验选取三台机器(一主两从),ip分别为:

Master:172.25.254.220/24
Slave-1:172.25.254.230/24
Slave-2:172.25.254.240/24

实验中要将防火墙关闭:

sudo systemctl stop firewalld

检查防火墙状态:

sudo systemctl status firewalld

安装MySQL

yum install -y mysql-server

3.1 对Master进行配置:
 
配置文件:

文件可以在/etc/my.cnf下配置,也可以在/etc/my.cnf.d/mysql-server.cnf里配置

这里选择在/etc/my.cnf.d/mysql-server.cnf里配置。

[mysqld]
server_id=220  # 使用IP的最后一个数字,确保每台机器唯一
log-bin=master-bin
binlog-format=ROW
expire_logs_days=7
 

添加如下内容:

server_id=ID(这里的id自定义,我填的是IP主机位,方便记忆)

重启MySQL服务:

systemctl restart mysqld

检查MySQL服务状态:

systemctl status mysqld

 检查状态为active

登录MySQL,创建复制用户并授权:

CREATE USER 'rin'@'172.25.254.%' IDENTIFIED WITH mysql_native_password BY '123';
GRANT REPLICATION SLAVE ON *.* TO 'rin'@'172.25.254.%';
FLUSH PRIVILEGES;

创建用户:

创建了一个名为 rin 的用户,允许其从 172.25.254 网段下的任何主机连接到 MySQL 服务器,并且使用 mysql_native_password 认证方式,密码为 123

create user rin@'172.25.254.%' identified with mysql_native_password by '123';
进行授权:

赋予 rin 用户对所有数据库的所有权限

grant replication slave on *.* to rin@'172.25.254.%';
显示主服务器(Master)的复制状态信息

show master status;
File:这是当前主服务器正在使用的二进制日志文件名。
Position:表示当前二进制日志文件中的偏移位置。
Binlog_Do_DB:此列指定了哪些数据库的更改会被记录到二进制日志中。
Binlog_Ignore_DB:与 Binlog_Do_DB 相反,此列指定了哪些数据库的更改不会被记录到二进制日志中。为空表示没有忽略任何数据库的更改。
Executed_Gtid_Set:在启用了全局事务标识符(GTID)的情况下,这个字段记录了主服务器已经执行的 GTID 集合。

 

查看主服务器状态:

SHOW MASTER STATUS;
3.2 对Salve-1进行配置:

配置Slave-1和Slave-2(以下步骤对两台从服务器相同):

  • 修改配置文件 /etc/my.cnf.d/mysql-server.cnf
    [mysqld]
    server_id=230  # 对于Slave-1使用230,对于Slave-2使用240
    relay-log=slave-relay-bin
    read_only=1

重启MySQL:

systemctl restart mysqld

查看MySQL服务状态:

systemctl status mysqld

 

 

配置从服务器连接主服务器:

CHANGE MASTER TO
  MASTER_HOST='172.25.254.220',
  MASTER_USER='rin',
  MASTER_PASSWORD='123',
  MASTER_LOG_FILE='master-bin.000001',  # 根据主服务器SHOW MASTER STATUS的输出填写
  MASTER_LOG_POS=154;  # 根据主服务器SHOW MASTER STATUS的输出填写

启动从服务器复制线程:

START SLAVE;

 

查看复制状态:

SHOW SLAVE STATUS\G

 

3. 3 对Salve-2进行配置:

配置 /etc/my.cnf.d/mysql-server.cnf 文件:

重启MySQL:

systemctl restart mysqld

查看MySQL服务状态:

systemctl status mysqld

 

配置Salve-1服务器连接Master服务器:

CHANGE MASTER TO
    master_host='172.25.254.220',
    master_user='rin',
    master_password='123',
    master_log_file='binlog.000001',
    master_log_pos=680;

查看复制状态:

show slave status\G

 

4.验证主从复制:
在Master设备上建库建表并插入数据:

-- 创建一个新的数据库
CREATE DATABASE test_db;
 
-- 使用该数据库
USE test_db;
 
-- 创建一个表
CREATE TABLE test_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);
 
-- 插入一些测试数据
INSERT INTO test_table (name, age) VALUES ('Alice', 25);
INSERT INTO test_table (name, age) VALUES ('Bob', 30);
INSERT INTO test_table (name, age) VALUES ('Charlie', 35);
 
-- 查看是否存在数据库
SHOW DATABASES;
 
-- 查看表是否存在
SHOW TABLES;

在Slave上进行查看复制情况:

相关文章:

  • XSS通关技巧
  • 创建vue2项目
  • 【MYSQL】索引和事务
  • vue 新项目安装依赖插件
  • Vue3 实战:基于 mxGraph 与 WebSocket 的动态流程图构建
  • WebSocket 的错误处理与断线重连
  • 5.1 位运算专题:LeetCode 面试题 01.01. 判定字符是否唯一
  • QT编程之PCM音频播放与采集
  • vue3 项目的最新eslint9 + prettier 配置
  • Android获取U盘路径
  • Python+Requests+Pytest+YAML+Allure接口自动化框架
  • 从国家能源到浙江交通投资,全息技术在能源交通领域的创新应用
  • Spring 框架基础教程(Day03)
  • JVM 01
  • C++菜鸟教程 - 从入门到精通 第五节
  • 隔空打印,IPP,IPD,HP Jetdirect协议的区别(Mac添加打印机四种协议的区别)
  • 【Unity】合批处理和GPU实例化的底层优化原理(完)
  • Spring 框架中的 BeanUtils
  • AugFPN
  • STM32标准库开发中断流程
  • 夜驾遇东北虎隔窗对视?延吉林业局:村里有牛被咬死,保险公司会理赔
  • 印军称中国向巴基斯坦提供防空系统协助,外交部:中方十分重视与印、巴两国关系
  • 外交部:将持续便利中外人员往来,让“中国游”金字招牌更加闪耀
  • 三星“七天机”质保期内屏幕漏液被拒保,澎湃介入后已解决
  • AI快速迭代带来知识焦虑,褚君浩院士提出“四维能力模型”
  • 内蒙古赤峰市城建集团董事长孙广通拟任旗县区党委书记