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

MySQL主从服务器配置教程

文章目录

  • 前言
  • 一、环境准备
    • 1. 服务器信息
    • 2. 安装 MySQL
    • 3. 初始化 MySQL
    • 4. Navicat查看 MySQL 服务器
  • 二、主服务器(Master)配置
    • 1. 编辑 MySQL 配置文件
    • 2. 创建用于复制的用户
    • 3. 获取二进制日志信息
  • 三、从服务器(Slave)配置
    • 1. 编辑 MySQL 配置文件
    • 2. 配置从服务器连接主服务器
    • 3. 启动从服务器复制进程
    • 4. 检查从服务器状态
  • 四、测试主从复制
    • 1. 在主服务器上创建测试数据库和表
    • 2. 在从服务器上检查数据复制情况
  • 五、注意事项


前言

MySQL 主从复制是一种常见的数据库架构,通过将主服务器(Master)的数据复制到一个或多个从服务器(Slave)上,实现数据的备份、负载均衡以及读写分离等功能。本教程将详细介绍在 Linux 系统(以 CentOS 7 为例)下配置 MySQL 主从服务器的步骤。


一、环境准备

1. 服务器信息

主服务器(Master):IP 地址为 192.168.1.100,操作系统为 CentOS 7,MySQL 版本为 8.0。
从服务器(Slave):IP 地址为 192.168.1.101,操作系统为 CentOS 7,MySQL 版本为 8.0。

2. 安装 MySQL

在主服务器和从服务器上分别安装 MySQL 8.0,可使用以下命令:

# 更新系统软件包
sudo yum update -y
# 安装 MySQL 官方仓库
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# 安装 MySQL 服务器
sudo yum install -y mysql-server
# 启动 MySQL 服务
sudo systemctl start mysqld
# 设置 MySQL 服务开机自启
sudo systemctl enable mysqld

3. 初始化 MySQL

在主服务器和从服务器上分别执行以下命令初始化 MySQL:

# 获取临时密码
sudo grep 'temporary password' /var/log/mysqld.log
# 使用临时密码登录 MySQL
mysql -u root -p
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';

4. Navicat查看 MySQL 服务器

  • Navicat 是功能强大的数据库管理工具,它有直观图形界面,无需复杂代码即可操作。

Navicat16安装教程(附安装包)原文链接:https://blog.csdn.net/xxjc2025/article/details/145739774

Navicat16下载链接:https://pan.quark.cn/s/7078d579bdcf

二、主服务器(Master)配置

1. 编辑 MySQL 配置文件

使用以下命令编辑 /etc/my.cnf 文件:

sudo vi /etc/my.cnf
在文件中添加或修改以下配置:
ini
[mysqld]
# 服务器唯一 ID,必须为正整数,主从服务器不能相同
server-id = 1
# 开启二进制日志,用于记录数据库的更改
log-bin = mysql-bin
# 指定二进制日志的过期时间,可根据实际情况调整
expire-logs-days = 10
# 二进制日志文件的最大大小
max-binlog-size = 100M
# 允许复制的数据库,可根据实际情况修改
binlog-do-db = your_database_name

保存并退出文件后,重启 MySQL 服务:

sudo systemctl restart mysqld

2. 创建用于复制的用户

登录 MySQL 并执行以下命令创建一个用于主从复制的用户:

CREATE USER 'repl_user'@'%' IDENTIFIED BY 'YourReplicationPassword';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;

3. 获取二进制日志信息

在 MySQL 中执行以下命令获取当前二进制日志的文件名和位置:

SHOW MASTER STATUS;

记录下 File 和 Position 的值,后续配置从服务器时会用到。

三、从服务器(Slave)配置

1. 编辑 MySQL 配置文件

使用以下命令编辑 /etc/my.cnf 文件:

sudo vi /etc/my.cnf

在文件中添加或修改以下配置:

[mysqld]
# 服务器唯一 ID,必须为正整数,主从服务器不能相同
server-id = 2

保存并退出文件后,重启 MySQL 服务:

sudo systemctl restart mysqld

2. 配置从服务器连接主服务器

登录 MySQL 并执行以下命令配置从服务器连接主服务器:

CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='repl_user',
MASTER_PASSWORD='YourReplicationPassword',
MASTER_LOG_FILE='mysql-bin.xxxxxx',
MASTER_LOG_POS=xxxxxx;

将 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,表示复制进程正常运行。

四、测试主从复制

1. 在主服务器上创建测试数据库和表

登录主服务器的 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');

2. 在从服务器上检查数据复制情况

登录从服务器的 MySQL 并执行以下命令:

USE test_db;
SELECT * FROM test_table;

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

五、注意事项

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

通过以上步骤,你可以成功配置 MySQL 主从服务器,实现数据的复制和同步。

相关文章:

  • 【C++】模板初阶和STL简介
  • Linux提权之metasploit 提权(五)
  • 登录-07.JWT令牌-登录后下发令牌
  • 编程题-连接两字母单词得到的最长回文串(中等)
  • 从网络基础到安全防护:网安运维小白的入门学习路线
  • python-静态方法和类方法
  • 蓝桥杯训练题目(一)—— 难度:简单(除了最后一题哈)
  • 《Python实战进阶》专栏 No 4:高效、简洁、强大之使用 FastAPI 构建高性能异步API
  • 请简述一下Prefab(预制体)的本质是什么?
  • 大白话TypeScript第三章高级特性学习
  • 使用Socket编写超牛的http服务器和客户端(一)
  • L1-6 剪切粘贴(字符串增删查改)
  • INTJ人格的本质
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter21-错误处理与调试
  • Linux 命令大全完整版(12)
  • apply的用法
  • 自动驾驶中planning为什么要把横纵向分开优化?
  • AI知识架构之RAG
  • 如何在VMware虚拟机的window10系统中安装网易mumu模拟器
  • Linux权限(一)
  • 新华时评·首季中国经济观察丨用好用足更加积极的财政政策
  • 经济日报:AI时代如何寻找“你的赛道”
  • 一图读懂|上海海关公布一季度数据:钢材出口增长超143%
  • 龚曙光:散文家永远只有一个视角,就是“我与时代”
  • 我国风电光伏装机历史性超过火电
  • 拉卡拉一季度净利约1亿降超五成,去年净利3.5亿降逾23%