news 2026/6/9 21:27:11

MySQL主从复制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL主从复制

MySQL 主从复制

MySQL主从负载至少需要2台数据库服务器,其中一台为master库,另外一台为slave库,MySQL主从数据同步时一个异步复制的过程,要实现负载首先需要在master 上开启bin-log 日志功能,bin-log日志用于记录在master 库中执行的增、删、修改、更新操作的SQL语句,真个过程需要开启3个现成,分别是master开启IO 线程,slave开启IO线程和SQL 线程,具体主从同步原理如下:

  • slave上执行slave start,slave IO 线程会通过在master 创建的授权用户连接上master,并请求master从指定的文件和位置之后发送bin-log 日志内容;
  • master接收到来着slave IO 线程的请求后,master IO 线程根据slave发送的指定bin-log日志position 点之后的内容,然后返回给slave 的IO 线程
  • 返回的信息中除了bin-log 日志内容外,还有master 最新的bin-log 文件名以及在bin-log中下一个指定更新position 点
  • slave IO线程接收到信息后,将接收到的日志内容依次添加到sloave段的relay-log文件的最末端,并将读取到的master 端的bin-log的文件名和position 点记录到master.info 文件中,一遍在下次读取的时候能告知master从相应的bin-log文件名及最后一个position 点开始发起请求
  • slave SQL 线程检测到relay-log中内容有更新,会立刻解析relay-log 日志中的内容,将解析后的SQL 语句在slave 里执行,执行成功后slave 库与master库数据保持一致

主从复制实现过程:

一、准备2台服务器:
master: 172.17.27.127
slave:172.17.191.75
MySQL 8.0 版本
二、配置主库(master):
1.修改 MySQL 配置文件:/etc/my.cnf

[mysqld]# 唯一服务器IDserver-id=1# 开启 binlog(必须!)log-bin=mysql-bin# MySQL 8.0 推荐设置binlog_format=ROW gtid_mode=ON enforce_gtid_consistency=ON
  1. 重启mysql
systemctl restart mysql

重启mysql 服务时如果报下面的错误,说明没有创建mysql 用户,创建一下mysql用户就可以

[root@master ~]# journalctl -xeDec1314:13:36 nodea100-2 systemd[40128]: Failed at stepUSERspawning /usr/bin/mysqld_pre_systemd: No such process -- Subject: Process /usr/bin/mysqld_pre_systemd could not be executed -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- The process /usr/bin/mysqld_pre_systemd could not be executed and failed. -- -- The error number returned by this process is3. Dec1314:13:36 nodea100-2 systemd[1]: mysqld.service: control process exited,code=exitedstatus=217Dec1314:13:36 nodea100-2 systemd[1]: Failed to start MySQL Server. -- Subject: Unit mysqld.service has failed......[root@master ~]# groupadd -g 27 mysql[root@master ~]# useradd -u 27 -g mysql -s /sbin/nologin -d /var/lib/mysql mysql[root@master ~]# chown -R mysql:mysql /var/lib/mysql[root@master ~]# systemctl restart mysqld
  1. 创建复制专用用户
-- 登录 MySQLmysql-u root-p-- 创建用户(允许从 172.17.191.75 连接)CREATEUSER'repl'@'172.17.191.75'IDENTIFIEDBY'-----';-- 授予复制权限GRANTREPLICATIONSLAVEON*.*TO'repl'@'172.17.191.75';-- 刷新权限FLUSHPRIVILEGES;
  1. 记录当前 bin-log 位置:
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 23:45:53

JavaScript高级:深入对象与内置构造函数

JavaScript 高级 - 第2天 了解面向对象编程的基础概念及构造函数的作用,体会 JavaScript 一切皆对象的语言特征,掌握常见的对象属性和方法的使用。 了解面向对象编程中的一般概念能够基于构造函数创建对象理解 JavaScript 中一切皆对象的语言特征理解引用…

作者头像 李华
网站建设 2026/6/10 14:05:10

月访问量破 2500 万,yeeyi亿忆成为澳洲华人生活信息核心平台

yeeyi亿忆 以其 月访问量 2500 万、注册用户 300 万、月活跃 40 万 的规模,在澳洲华人平台中保持极高的使用率。凭借 20 年持续运营经验,它已成为华人在澳洲生活、求职、找房与经营生意的重要信息中心。平台租房板块是其高流量来源之一,覆盖澳洲五大主要城市的真实房源。无论是…

作者头像 李华
网站建设 2026/6/10 14:03:37

React Native SVG开发实战:从图标到动画的完整解决方案

React Native SVG开发实战:从图标到动画的完整解决方案 【免费下载链接】react-native-svg 项目地址: https://gitcode.com/gh_mirrors/reac/react-native-art-svg "为什么我的应用图标在高分辨率屏幕上会模糊?" "为什么同样的动…

作者头像 李华
网站建设 2026/6/9 18:59:59

MongoDB实时数据同步终极指南:mongo-connector快速上手教程

MongoDB实时数据同步终极指南:mongo-connector快速上手教程 【免费下载链接】mongo-connector MongoDB data stream pipeline tools by YouGov (adopted from MongoDB) 项目地址: https://gitcode.com/gh_mirrors/mo/mongo-connector 你是否曾为MongoDB数据的…

作者头像 李华
网站建设 2026/6/10 14:00:43

5分钟掌握Dify.AI SQL生成:告别复杂查询语法的终极指南

5分钟掌握Dify.AI SQL生成:告别复杂查询语法的终极指南 【免费下载链接】dify 一个开源助手API和GPT的替代品。Dify.AI 是一个大型语言模型(LLM)应用开发平台。它整合了后端即服务(Backend as a Service)和LLMOps的概念…

作者头像 李华
网站建设 2026/6/10 6:45:33

Pyperclip:让Python剪贴板操作变得简单高效的跨平台利器

Pyperclip:让Python剪贴板操作变得简单高效的跨平台利器 【免费下载链接】pyperclip Python module for cross-platform clipboard functions. 项目地址: https://gitcode.com/gh_mirrors/py/pyperclip 在现代编程工作中,剪贴板操作是极其常见的需…

作者头像 李华