Mysql数据库主从复制同步手把手教学(Mac版配置 + Windows版配置 + 踩坑)

本文详细介绍了MySQL数据库的主从复制配置过程,包括Mac和Windows环境下的设置步骤,解析了主从复制的优势与缺点,以及同步原理。通过实际操作指导,帮助读者掌握如何在不同操作系统上实现主从复制,解决网络、配置、权限等问题,实现数据的高效同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上真的很多这种资料了,但是大多数都是不全面的,有的甚至纯文本文字,我的天,纯文字你叫别人凭空想象你这门技术怎么实现?有的踩坑又不说,更多的是复制粘贴,佩服了,还是那句话,自己根本没实现过的技术,拿别人的东西当自己原创,佩服。

一:Mysql主从复制同步的优点:

1:读写分离,缓解服务器访问压力!更加有利于做报表系统!
主从复制就是对主库master进行增删改操作;同时数据的变化会默认毫秒级同步到slave从库;数据是一样的;那么我们就可以在项目中配多数据源拆分处理读写请求;如果是增删改,那就在主库进行。大多数数据库都是大量的查操作造成的性能瓶颈,这里就让读的请求全部去从库。
从库的操作不会同步回主库;所以我们在一主多从的情况下可以拆分项目线进行生产数据的开发测试。
2:有利于测试和本地开发。
这一点我深有体会;开发库测试库的脏数据问题严重;给开发测试工作带来很多不方便。有的接口会有性能问题但是少量的开发库测试库数据根本没法复现。之前在某厂订单数据单表去到了六千万,那张表的操作都是非常慢。开发的接口也是要非常注意。
3:失败迁移;有利于容灾;Plan B计划可减少损失。

缺点:

1: 提高了生产成本!要新加服务器;某主管就明确告诉我提议不错但是公司不考虑增加这笔生产成本。
2:维护成本增加;对开发人员有一定难度系数。每一个简单的demo当真的放到了生产环境去面对复杂的生产;那么对开发员人要求还是较高的。
主从复制可通过配置,在主库服务器崩溃或者不可用的时候,把请求转移到从库中;因为有binlog日志的存在,对一些误操作也好做数据清洗!(阿里云日志CSV格式的也行)。

二:主从复制同步的原理:

原理其实非常简单:
1.数据库通过bin-log二进制文件,记录下master主库所有sql 操作。
2.读取bin-log文件里面的sql操作。
3.Slave_IO这条线程把binlog操作写到了从库专属的relay-log重做日志。
4.Slave_SQL这条线程,把relay-log重做日志的操作读出来,并按照日志说的操作开始对从库动手动脚。
这就是同步的底层原理(个人理解,如果有误,请告诉我,一起讨论)。

三:主从复制的手把手实操:

这里用Mac电脑上的mysql做主库,Windows系统做从库。注意两台机器一定要关闭防火墙相互ping得通。mysql的主从机制,与什么操作系统毫无关系,一点鸡毛关系都没有,最多就是用惯了的操作系统忽然变就不适应而已,对功能没有半毛钱关系,但是一定一定跟网络会有关系,ping不通,就玩不起。

(1)Mac 主库配置:

Mac系统的mysql重启在这个位置。stop按完后你就会看到按钮变成了start。在修改了配置文件都记得要重启一下mysql。

在这里插入图片描述
在这里插入图片描述

打开iterm登陆本地的数据库做测试

在这里插入图片描述

记住Windows系统mysql配置文件是my.ini; Mac系统的是my.cnf;Mac系统的配置文件固定放在/etc 下面,没有的话要自己创建一个。

03-08
### 主从配置的概念 在IT技术领域,主从配置是一种常见的架构设计模式,用于提高系统的可靠性和性能。这种配置通常涉及两个或多个节点:一个主节点(Master)负责处理写入操作和其他核心任务;而从节点(Slave 或 Replica)则主要用于读取数据备份以及分担查询压力。 #### MySQL主从复制 对于数据库管理系统MySQL而言,在构建高可用性的环境中经常采用主从结构来实现冗余和负载均衡。具体来说: - **主服务器**接收所有的更新请求并将这些更改记录到二进制日志文件中; - **从服务器**通过连接至主服务并读取其binlog事件来进行相应的变更应用,从而保持两者之间的一致性[^3]。 为了设置这样的环境,可以按照如下步骤执行: 1. 修改主库上的`my.cnf`配置文件以启用二进制日志功能,并指定唯一的server-id。 ```ini log-bin=mysql-bin server-id=1 ``` 2. 创建具有适当权限的用户账号供slave用来同步数据流。 ```sql GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` 3. 锁定表防止新的事务发生直到完成初始的数据快照导出过程。 ```sql FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; -- 记录下File名与Position位置 UNLOCK TABLES; ``` 4. 使用mysqldump工具获取当前master端完整的schema定义及其内容作为初次加载的基础素材传递给slaves侧导入。 5. 设置好各台副机的相关参数选项比如指向哪个上游源、认证凭证等信息之后启动IO线程去拉取最新的增量变动情况再经由SQL进程解析重放出来达到最终一致的状态即可。 ```bash CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replica_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='recorded_file_name', MASTER_LOG_POS=position_number; START SLAVE; ``` 以上就是关于如何建立一套简单的基于MySQL平台之上实施主从关系的方法概述。 #### Nginx 高可用集群中的主从角色 当涉及到Web服务器如Nginx时,“主从”的含义略有不同。这里指的是在一个分布式部署方案里存在一台或多台机器扮演着领导者的身份——即所谓的“主”,它们承担起对外提供HTTP(S)接口的任务;与此同时还有若干数量的工作单元被安排成跟随者也就是所说的“从”。这类场景下的典型应用场景之一便是利用Keepalived软件配合VIP机制达成自动故障转移的效果确保业务连续不间断运行[^4]。 例如,可以通过下面的方式验证是否已经正确设置了Nginx的HAProxy双活网卡绑定: ```shell ip a | grep 172.31.0.152 # 检查是否有该地址对应的网络接口处于活动状态 curl http://172.31.0.152/ # 尝试向此IP发起GET请求测试连通状况 ``` 如果一切正常的话应该能够顺利返回预期的结果页面证明整个链路畅通无阻。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值