mysql主从复制教程

news2025/1/12 10:55:10

1、介绍

1.1 是什么

主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库

1.2 有什么用

  • 数据备份:通过主从复制,可以将主数据库的数据复制到一个或多个从数据库中,以实现数据备份和灾难恢复。当主数据库出现故障时,可以快速地将从数据库提升为主数据库,并继续提供服务。

  • 负载均衡:通过主从复制,可以将读操作分发到从数据库上,从而减轻主数据库的负载,提高系统的并发能力和性能。

  • 数据分析:通过主从复制,可以将主数据库中的数据复制到从数据库中进行分析,避免对主数据库产生影响。

  • 高可用性:通过主从复制,可以实现数据库的高可用性,当主数据库出现故障时,可以快速地将从数据库提升为主数据库,保证系统的持续可用性。

1.3 原理

1、主从同步的过程中,主库会将所有的操作事件记录在 binlog 中,
2、如果binlog 日志发生了变化,主库生成一个 binlog dump 线程向从库 I/O 线程传送 binlog
3、从库上的 I/O 线程将 binlog 复制到自己的 relay log 中
4、最终由从库中的 SQL 线程读取 relay log 中的事件重放到从库上

在这里插入图片描述

1.4 同步策略

下面是几种常见的MySQL主从同步策略:

  • 异步复制(Asynchronous Replication):主库将变更写入二进制日志(binlog),然后从库异步地读取并应用这些变更。主库不会等待从库的确认,因此效率较高。但在主库故障时可能会丢失一部分数据。

  • 半同步复制(Semi-Synchronous Replication):主库将变更写入二进制日志后,至少一个从库需要确认已收到并写入了这些变更,主库才会认为事务提交成功。这样可以减少数据丢失的可能性,但会增加主库的延迟。

  • 同步复制(Synchronous Replication):主库将变更写入二进制日志后,等待所有从库确认已收到并应用了这些变更,主库才会认为事务提交成功。这样可以确保所有从库与主库的数据完全一致,但会显著增加主库的延迟,并且如果有任何一个从库出现故障或网络延迟,整个系统的性能都会受到影响。

  • 并行复制(Parallel Replication):在MySQL 5.6及以后的版本中引入了并行复制的功能,可以通过多线程并发地将变更发送给多个从库,从而提高复制性能。

选择适合的主从同步策略需要根据具体的业务需求和系统性能来进行权衡。异步复制适用于对数据一致性要求不高,但对性能要求较高的场景;半同步复制适用于对数据一致性和性能都有一定要求的场景;同步复制适用于对数据一致性要求非常高的场景,但会带来较大的延迟。并行复制可以在高负载情况下提升复制性能。

2、部署

1、将主库数据导入从库

1、备份主库
mysqldump -u'root' -p'123456' --all-databases --single-transaction --master-data=2 --flush-logs > /tmp/mysqlbackup/`date +%F_%H-%M-%S`-mysql-all.sql  

2、将数据拷贝到从库服务器
scp /tmp/2020-12-09_13-18-55-mysql-all.sql 192.168.137.101:/tmp/

3、将数据导入从库
mysql -uroot -p'123456' < /tmp/2020-12-09_13-18-55-mysql-all.sql 

2、主库配置

1、添加配置信息,并重启mysql
cat  >> /etc/my.cnf <<EOF 
#服务器 id,随意,但要唯一
server-id = 1  
#二进制文件存放路径
log-bin = mysql-bin 
#参数用于排除自带的数据库。  
binlog-ignore-db = mysql 
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
#二进制日志格式,建议使用ROW格式以获得更好的兼容性和可靠性。
binlog-format = ROW 
EOF

systemctl restart mysqld

2、配置权限账号
CREATE USER 'slave'@'%' IDENTIFIED BY 'Csdn@123';
#授权账号复制权限
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
#刷新配置
FLUSH PRIVILEGES;


3、获取当前二进制日志文件的名称和位置
SHOW MASTER STATUS;

3、从库配置

1、添加配置信息,并重启mysql
cat >>/etc/my.cnf <<EOF
server-id = 2
#不同步相关的库
replicate-ignore-db = mysql 
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema

EOF

