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

MySQL 主从配置超详细教程

文章目录

  • 前言
  • 一、安装 MySQL
  • 二、主服务器(Master)配置
  • 三、从服务器(Slave)配置
  • 四、测试主从复制
  • 五、注意事项


前言

MySQL 主从配置是一种实用的数据库架构,主服务器处理写入操作,从服务器负责只读操作,能提升性能、加强冗余、扩展可读性 。下面以常见的 Linux 系统(CentOS 7 )、MySQL 8.0 版本为例,为你介绍配置步骤。


一、安装 MySQL

MySQL8.0 超详细安装配置教程(附安装包):https://blog.csdn.net/u014164303/article/details/145493332

在主服务器和从服务器上都执行以下操作:

  • 更新系统软件包:打开终端,输入命令sudo yum update -y ,更新系统已安装的软件包。
  • 安装 MySQL 官方仓库:执行sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm ,安装 MySQL 官方的 yum 源。
  • 安装 MySQL 服务器:输入sudo yum install -y mysql-server ,安装 MySQL 服务器程序。
  • 启动 MySQL 服务:使用sudo systemctl start mysqld ,启动 MySQL 服务。
  • 设置开机自启:执行sudo systemctl enable mysqld ,让 MySQL 服务在开机时自动启动。
    初始化 MySQL:
  • 获取临时密码:通过sudo grep ‘temporary password’ /var/log/mysqld.log ,获取初始的临时密码。
  • 登录 MySQL:输入mysql -u root -p ,然后粘贴刚才获取的临时密码登录。
  • 修改密码:运行ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘YourNewPassword’; ,把密码修改为自己设定的新密码。

二、主服务器(Master)配置

  1. 编辑 MySQL 配置文件:使用命令sudo vi /etc/my.cnf 打开配置文件,添加或修改以下内容:
  • server-id = 1 :设置服务器唯一 ID,必须是正整数,且主从服务器的 ID 不能相同。
  • log-bin = mysql-bin :开启二进制日志,用于记录数据库的更改操作。
  • expire-logs-days = 10 :指定二进制日志的过期时间,可按需调整。
  • max-binlog-size = 100M :设置二进制日志文件的最大大小。
  • binlog-do-db = your_database_name :指定允许复制的数据库,可根据实际情况修改,若要复制多个数据库,可重复此配置项。
  • 保存并退出文件后,执行sudo systemctl restart mysqld 重启 MySQL 服务使配置生效。
  1. 创建用于复制的用户:登录 MySQL,执行以下命令:

CREATE USER’repl_user’@‘%’ IDENTIFIED BY ‘YourReplicationPassword’;
GRANT REPLICATION SLAVE ON . TO’repl_user’@‘%’;
FLUSH PRIVILEGES;
上述命令创建了名为repl_user的用户,设置其密码为YourReplicationPassword ,并赋予其主从复制相关权限,最后刷新权限。

  1. 获取二进制日志信息:在 MySQL 中执行SHOW MASTER STATUS; ,记录下File和Position的值,后续配置从服务器时会用到。

三、从服务器(Slave)配置

  1. 编辑 MySQL 配置文件:用sudo vi /etc/my.cnf 打开文件,添加或修改以下配置:
    server-id = 2 :设置从服务器唯一 ID,不能与主服务器及其他从服务器相同。
    保存并退出后,执行sudo systemctl restart mysqld 重启 MySQL 服务。
  2. 配置从服务器连接主服务器:登录 MySQL,执行以下命令配置从服务器连接主服务器:

CHANGE MASTER TO
MASTER_HOST=‘主服务器IP’,
MASTER_USER=‘repl_user’,
MASTER_PASSWORD=‘YourReplicationPassword’,
MASTER_LOG_FILE=‘主服务器二进制日志文件名’,
MASTER_LOG_POS=主服务器二进制日志位置;

将MASTER_LOG_FILE和MASTER_LOG_POS替换为在主服务器上执行SHOW MASTER STATUS; 时记录的值。
3. 启动从服务器复制进程:在 MySQL 中执行START SLAVE; ,启动从服务器的复制进程。
4. 检查从服务器状态:执行SHOW SLAVE STATUS\G; ,确保Slave_IO_Running和Slave_SQL_Running的值都为Yes ,表示复制进程正常运行。

四、测试主从复制

在主服务器上创建测试数据库和表:登录主服务器的 MySQL,执行以下命令:

CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));
INSERT INTO test_table (name) VALUES (‘Test Data’);

在从服务器上检查数据复制情况:登录从服务器的 MySQL,执行以下命令:

USE test_db;
SELECT * FROM test_table;

若能看到主服务器上插入的数据,说明主从复制配置成功。

五、注意事项

  • 网络连接:主从服务器间需能正常通信,确保防火墙允许 MySQL 端口(默认 3306 )的流量通过。
  • 数据一致性:配置主从复制前,保证主从服务器数据一致,可通过数据备份和恢复来实现。
  • 日志管理:定期清理二进制日志文件,避免占用过多磁盘空间,可依据expire-logs-days和max-binlog-size配置管理。

相关文章:

  • 行业黑化.新平面
  • C#经典算法面试题
  • LeetCode 解题思路 45(Hot 100)
  • 卷积神经网络的简单实战项目
  • C++ string的使用
  • 隔离端口配置
  • ArcGIS Pro图斑属性自动联动更新-在线卫星底图图斑采集
  • C语言结构体内存对齐使用场景
  • 【区块链】Uniswap之滑点(Slippage)
  • R8周:RNN实现阿尔茨海默病诊断
  • 软件代码签名证书SSL如何选择?
  • NoUniqueKey问题和Regular join介绍
  • UE5 脚部贴地不穿过地板方案
  • C++命名空间
  • USB接口的PCB设计
  • K8S - Helm 入门与实战 - 应用部署与依赖治理
  • Java 8 非对称加密代码示例
  • 《让内容“活”起来:Flutter社交应用瀑布流布局的破界实践》
  • 神经网络中之多类别分类:从基础到高级应用
  • Ollama本地部署大模型指南
  • 马上评|不再提“智驾”,新能源车企回归理性
  • 三大交易所多举措支持科创债再扩容,约160亿证券公司科创债有望近期落地
  • 民生访谈|摆摊设点、公园搭帐篷、行道树飘絮,管理难题怎么解?
  • 中方对原产印度进口氯氰菊酯实施反倾销措施,商务部回应
  • 怎样正确看待体脂率数据?或许并不需要太“执着”
  • 1101名优秀运动员拟保送,全红婵、黄雨婷、盛李豪在列