尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

完整教程:Mysql主从复制

完整教程:Mysql主从复制
📅 发布时间:2026/6/19 14:18:57

完整教程:Mysql主从复制

介绍

MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志效果。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制继而再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方软件。

MySQL复制过程分成三步:
● master将改变记录到二进制日志(binary log)
● slave将master的binary log拷贝到它的中继日志(relay log)
● slave重做中继日志中的事件,将改变应用到自己的数据库中

如何进行主从复制

首先要确保防火墙开放mysql的端口(3306或其他)

# 检查防火墙
sudo firewall-cmd --list-ports
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

首先要准备两个服务器,一个用来管理主库(master);一个用来管理从库(slave)

1. 主服务器部署

修改主服务器配置文件(my.cnf):

[mysqld]

# 服务器ID,主从不能相同

server-id = 1

# 开启二进制日志

log_bin = mysql-bin

# 需要复制的数据库(可选)

binlog-do-db = test_db

# 不需要复制的数据库(可选)

binlog-ignore-db = mysql

binlog-ignore-db = information_schema

# 二进制日志格式(推荐ROW)

binlog_format = ROW

# 自动清理过期日志

expire_logs_days = 7

之后执行sql

-- 在主服务器执行

CREATE USER 'repl'@'192.168.1.11' IDENTIFIED BY 'repl_password';

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11';

FLUSH PRIVILEGES;

解释:

'repl' - 用户名,专门用于复制的用户,可以自定义

'@'192.168.1.11' - 从服务器的IP就是指定允许连接的客户端IP,这里

'repl_password' - 用户密码,建议设置强密码

查看主服务器状态:

执行sql

SHOW MASTER STATUS;

记录下返回的 File 和 Position 值,从服务器配置时应该。

2. 从服务器部署

修改从服务器配置文件(my.cnf):

[mysqld]

server-id = 2#id要于主库不相同

# 开启中继日志

relay_log = mysql-relay-bin

# 可选:记录从服务器的二进制日志

log_bin = mysql-bin

# 防止从服务器写操作

read_only = 1

之后执行sql

-- 在从服务器执行

CHANGE MASTER TO

MASTER_HOST='192.168.1.10',

MASTER_USER='repl',

MASTER_PASSWORD='repl_password',

MASTER_LOG_FILE='mysql-bin.000001',  -- 主服务器SHOW MASTER STATUS的File

MASTER_LOG_POS=107;                  -- 主服务器SHOW MASTER STATUS的Position

-- 启动复制

START SLAVE;

3. 验证复制状态

检查从服务器复制状态:

SHOW SLAVE STATUS\G;

满足:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0

启用Mysql主从复制-------------Sharding-JDBC

主Mysql从从复制成功后在Java工程中用Sharding-JDBC来使用它。

Sharding-JDBC介绍

Sharding-JDBC定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它运用客户端直连数据库,以jar包形式供应服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。启用Sharding-JDBC可以在软件中轻松的实现数据库读写分离。
● 适用于任何基于JDBC的ORM框架,如:JPA,Hibernate,Mybatis,Spring JDBC Template或直接采用JDBC。
● 支持任何第三方的数据库连接池,如:DBCP,C3P0,BoneCP,Druid,HikariCP等。
● 支持任意实现JDBC规范的数据库。目前支持MySQL,Oracle,SQLServer,PostgreSQL以及任何遵循SQL92标准的数据库。

使用步骤
1导入maven坐标(Sharding-JDBC的)

<dependency>

<groupId>org.apache.shardingsphere</groupId>

<artifactId>sharding-jdbc-spring-boot-starter</artifactId>

<version>4.0.0-RC1</version>

</dependency>

2在配置文件中配置读写分离规则

3在配置文件中允许bean定义覆盖配置顶

spring:

shardingsphere:

datasource:

names:

master,slave

# 主数据源

master:

type: com.alibaba.druid.pool.DruidDataSource

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql://192.168.217.100:3307/rw?characterEncoding=utf-8

username: root

password: abc123LQ

# 从数据源

slave:

type: com.alibaba.druid.pool.DruidDataSource

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql://192.168.217.130:3307/rw?characterEncoding=utf-8

username: root

password: abc123LQ

masterslave:

# 读写分离调整

load-balance-algorithm-type: round_robin #轮询(按顺序来用从库,轮着使用)

# 最终的数据源名称

name: dataSource

# 主库数据源名称

master-data-source-name: master

# 从库数据源名称列表,多个逗号分隔

slave-data-source-names: slave

props:

      sql:

show: true #开启SQL显示,默认false

  #允许覆盖

  main:

allow-bean-definition-overriding: true

相关新闻

  • 2025年蒸发冷空调厂家权威推荐榜:工业制冷节能环保空调,车间厂房商用空调系统优质品牌精选
  • Gitee DevOps平台:本土化创新如何重塑企业研发效能
  • 2025年真空烧结炉厂家权威推荐榜:专业设备与高效工艺深度解析,工业窑炉优质品牌选购指南

最新新闻

  • Windows老游戏终极兼容解决方案:dxwrapper完全指南
  • 编写自定义脚本来自动化 vLLM 部署流程
  • 宣城市宁国吃正宗皖南徽菜 + 宁国农家土菜推荐去哪家? - 速递信息
  • 武汉买猫买狗去哪看?梦宠山庄实地体验分享 - 园友3800037
  • 从零到一:Jetlinks物联网平台服务器部署实战与避坑指南
  • (转)一次ANSYS EM 2023R1 “Request name electronics_desktop does not exist in the licensing pool.“的离谱解决记录

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号