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

Ubuntu服务器中MySQL如何进行主从复制

  一、MySQL 主从复制基本原理

  MySQL 主从复制是指:一台数据库服务器负责写入操作,并将数据变更以二进制日志形式记录下来;一台或多台从库通过读取主库的二进制日志,实时或半实时地将主库的写入操作同步到自身数据库,实现数据一致性。

  二、环境准备

  本示例使用以下环境:

  Ubuntu 20.04 / 22.04 两台或多台服务器(主库1台,从库1台或多台)

  MySQL 8.x(5.7 同理,部分配置项命名不同)

  主库 IP:192.168.1.100

  从库 IP:192.168.1.101

  建议主从服务器防火墙开放 MySQL 端口(默认 3306),并在内网部署以确保安全性。

  三、主库配置

  1.编辑主库 MySQL 配置文件

  在主库服务器上修改 MySQL 配置文件,一般路径:

  /etc/mysql/mysql.conf.d/mysqld.cnf

  主要修改或增加以下内容:

[mysqld]
server-id = 1               # 唯一标识主库
log_bin = /var/log/mysql/mysql-bin.log   # 开启二进制日志
binlog_do_db = your_database_name        # 指定需要复制的数据库(可选)

  保存后,重启 MySQL:

  sudo systemctl restart mysql

  2.创建复制账号

  登录 MySQL:

  mysql -u root -p

  创建一个专用复制账号,并授权:

CREATE USER 'repl'@'192.168.1.%' IDENTIFIED WITH mysql_native_password BY 'strong_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%';
FLUSH PRIVILEGES;

  说明:

  用户名可自定义(如 repl)

  IP 段可根据实际环境调整

  3.查看主库状态

  锁定表并查看主库当前二进制日志状态:

  FLUSH TABLES WITH READ LOCK;SHOW MASTER STATUS;

  记录输出中的:

  File (例如:mysql-bin.000001)

  Position (例如:1234)

  不要关闭此终端,否则锁会失效。

  四、从库配置

  1.编辑从库配置文件

  在从库服务器上修改 MySQL 配置文件:

[mysqld]
server-id = 2                # 从库唯一ID,和主库不同
relay_log = /var/log/mysql/mysql-relay-bin.log

  重启 MySQL:

  sudo systemctl restart mysql

  2.配置主从关系

  登录从库:

  mysql -u root -p

  执行如下命令,配置主库信息和同步点:

CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='repl',
MASTER_PASSWORD='strong_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1234;

  请将 MASTER_LOG_FILE 和 MASTER_LOG_POS 替换成主库实际状态。

  3.启动复制

  START SLAVE;

  查看复制状态:

  SHOW SLAVE STATUS\G

  重点检查输出中的:

  Slave_IO_Running: YesSlave_SQL_Running: Yes

  如果两项均为 Yes,则说明主从配置成功。

  4.解除主库锁定

  回到主库终端:

  UNLOCK TABLES;

  主库恢复写入。

  五、验证主从复制

  在主库执行:

USE your_database_name;
CREATE TABLE test_table (id INT PRIMARY KEY, val VARCHAR(50));
INSERT INTO test_table VALUES (1, 'hello');

  在从库查看:

  SELECT * FROM your_database_name.test_table;

  若数据同步成功,则表和数据与主库一致。

  主从架构不仅提升了数据库读写性能,还为数据安全和业务可用性提供了重要保障。在实际部署中,可根据业务需求选择全量同步、部分库表同步、多从库扩展等方案,以适配不同规模的生产环境。

 

http://www.lryc.cn/news/574683.html

相关文章:

  • 解锁阿里云AnalyticDB:数据仓库的革新利器
  • 支持向量机(SVM)python语言版本
  • 从0开始学习R语言--Day31--概率图模型
  • FPGA基础 -- Verilog 验证平台之 **cocotb 验证 `阶乘计算模块(factorial)` 的例子**
  • 洛谷P1092 [NOIP 2004 提高组] 虫食算
  • 基于DE1-SoC的My_First_oneAPI(一)
  • SpringBoot 3.0 - 自定义注解+拦截器+Redis 解决接口幂等性
  • 【apache-maven3.9安装与配置】
  • 从虚拟机角度解释python3相对导入问题(下)
  • 轻量化实物建模革命:WebGL如何实现复杂模型的高效加载与交互
  • ​CentOS 7 单用户模式重置 root 密码完整指南
  • 新中国风通用读书颂词分享PPT模版
  • JS核心操作符:从基础到ES6+
  • (ICML-2023)BLIP-2:使用冻结图像编码器与大型语言模型的语言-图像预训练引导方法
  • SQL Server 查询数据库及数据文件大小
  • 使用 spark-submit 运行依赖第三方库的 Python 文件
  • RGB相机 vs 灰度相机
  • Apache Flink Kafka 写连接器源码深度剖析
  • java-SpringBoot框架开发计算器网页端编程练习项目【web版】
  • Drag-and-Drop LLMs: Zero-Shot Prompt-to-Weights
  • DataSophon 1.2.1集成Flink 1.20并增加JMX 监控
  • pyqt setContentsMargins
  • 网络安全攻防:2025年新型钓鱼攻击防御指南
  • 零基础搭建Spring AI本地开发环境指南
  • LT8311EX一款适用于笔记本电脑,扩展坞的usb2.0高速运转芯片,成对使用,延伸长度达120米
  • 202564读书笔记|《土耳其:换个地方躺平(轻游记)》——旅行的时候,绮丽多姿的真实世界向我打开
  • Python核心库Pandas详解:数据处理与分析利器
  • 【Java开发日记】我们详细地讲解一下 Java 异常及要如何处理
  • Springboot项目中使用手机号短信验证码注册登录实现
  • Vue项目使用defer优化页面白屏,性能优化提升,秒加载!!!