mysql数据库主从复制,搭建从库

1 期望效果

假设我们现在有两个服务器,两个服务器都有数据库,然后我们命名一个叫主数据库Master),一个叫从数据库Slave

  1. 数据备份和容灾:通过主从复制,可以将主数据库的数据复制到一个或多个从数据库中。这样,在主数据库发生故障或数据丢失时,可以使用从数据库作为备份进行数据恢复和容灾操作。

  2. 高可用性:通过主从复制,可以实现数据库的高可用性。当主数据库发生故障时,可以将一个从数据库提升为新的主数据库,继续提供数据服务,从而避免系统的停机时间。

  3. 读写分离:主从复制可以将读操作和写操作分离,从而提高系统的读取性能。读操作可以在从数据库上进行,从而减轻主数据库的负载。这对于读多写少的应用场景非常有用。

  4. 负载均衡:通过在从数据库上分发读操作,可以实现负载均衡,将读请求分摊到多个数据库服务器上。这可以提高系统的并发处理能力和性能。

  5. 数据分析和报告:通过从数据库复制主数据库的数据,可以在从数据库上进行数据分析、报告生成等工作,而不会影响主数据库的性能。这对于生成复杂的查询报告和大数据分析非常有用。

  6. 数据分发:主从复制还可以用于将数据传输到不同地理位置的数据库服务器,从而实现数据分发和数据共享的需求。

2实现原理

主从复制的实现原理如下:

  1. 主数据库(Master):主数据库是数据的源头,负责处理客户端的写操作(如插入、更新、删除等)。在主数据库上有一个特殊的进程,称为二进制日志(binary log)。这个进程负责将所有的写操作记录到二进制日志文件中。

  2. 从数据库(Slave):从数据库是主数据库的副本,它负责接收主数据库的写操作并将其应用到自己的数据库中。在从数据库上运行一个特殊的进程,称为复制进程(replication process)。复制进程连接到主数据库,并从主数据库获取二进制日志文件。它解析二进制日志中的写操作,并在从数据库上执行相同的操作,以保持数据的一致性。

3搭建主从数据库

首先两个要有服务器

节点ip数据库角色
节点147.92.114.208Mysql主服务器
节点2121.196.217.190Mysql从服务器

开始着手实现配置主从数据库

3.1 服务器端口设置

服务器上的数据库默认都是在3306端口的,所以如果想要自己的数据库能够在其他地方登录,就要开放指定的3306端口和打开防火墙,可以通过黑窗口开放。假设是Linux服务器上。

  1. 添加防火墙规则:允许 TCP 协议通过 3306 端口。

    sudo firewall-cmd --permanent --add-port=3306/tcp
  2. 重新加载防火墙规则

    sudo firewall-cmd --reload
  3. 启用并启动防火墙服务:

    sudo systemctl enable firewalld
    sudo systemctl start firewalld

    我用的是在阿里云上的服务器,所以直接在阿里云的官网上设置的开放端口

主服务器和从服务器都要开设这个端口,当能够在自己的本机通过navicat连接到服务器上的mysql那就是成功了。

3.2主服务器配置

1、vim /etc/my.cnf打开配置,修改部分内容 找到这个几个内容,记录一下,一般不用改

vim /etc/my.cnf 

也可以在下面加上 read-only = 0 这个参数指定了从服务器的只读模式,1代表只读 0 代表读写,一般默认就是0,所以我就没写

如果需要修改要进行重启mysql

systemctl restart mysqld 

2、登录mysql,注意这里一定要登录有最高权限的那个mysql账号(一般账号是root),不然后续操作进行不了

mysql -uroot -p<密码>

3、登录上后就创建一个用于远程连接的账号,并授予主从复制的权限

#创建用户,并设置密码,该用户可以在其他主机连接该mysql服务。create user '<用户名>'@'<端口>' identified with mysql_native_password by '<密码>';示例,用户名testUser,密码@Rr123,%的意思是可以在任意主机连接create user 'testUser'@'%' identified with mysql_native_password by '@Rr123';#为这个账号分配主从复制的权限grant replication slave on . to 'testUser'@'%'

4、查看此时主数据的binlog日志状态

show master status ;

下面的数据意思是当前数据库正在写入的二进制文件叫mysql-bin.000009,当前写到的位置是1291 这两个数据是需要记录的,后续要用,ok从现在开始主库就配置好了,在从库配置好之前就不要动主库了。

3.3 从服务器配置

1、vim /etc/my.cnf; 同样先打开配置进行设置

log-bin=slave-a-bin:这个参数指定了二进制日志文件的名称前缀

binlog_format=mixed:这个参数定义了二进制日志的格式,要和主数据库的格式一样

server-id = 2:这个参数指定了服务器的唯一标识符,不能和主数据库一样

read-only = 1:这个参数指定了从服务器的只读模式,1代表只读 0 代表读写

从数据设置只读模式,可以使数据库更安全,不会出现从数据库中数据比主数据库内容多的情况

修改完配置后要重启mysql服务systemctl restart mysqld

