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配置管理。
相关推荐
小陈工1 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
0xDevNull5 小时前
MySQL数据冷热分离详解
后端·mysql
科技小花5 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸5 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain5 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希6 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神6 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员6 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java6 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿7 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb