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文件然后配置到从数据库中,然后再进行主从配置

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机操作系统核心组件

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天给大家讲讲操作系统。 操作系统核心组件 用户借助于一个或多个应用程序与操作系统进行交互&#xff0c;常常是通过一个称为shell的特殊应用程序进行的&#xff0c;shell也叫作命令解释器。105今天的大多…

SQL——SELECT相关的题目

目录 197、上升的温度 577、员工奖金 586、订单最多的客户 596、超过5名学生的课 610、判断三角形 620、有趣的电影 181、超过经理收入的员工 1179、重新格式化部门表 1280、学生参加各科测试的次数 1068、产品销售分析I 1075、项目员工I 1084、销售分析III 1327、列出指…

Qt 报错总结 No suitable kits found

目录 “No suitable kits found” 解决 解决方法参考&#xff1a; chatGPT辅助解决QT构建报错error: multiple target patterns 我的解决方法&#xff1a;把语言设置为空 “No suitable kits found” 解决 没有找到合适的kits套件&#xff0c;在安装Qt Creator时没有安装Min…

程序员做推广?我劝你别干

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 这是卢松松会员专区&#xff0c;一位会员朋友的咨询&#xff0c;如果你也有自研产品&#xff0c;但不知道如何推广&#xff0c;一定要阅读本文!强烈建议收藏关注&#xff0c;因为你关注的人&#xff0c;决定你看到的…

Ubuntu切换内核版本

#安装内核安装工具 sudo apt-get install software-properties-common sudo add-apt-repository ppa:cappelikan/ppa sudo apt-get update sudo apt-get install mainline#安装指定内核版本(有些版本并不能安装成功) mainline install 5.14.10#更新GRUB配置 sudo update-grub#查…

Linux 软件包管理器 yum的下载、功能介绍及使用

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;青果大战linux 总有光环在陨落&#xff0c;总有新星在闪烁 Linux下的三种软件安装方…

burpsuite抓包响应报文乱码

1、响应报文中的中文信息乱码 2、解决办法 3、设置成功后重新发起请求

储油罐智控:ThingsBoard网关实现液位温度精准监测

储油罐是采油、炼油企业储存油品的重要设备&#xff0c;对储油罐液位、温度的实时数据监测对企业的库存和安全管理有着重大意义。 场景 对于企业&#xff0c;尤其是加油站来说&#xff0c;高效的罐体液位、温度监测对于优化燃油库存、防止短缺或过剩至关重要。不准确的燃油液位…

05Django项目--前端公共文件和其他html文件的适配

对应视频链接点击直达 Django项目--前端公共文件和其他html文件的适配 对应视频链接点击直达前端页面准备Pubilc页面设置 OVER&#xff0c;不会有人不会吧不会的加Q1394006513结语 接着上一节 前端页面准备 为了方便大家更好的复制&#xff0c;我把整个项目及templates文件夹和…

RabbitMQ(一)概述第一个应用程序

文章目录 概述AMQP和JMS官网安装开始第一个程序 概述 消息队列是实现应用程序和应用程序之间通信的中间件产品 AMQP和JMS 工作体系 官网 https://www.rabbitmq.com/ RabbitMQ是一款基于AMQP、由Erlang语言开发的消息队列产品 安装 # 拉取镜像 docker pull rabbitmq:3.13-m…

运营抖音小店,这件事情每天都需要去做!一个都不能少!

大家好&#xff0c;我是电商小V 咱们的店铺开好之后&#xff0c;然后运营自己的店铺每天需要做好什么事情呢&#xff1f;这个问题是很多新手小伙伴开通抖店之后最关心的问题&#xff0c;咱们今天就来详细的说一下运营抖音小店每天需要做什么呢&#xff1f; 第一点&#xff1a;奖…

commvault学习(8):备份与恢复sql server

1.安装sql server2008r2 安装sql server 2.在客户端添加cv代理mssql server 如果此前的cv代理中没有sql server&#xff0c;那么可以手动再补充 点击setup 添加MSSQL Server 将程序添加到windows防火墙排除表 勾选自动探寻实例 3.备份sql server 3.1配置数据库内容 右击默…

Python操作MySQL实战

文章导读 本文用于巩固Pymysql操作MySQL与MySQL操作的知识点&#xff0c;实现一个简易的音乐播放器&#xff0c;拟实现的功能包括&#xff1a;用户登录&#xff0c;窗口显示&#xff0c;加载本地音乐&#xff0c;加入和删除播放列表&#xff0c;播放音乐。 点击此处获取参考源…

three.js能实现啥效果?看过来,这里都是它的菜(08)

在Three.js中实现旋转动画的原理是通过修改对象的旋转属性来实现的&#xff0c;通常使用渲染循环&#xff08;render loop&#xff09;来更新对象的旋转状态&#xff0c;从而实现动画效果。 具体的原理包括以下几个步骤&#xff1a; 创建对象&#xff1a;首先创建一个需要旋转…

东软联合福建省大数据集团打造“数据要素×医疗健康”服务新模式

5月23日&#xff0c;东软集团与福建省大数据集团有限公司在福州签订战略合作协议。 据「TMT星球」了解&#xff0c;双方将在健康医疗数据要素价值领域展开合作&#xff0c;通过大数据服务&#xff0c;赋能商业保险公司的产品设计和保险两核&#xff0c;打造“数据要素医疗健康…

Superset二次开发之柱状图自定义初始化时Data Zoom数据缩放值

Superset项目柱状图来自Echarts 首先Echarts实现柱状图数据缩放初始化默认值的效果 核心代码 设置Datazoom 的start 和end myChart.showLoading(); $.get(ROOT_PATH + /data/asset/data/obama_budget_proposal_2012.list.json,function (obama_budget_2012) {myChart.hideLo…

工业4.0 企业级云MES全套源码,支持app、小程序、H5、台后管理端

工业4.0 企业级云MES全套源码&#xff0c;支持app、小程序、H5、台后管理端 采用javaspringboot-vue.jsuniapp开发 随着工业4.0的快速发展&#xff0c;制造执行系统&#xff08;MES&#xff09;成为了智能制造的核心。今天&#xff0c;将为大家介绍一款开源的MES系统——MES管…

【每日一题】52.20个机器学习问题 2 (模型部署、实践流程和应用问题)

在上一篇《20个机器学习问答题》中&#xff0c;问题主要围绕机器学习的基础概念和理论知识。 这次&#xff0c;本篇内容针对机器学习的实践和应用继续提出了20个不同的问题。【点击跳转原文】 在实际应用中&#xff0c;机器学习模型的建立流程是怎样的&#xff1f; 机器学习模…

Python代码注释的艺术与智慧

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;注释的必要性 二、注释的误区&#xff1a;不是越多越好 过度注释的问题…

【NumPy】关于numpy.transpose()函数,看这一篇文章就够了

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…