2、从库配置,也就是用从库使用主库刚才配置的账号密码去建立主从配置连接。

​
#mysql 8.0.23及其以上的版本这样操作change replication source to source_host='47.92.114.208', source_user='testUser', source_password='@Rr123', source_log_file='mysql-bin.000009', source_log_pos=1291;#mysql 8.0.23以下的版本这样操作change master to master_host='47.92.114.208',master_user='testUser',master_password='@Rr123',master_log_file='mysql-bin.000009',master_log_pos=1291;​

3、连接成功后开启同步操作

start replica;#mysql 8.0.23及其以后start slave;#mysql 8.0.23之前

4、查看主从同步状态

show start replica;#mysql 8.0.23及其以后show start slave;#mysql 8.0.23之前比如可以show replica status\G;这样写,意思就是把每一列数据转换成每一行,这样看数据更清晰

然后找到下面这两个部分都是yes,就是配好了

5、再往后就可以自己去尝试了,在主库上进行的增删改操作,从库中都会自动复制数据

追加:我主库上本来就有的那部分数据怎么同步?

主从复制只能复制之后配置之后的增删改操作,可以在配置主从复制之前就把主数据中的内容转存sql文件然后配置到从数据库中,然后再进行主从配置

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

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

相关文章

618有什么宠物空气净化器推荐?希喂FreAir Lite宠物空气净化器真实体验

一、宠物空气净化器的必要性 掉毛季又来了&#xff0c;猫咪的毛发满天飞&#xff0c;怎么办&#xff1f;我家里的猫咪一到换毛季就掉满地的毛发&#xff0c;尤其喜欢在家里奔跑打闹&#xff0c;结果整个房间都是毛。为了减少家里空气中的浮毛&#xff0c;你都做过哪些努力呢&a…

关于「公 告」根据中华人民共和国法律,Bing 在中国内地暂停 “搜索自动建议” 功能 30 天

当我看见我们大家都这样我可放心了&#xff0c;我打开电脑搜索图片就发生了。 当我看见我们大家都这样我可放心了&#xff0c;坐等攻城狮修复。

关闭以及启动ubuntu图形界面

关闭以及启动ubuntu图形界面 文章目录 关闭以及启动ubuntu图形界面1. 关闭图形界面2. 打开图形界面 如果你误杀了Xorg进程&#xff0c;需要重新启动图形界面&#xff0c;可以按照以下步骤操作&#xff1a; 1. 关闭图形界面 查看当前启动的图形界面&#xff1a; 使用下面命令…

LeetCode刷题之HOT100之比特位计数

今天把仙剑三看完了&#xff0c;茂茂割肉让人无法释怀&#xff0c;眼泪止不住的流。长卿和紫萱的分离似乎也意味着重逢&#xff0c;这就是他们的宿命吧。怅然若失的感觉席卷全身&#xff0c;哎&#xff0c;做题吧。 1、题目描述 2、逻辑分析 题目要求将整数从0到此元素&#…

【GO基础】1. Go语言环境搭建

Go语言环境搭建 Go的三种安装方式Go标准包安装Windows 安装验证是否安装成功 4.Go的第一个程序 Hello World.go Go的三种安装方式 Go有多种安装方式&#xff0c;可以选择自己适合的。这里介绍三种最常见的安装方式&#xff1a; Go源码安装&#xff1a;这是一种标准的软件安装…

零门槛微调大模型:基于 Ludwig 低代码框架使用 LoRA 技术微调实践

一、Ludwig 介绍 自然语言处理 (NLP) 和人工智能 (AI) 的飞速发展催生了许多强大的模型&#xff0c;它们能够理解和生成如同人类般的文本&#xff0c;为聊天机器人、文档摘要等应用领域带来了革命性的改变。然而&#xff0c;释放这些模型的全部潜力需要针对特定用例进行微调。…

QTextEdit 控件上显示信息:

目录 1. 使用 append 方法: 2. 使用 setPlainText 方法 3.例子&#xff1a; 1. 使用 append 方法: 如果你希望在 QTextEdit 控件上追加显示新的信息&#xff0c;可以使用 append 方法。例如&#xff0c;当你想要追加一行新的日志信息&#xff1a; self.text_edit.append(&…

于ThinkPHP开发的赛事报名小程序

基于ThinkPHP开发的赛事报名微信小程序 功能包括 1、参赛公告 2、会员中心&#xff08;会员注册、登录、成绩查询、资料管理、参赛记录管理&#xff09; 3、个人报名和企业报名 &#xff08;身份证验证防止重复报名&#xff09; 4、培训报名 5、查询是否在库人员&#xff0c;根…

3---版本库和工作区、使用.git管理工作区的文件、HEAD指针和master的关系

一、本地仓库和工作区的概念&#xff1a; 1.1本地仓库——版本库&#xff1a; 本地仓库又称为版本库。版本库是隐藏目录.git&#xff0c;并不是.git所在的目录。版本库不属于工作区。我们不能手动操作.git目录及其中的文件&#xff0c;这样可能会直接破坏版本库。stage(暂存区…

