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

news2024/11/16 13:43:08

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.coloradmin.cn/o/1684563.html

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

相关文章

【运维心得】双WAN配置的一个误区

目录 双WAN配置及优势 实际案例 解决之道 最后总结 双WAN配置及优势 什么是双WAN配置&#xff0c;这里就不多赘述&#xff0c;简单的说&#xff0c;首先你要有一台支持双WAN口的路由器&#xff0c;目前大多数企业级路由器都具备了这个功能。甚至有些家用路由器也有此类功能…

.gitignore配置以及解决文件不生效

.gitignore配置 新建.gitignore文件 文件内容如下&#xff1a; ###################################################################### # Build Tools.gradle /build/ !gradle/wrapper/gradle-wrapper.jarnbsdk/ logs/target/ !.mvn/wrapper/maven-wrapper.jar##########…

notepad++ 批量转所有文件编码格式为UTF-8

1、安装notepad及PythonScript_3.0.18.0插件 建议两者都保持默认路径安装x64版本&#xff1a; 阿里云盘分享https://www.alipan.com/s/xVUDpY8v5QL安装好后如下图&#xff1a; 2、new Script&#xff0c;新建脚本&#xff0c;文件名为ConvertEncoding 3、自动打开脚本&#xff…

Acrobat Pro DC 2024 Mac软件安装包下载PDF2024 Mac安装教程

安装 步骤 1&#xff0c;双击打开下载好的安装包。 2&#xff0c;选择acrobat dc installer.pkg双击启动安装程序。 3&#xff0c;点击继续。 4&#xff0c;点击继续。 5&#xff0c;点击继续。 6&#xff0c;点击安装。 7&#xff0c;输入电脑密码。 8&#xff0c;软件安装中…

Web Speech API(1)—— SpeechRecognition

Web Speech API 使你能够将语音数据合并到 Web 应用程序中。Web Speech API 有两个部分&#xff1a;SpeechSynthesis 语音合成&#xff08;文本到语音 TTS&#xff09;和 SpeechRecognition 语音识别&#xff08;异步语音识别&#xff09;。 SpeechRecognition 语音识别通过 S…

由于找不到mfc140u.dll,无法继续执行代码如何解决

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是电脑找不到mfc140u.dll文件。这个问题可能会导致程序无法正常运行或系统崩溃。为了解决这个问题&#xff0c;本文将介绍5种修复方法&#xff0c;帮助大家快速恢复电脑的正常运行。 一&#x…

SD-WAN EVPN基本原理

SD-WAN EVPN是一种用于Overlay业务网络和底层传输网络分离以及业务网络路由和传输网络路由分离的VPN技术。SD-WAN EVPN技术采用类似于BGP/MPLS IP VPN的机制&#xff0c;通过扩展BGP协议&#xff0c;使用扩展后的可达性信息&#xff0c;使不同站点的底层传输网络互通&#xff0…

rocketmq 学习二 基本概念

教程&#xff1a;基本概念 | RocketMQ 视频教程 https://www.bilibili.com/video/BV1d5411y7UW?vd_sourcef1bd3b5218c30adf0a002c8c937e0a27 版本&#xff1a;5.0 一 基本概念 1.1 生产者/Producer 1.1.1 定义 消息发布者。是构建并传输消息到服务端的运行实体。…

php之web开发

目标 实现一款具有常用大部分功能的WEB应用&#xff0c;并初步了解WEB漏洞原理 登录功能&#xff1a; 1、基于前端的登录功能 <!DOCTYPE html> <html> <head> <title>简单登录功能</title> </head> <meta charset"UTF-8"…

yaml文件格式详解 及 k8s实战演示

目录 一 k8s 支持的语言格式 1&#xff0c;YAML 语法格式 2&#xff0c;查看 api 资源版本标签 二 k8s 运行nginx pod实例 yaml文件 具体讲解 1&#xff0c;写一个yaml文件demo 2&#xff0c;deployment 管理nginx 的yaml 文件 3&#xff0c;创建资源对象 4&#…

BGP(一)边界网关协议