systemctl restart mysqld


2、配置主库关系
mysql>change master to master_host='192.168.137.100',master_user='slave',master_password='Csdn@123',master_log_file='localhost-bin.000002',master_log_pos=154;

参数解释:
MASTER_HOST : 设置要连接的主服务器的ip地址     
MASTER_USER : 设置要连接的主服务器的用户名     
MASTER_PASSWORD : 设置要连接的主服务器的密码    
MASTER_LOG_FILE : 设置要连接的主服务器的bin日志的日志名称,即第5步得到的信息  
MASTER_LOG_POS : 设置要连接的主服务器的bin日志的记录位置,即第5步得到的信息,(这里注意,最后一项不需要加引号。否则配置失败)

3、开启同步
start slave;

4、查看启动状态 
mysql>show slave status\G;

下面两项必须都是yes才表示配置成功,否则必须stop slave 检查配置修改正确后再次start slave ,直到都是yes为止

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1373141.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

免费简单好用的 webshell 在线检测:支持 php、jsp、asp等多格式文件

话不多说&#xff0c;直接上图上链接&#xff1a;https://rivers.chaitin.cn/?share3d4f2e8aaec211eea5550242c0a8170c 还是比较好用的&#xff0c;支持 PHP、JSP 文件 webshell 检测&#xff0c;看官方解释文档&#xff0c;引擎使用静态文本特征、骨架哈希、静态语义分析、动…

【Github-Action】GithubAction 环境下,如何将临时生成的文件推送至指定分支。

通过这篇文章你可以掌握如何将github action 环境下临时生成的文件推送至指定分支&#xff0c;并且可以打开利用github开放的api做各种强大或有趣的事情的视野和思路。 如果你对github-action感兴趣&#xff0c;还可以看这篇文章&#xff0c; 这篇文章教会你如何开发Github Act…

多局域网UDP通信测试

今天遇到一个问题&#xff1a; 一台电脑同时连接A、B两个路由器的网络&#xff0c;同时分别收发各自局域网中的消息&#xff0c;是否可行&#xff1f; 理论上可以&#xff0c;测试一下吧 电脑同时连接两个网络 两个网络的网段分别为3和1 在同一个程序中使用两个网络连接的地…

计算机体系结构----计分板(scoreboard)算法

计分板算法简介 计分板记录着所有必要的信息&#xff0c;用来控制以下事情&#xff1a; 每条指令何时可以读取操作数并投入运行&#xff08;对应着RAW冲突的检测&#xff09;每条指令何时可以写入结果&#xff08;对应着WAR冲突的检测&#xff09;在计分板中&#xff0c;WAW冲…

css三大特性

css 三大特性 一、层叠性&#xff1a;css样式冲突采取原则&#xff08;后者覆盖前者&#xff09; 二、继承性&#xff1a;对于部分属性样式会有天生的继承 &#xff08;1&#xff09;字体系列属性 font-family&#xff1a;字体系列 font-weight&#xff1a;字体的粗细 fon…

TS 36.306 V12.0.0

​本文的内容主要涉及TS 36.306&#xff0c;版本是C00&#xff0c;也就是V12.0.0。

鸿蒙Harmony--状态管理器--双向同步@Link详解

你这一生最重要的责任&#xff0c;就是保护好自己脆弱的梦想&#xff0c;熬过被忽略的日子&#xff0c;就轮到你上场了。 如何解决大模型的「幻觉」问题&#xff1f; 目录 一&#xff0c;定义 二&#xff0c;装饰器使用规则说明 三&#xff0c;变量的传递/访问规则说明 四&…

web第一次作业

题1&#xff1a; <form action"#" method"post"><table><tr><td>用户名&#xff1a;</td><td><input type"text" name"UserName" maxlength"20" size"15"></td>…

Windows启动MongoDB服务报错(错误 1053:服务没有及时响应启动或控制请求)

问题描述&#xff1a;修改MongoDB服务bin目录下的mongod.cfg&#xff0c;然后在任务管理器找到MongoDB服务-->右键-->点击【开始】&#xff0c;启动失败无提示&#xff1a; 右键点击任务管理器的MongoDB服务-->点击【打开服务】&#xff0c;跳转到服务页面-->找到M…