Day21:Leetcode513.找树左下角的值 +112. 路径总和 113.路径总和ii + 106.从中序与后序遍历序列构造二叉树

LeetCode&#xff1a;513.找树左下角的值 解决方案&#xff1a; 1.思路 在遍历一个节点时&#xff0c;需要先把它的非空右子节点放入队列&#xff0c;然后再把它的非空左子节点放入队列&#xff0c;这样才能保证从右到左遍历每一层的节点。广度优先搜索所遍历的最后一个节点…

测试驱动编程(2)进阶单元测试(上)

文章目录 测试驱动编程(2)进阶单元测试&#xff08;上&#xff09;单元测试单元测试正确打开方式各类测试比较 TDD中的单元测试 测试驱动编程(2)进阶单元测试&#xff08;上&#xff09; 单元测试 要打造出出类拔萃的作品&#xff0c;你必须专注于最小的细节 单元测试正确打…

易刷多平台广告掘金挂机脚本,单号一天至少10-30+【挂机脚本+使用教程】

易刷多平台广告掘金挂机脚本&#xff0c;每天单号可以至少获取10-30的收益。我们提供【挂机脚本使用教程】。 项目介绍&#xff1a; 我们今天为大家带来的是一款多平台的掘金脚本。 这款脚本支持25个平台掘金&#xff0c;可以帮助您解决频繁下载其他脚本的问题。 设备需求&am…

浅谈AI大模型的数据特点和应用问题

【摘要】AI大模型的训练、推理及应用落地都需要大量的数据&#xff0c;其数据具有参数和数据量大、质量要求高、行业垂直属性强、资源消耗大等特点&#xff0c;由此带来的个人隐私泄露、数据中毒、数据篡改等数据安全风险已成为业界必须应对的重要议题。目前大模型的规模化应用…

Linux——进程信号

目录 一、信号的理解 二、信号的种类 2.1 标准信号 (1-31) 2.2 实时信号 (通常是34及以上) 三、信号的产生 3.1 用户通过终端产生信号 3.1.1 signal 函数 3.1.2 demo 测试 3.1.3 demo 现象 3.2 通过系统函数产生信号 3.2.1 demo 测试 3.3 由软件条件产生信号 3.3.1…

面向浏览器端免费开源的三维可视化编辑器,包含BIM轻量化,CAD解析预览等特色功能。

ES 3DEditor &#x1f30d;Github地址 https://github.com/mlt131220/ES-3DEditor &#x1f30d;在线体验 https://editor.mhbdng.cn/#/ 基于vue3与ThreeJs&#xff0c;具体查看Doc 主要功能&#xff1a; 模型导入展示&#xff0c;支持OBJ、FBX、GLTF、GLB、RVT、IFC、SEA、3…

如何将Docker容器打包并在其他服务器上运行

如何将Docker容器打包并在其他服务器上运行 我会幻想很多次我们的相遇&#xff0c;你穿着合身的T恤&#xff0c;一个素色的外套&#xff0c;搭配一条蓝色的牛仔裤&#xff0c;干净的像那天空中的云朵&#xff0c;而我&#xff0c;还是一个的傻傻的少年&#xff0c;我们相识而笑…

有没有适合女性做的副业?盘点9个适合女生做的赚钱兼职副业

亲爱的女神们&#xff0c;你们是否也想在忙碌的生活中寻找一些额外的乐趣和收入呢&#xff1f;今天&#xff0c;就为大家揭秘九种特别适合女性的副业&#xff0c;让你在追求美丽的同时&#xff0c;也能轻松赚取零花钱&#xff0c;秒变“小金库”&#xff01; 一、宅富社任务赚钱…

BGP策略实验

BGP策略实验 1.拓扑 2.要求 1.使用配用preva1策略&#xff0c;确保R4通过R2到达192.168.10.0/24 2.用AS Path策略&#xff0c;确保R4通过R3到达192.168.11.0/24 3.配置MED策略&#xff0c;确保R4通过R3到达192.168.12.0/24 4.使用Local Preference策略&#xff0c;确保R1通…

Sentinel的隔离和降级

文章目录 1、概念简介2、FeignClient整合Sentinel2.1、修改配置&#xff0c;开启sentinel功能2.2、编写失败降级逻辑2.3、总结 3、线程隔离&#xff08;舱壁模式&#xff09;3.1、线程隔离的实现方式3.2、sentinel的线程隔离1&#xff09;配置隔离规则2&#xff09;Jmeter测试 …

南加州大学字节提出MagicPose,提供逼真的人类视频生成,实现生动的运动和面部表情传输,以及不需要任何微调的一致的野外零镜头生成。

MagicPose可以精确地生成外观一致的结果&#xff0c;而原始的文本到图像模型(如Stable Diffusion和ControlNet)很难准确地保持主体身份信息。 此外&#xff0c;MagicPose模块可以被视为原始文本到图像模型的扩展/插件&#xff0c;而无需修改其预训练的权重。 相关链接 论文链…