MySQL 主从配置超详细教程

文章目录


前言

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; 时记录的值。

  1. 启动从服务器复制进程:在 MySQL 中执行START SLAVE; ,启动从服务器的复制进程。

  2. 检查从服务器状态:执行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配置管理。
相关推荐
yolo_Yang30 分钟前
【MySQL】mysqldump使用方法
数据库·mysql·oracle
玩转测试开发39 分钟前
xshell设置跳板机登录内网服务器
运维·服务器·数据库
你不是我我1 小时前
【Java 开发日记】运行时有出现过什么异常?
数据库·oracle
夏玉林的学习之路2 小时前
正则表达式
数据库·c++·qt·mysql·正则表达式
JIngJaneIL2 小时前
财务管理|基于SprinBoot+vue的个人财务管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·财务管理系统
JIngJaneIL3 小时前
口腔健康系统|口腔医疗|基于java和小程序的口腔健康系统小程序设计与实现(源码+数据库+文档)
java·数据库·spring boot·小程序·论文·毕设·口腔医疗小程序
白帽子黑客罗哥3 小时前
常见Web安全漏洞全解析:从原理到防御的实战指南
数据库·web安全·渗透测试·漏洞利用·权限提升
寒山李白5 小时前
IDEA连接MySQL服务器数据库指南
java·数据库·mysql·intellij-idea·idea·database
计算机学姐6 小时前
基于SpringBoot的动漫推荐系统【协同过滤推荐算法+词云图+排行榜】
java·vue.js·spring boot·后端·mysql·intellij-idea·推荐算法
亿坊电商8 小时前
PHP后端项目中多环境配置管理:开发、测试、生产的优雅解决方案!
服务器·数据库·php