C# 使用Fleck创建WebSocket服务器

目录 写在前面 代码实现 服务端代码 客户端代码 调用示例 写在前面 Fleck 是 C# 实现的 WebSocket 服务器&#xff0c;通过 WebSocket API&#xff0c;浏览器和服务器只需要做一个握手的动作&#xff0c;然后浏览器和服务器之间就形成了一条快速通道&#xff1b;两者之间…

机器学习周刊第二期:300个机器学习应用案例集

大家好 前文&#xff1a;机器学习项目精选 第一期 继续分享我最近看过并觉得非常硬核的资源&#xff0c;包括Python、机器学习、深度学习、大模型等等。 1、Python编程挑战 地址&#xff1a;https://github.com/Asabeneh/30-Days-Of-Python 30天Python编程挑战是一个逐步学…

漫画演绎策略设计模式

引言 本篇主要通过一小篇漫画的形式给大家讲讲策略模式&#xff0c;由于策略模式本身不是很难&#xff0c;这里就不花太多的言辞描述了&#xff0c;一起看漫画吧 普通设计 从前有一个妈妈&#xff0c;她有一个叛逆的儿子&#xff0c;妈妈每天除了上下班就是要教育儿子&#…

【前端】使用javascript开发一个在线RGB颜色转换

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是是《前端》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌…

海量数据处理数据结构之Hash与布隆过滤器

前言 随着网络和大数据时代的到来&#xff0c;我们如何从海量的数据中找到我们需要的数据就成为计算机技术中不可获取的一门技术&#xff0c;特别是近年来抖音&#xff0c;快手等热门短视频的兴起&#xff0c;我们如何设计算法来从大量的视频中获取当前最热门的视频信息呢&…

P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布————C++

目录 [NOIP2014 提高组] 生活大爆炸版石头剪刀布题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示 解题思路Code调用函数的Code&#xff08;看起来简洁一点&#xff09;运行结果 [NOIP2014 提高组] 生活大爆炸版石头剪刀布 …

12.22 探探 数分 已HR面

岗位信息 1222 3.30PM 1面 40min 能感觉数据基建还不是很完善 因此 问了一些指标体系的问题还挺多 自我介绍能力考察1.说说你是怎么异常归因的以付费场景项目为例2.归因中如果遇到一个页面同时存在有3个实验在跑 无法归因出数据的异常是哪个改动造成的怎么办&#xff1f;3.讲…

服务器配置SSL证书到nginx基于Fdfs存储服务器或者直接阿里云绑定SSL

1.如果用FDFS存储服务器内置nginx设置SSL证书 1.验证当前nginx是否存在 http_ssl_modulehttp_ssl_module模块 如果存在直接配置就行 server {listen 80 default backlog2048;listen 443 ssl; server_name 域名; ssl_certificate /usr/local/nginx_fdfs/ssl/xxxx.top.crt; ssl…

Linux---gcc编译

目录 前言 一、gcc编译 二、程序的编译过程 三、gcc查看编译过程 1.预处理阶段 2.编译 3.汇编 4.链接 动静态库链接的内容 动静态库链接的优缺点 5.总结记忆 前言 在前面我们学会使用vim对文件进行编辑&#xff0c;如果是C或者C程序&#xff0c;我们编辑好了内容…

嵌入式-Stm32-江科大基于寄存器点亮LED灯

文章目录 前言&#xff1a;一&#xff1a;搭建基于寄存器控制LED的工程二&#xff1a;用江科大的STM32板子实现基于寄存器点亮LED灯三&#xff1a;用非江科大stm32板子实现基于寄存器点亮LED灯道友&#xff1a;一星陨落&#xff0c;黯淡不了星空灿烂&#xff1b;一花凋零&#…

脚本编程游戏引擎会遇到哪些问题

在游戏开发中&#xff0c;脚本编程已经成为了一种非常常见的方式&#xff0c;用来实现游戏逻辑和功能。但是脚本编程游戏引擎也可能会面临一些挑战和问题。下面简单的探讨一下都会遇到哪些问题&#xff0c;并且该如果做。 性能问题 脚本语言通常需要运行时解释执行&#xff0…