BGP协议基础 路由分类 直连路由 非直连路由&#xff08;间接路由&#xff09; 静态路由动态路由 IGP&#xff1a;内网网关路由协议&#xff08;在企业内部或数据中心内部使用&#xff09; DV&#xff1a;距离矢量路由协议RIP&#xff08;v1/v2&#xff09;IGRP——网络直径&…

【超全干货】一文讲清什么是全民分销?怎么做好全民分销?

一、什么是全民分销&#xff1f; 全民分销&#xff0c;作为新时代营销模式的代表之一&#xff0c;是基于互联网尤其是社交媒体平台兴起的一种分销策略。它打破了传统零售与电子商务的界限&#xff0c;允许任何个人&#xff0c;无论是否为专业销售人员&#xff0c;都能成为品牌…

JJJ:ubuntu修改静态ip

一、IP变化的原因 1.DHCP协议 虚拟机系统(Ubuntu、CentOS、UOS等Linux系统)启动后&#xff0c;加入本地局域网网络时&#xff0c;会向本地网络申请租约一个IP地址&#xff0c;租约时长不定。我这里租约时间短到只有1小时左右就更换一次IP地址。 二、解决方法&#xff1a;手动…

英语学习笔记20——Look at them!

Look at them! 看看他们&#xff01; 词汇 Vocabulary big a. 大的&#xff08;尺寸&#xff0c;年龄&#xff0c;音量……&#xff09; 搭配&#xff1a;big cheese 大人物    big mouth 大嘴巴&#xff08;传话的人&#xff09;    big talker 吹牛的人 例句&#xf…

(六)Spring教程——Spring IoC容器(中)

(一)Spring教程——Spring框架简介 (二)Spring教程——Spring框架特点 (三)Spring教程——依赖注入与控制反转 (四)Spring教程——控制反转或依赖注入与Java的反射技术 (五)Spring教程——Spring IoC容器&#xff08;上&#xff09; (六)Spring教程——Spring IoC容器(中) (七)…

Milvus的执行引擎Knowhere

前言 本文将会介绍Knowhere这个概念&#xff0c;它是milvus向量执行引擎的核心。 概览 Knowhere是milvus向量咨询引擎的核心&#xff0c;它将好几个向量相似搜索库聚集在一起&#xff08;包括faiss、hnswlib、annoy&#xff09;。Knowhere也被设计支持异构计算。它控制在什么…

如何使用WindowsSpyBlocker防止Windows系统被恶意监控和跟踪

关于WindowsSpyBlocker WindowsSpyBlocker是一款功能强大的Windows系统安全防护工具&#xff0c;该工具基于Go语言开发&#xff0c;WindowsSpyBlocker以一个单独的可执行程序发布&#xff0c;可以帮助广大用户防止自己的Windows系统被恶意监控和跟踪。 WindowsSpyBlocker能够利…

使用 LlamaParse 进行 PDF 解析并创建知识图谱

此 Python 笔记本提供了有关利用 LlamaParse 从 PDF 文档中提取信息并随后将提取的内容存储到 Neo4j 图形数据库中的综合指南。本教程在设计时考虑到了实用性&#xff0c;适合对文档处理、信息提取和图形数据库技术感兴趣的开发人员、数据科学家和技术爱好者。 该笔记本电脑的主…

人工智能是“数字鹦鹉”还是有了自我意识?

相关说明 这篇文章涉及到的书籍是《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 部分章节内容可以参考&#xff1a; 理解大语言模型&#xff08;二&#xff09;——从零开始实现GPT-2利用神经网络学习语言&#xff08;四&…

ICRA 2024: NVIDIA 联合多伦多大学、加州大学伯克利分校、苏黎世联邦理工学院等研究人员开发了精细操作的手术机器人

英伟达&#xff08;NVIDIA&#xff09;正与学术研究人员合作&#xff0c;研究手术机器人。 NVIDIA 联合多伦多大学、加州大学伯克利分校、苏黎世联邦理工学院和佐治亚理工学院的研究人员开发了 ORBIT-Surgical&#xff0c;一个训练机器人的模拟框架&#xff0c;可以提高手术团…