首页 > 数据库 >【MySQL数据库】 MySQL主从复制

【MySQL数据库】 MySQL主从复制

时间:2024-05-28 17:59:22浏览次数:26  
标签:bin 主从复制 slave log 数据库 MySQL master mysql

MySQL主从复制


MySQL主从复制

主从复制与读写分离的意义

企业中的业务通常数据量都比较大,而单台数据库在数据存储、安全性和高并发方面都无法满足实际的需求,所以需要配置多台主从数据服务器,以实现主从复制,增加数据可靠性,读写分离,也减少数据库压力和存储引擎带来的表锁定和行锁定问题。

主从数据库实现同步(主从复制)

什么是主从复制?简单来说就是在主服务器上执行的语句,从服务器执行同样的语句,在主服务器上的操作在从服务器产生了同样的结果。

主从复制的基本过程如下:

  • Master(主数据库)将用户对数据库更新的操作以二进制格式保存到BinaryLog日志文件中。

  • Slave(从数据库)上面的IO进程连接上Master, 并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容。

  • Master接收到来自Slave的IO进程的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave 的IO进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置。

  • Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master “我需要从某个bin- log的哪个位置开始往后的日志内容,请发给我”。

  • Slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay- log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。

在这里插入图片描述

三台mysql服务器搭建主从复制,要求不可以用root帐号同步,要求第三台服务器在测试过1、2的主从复制之后进行主从复制配置

# 0.架构规划
192.168.99.116 master 主节点
192.168.99.117 slave1 从节点
192.168.99.118 slave2 从节点
# 1.修改mysql的配置文件
 vim /etc/my.cnf
# 2.分别在配置文件中加入如下配置
mysql(master):
server-id=1
log-bin=mysql-bin
log-slave-updates
slave-skip-errors=all

mysql(slave1):
server-id=2
log-bin=mysql-bin
log-slave-updates
slave-skip-errors=all

mysql(slave2):
server-id=3
log-bin=mysql-bin
log-slave-updates
slave-skip-errors=all

# 3.重启mysql服务
systemctl restart mysqld
# 4.登录mysql执行如下命令检测配置是否生效
SHOW VARIABLES like 'server_id';

在这里插入图片描述

# 5.登录master节点执行如下命令
show master status;
create user 'namida' @'localhost' identified by 'Namida@123';

在这里插入图片描述

主数据库授权

 grant all privileges on *.* to 'namida'@'%' identified by 'Namida@123' with grant option;

# 6.登录从节点执行如下命令:
change master to
master_host='192.168.99.116',
master_user='namida',
master_password='Namida@123',
master_log_file='mysql-bin.000006',
master_log_pos=454;
# 7.开启从节点
start slave;
#关闭 stop slave;

在这里插入图片描述

# 8.查看从节点状态
show slave status\G;

slave1:
在这里插入图片描述
slave2
在这里插入图片描述

# 9.通过客户端工具进行测试

在master上新建数据库和表
在这里插入图片描述
slave同步数据
在这里插入图片描述

注意:如果出现Slave I/O: Fatal error: The slave I/O thread stops because master and slave have
equal MySQL server UUIDs; these UUIDs must be different for replication to work.
Error_code: 1593错误,请执行如下命令,rm -rf /var/lib/mysql/auto.cnf删除这个文件,之所以会出现这样的问题,是因为我的从库主机是克隆的主库所在的主机,所以auto.cnf文件中保存的UUID会出现重复.

在这里插入图片描述

标签:bin,主从复制,slave,log,数据库,MySQL,master,mysql
From: https://blog.csdn.net/qq_18296979/article/details/139268469

相关文章

  • 调用mybatisPlus的 Iservice中的save方法,后台日志打印出来Insert语句,但是没插入到数据
    问题:调用mybatisPlus的Iservice中的save方法,后台日志打印出来Insert语句,但是没插入到数据库表中;一共向两个表中插入数据;weather,向天气表中插入数据成功,但是在异步任务中向三方同步日志表中 third_request_log是只打印出了成功Insert语句和参数,但是实际未插入成功:代码如下:......
  • 金融核心系统数据库升级路径与场景实践
    走向现代数据架构,数据库成为金融数字化转型关键环节数字化转型的本质是利用数据,重塑传统业务与组织模式,构建企业的新型竞争力。随着数字经济时代的到来,数据量正在从TB级跃升至PB级、甚至ZB级。根据IDC测算,我国数据总量预计2025年将高达48.6ZB,占全球总量的27.8%。如今数据总量......
  • MySQL常见问题解答:初学者常遇到的疑惑与解决方案
    MySQL是一种常用的关系型数据库管理系统,用于存储和管理大量的数据。对于初学者来说,可能会遇到一些问题和困惑。下面是一些常见问题的解答和解决方案:1.安装和配置MySQL您可以按照以下步骤进行操作:1.1下载MySQL安装包:您可以从MySQL官方网站MySQL::下载MySQL社区服务......
  • Springboot计算机毕业设计学生考勤管理微信小程序【附源码】开题+论文+mysql+程序+部
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,高校教学管理日益向数字化、智能化方向转变。传统的考勤管理方式不仅效率低下,而且容易出现误差,已无法满足现代高校管理的需求......
  • Mybatis的mapper文件模糊查询TDengine数据库
    在mapper文件中使用#{}时会自动添加单引号,无法拼接使用%进行模糊查询,可以使用<bind>标签。MyBatis的标签用于创建一个新的变量,并将其绑定到上下文中。这通常用于创建复杂的SQL片段,这些片段可能包含从多个参数中组合而成的值。以下是<bind>标签的一个简单示例:<selectid="......
  • mysql 存储过程返回更新前记录
    在数据库管理中,有时候我们需要在执行更新操作后,能够获取到更新前的数据记录,以便进行数据对比或者回滚操作。MySQL的存储过程可以帮助我们实现这一需求。本文将深入浅出地讲解如何通过MySQL存储过程获取更新前的记录,并提供具体的代码示例。什么是存储过程存储过程是预编译......
  • 既安装MySql5 又 安装 MySql 8 ;(windows)
    既安装MySql5又安装MySql8;(windows) 已经安装了 mysql5后,再 安装 mysql8;1.下载 mysql8,解压,如下图,放在 自己想要的指定 路径下;  my.ini文件内容 如下:[mysqld]#设置3305端口port=3305#设置mysql的安装目录basedir=C:\ProgramFiles\MySQL8\mysql8#......
  • MySQL社区版本没有自带审计功能,所以基于MySQL8.0.33版本容器运行的MySQL自行安装插件
     因为MySQL社区版本没有自带审计功能,所以基于MySQL8.0.33版本容器运行的MySQL自行安装插件1.查看Mysql是否安装过audit_log插件SELECT*FROMinformation_schema.PLUGINSWHEREPLUGIN_NAMELIKE'%audit%'; 2.下载PerconaServerforMySQL,地址为 Installwithbinar......
  • python处理SQLite数据库
    1.前言数据库非常重要,程序的数据增删改查需要数据库支持。python处理数据库非常简单。而且不同类型的数据库处理逻辑方式大同小异。本文以sqlite数据库为例,介绍一下python操作数据库的方法。pythonsqlite3官方文档 注:Python操作mysqlite可以参照python&mysql基本使用2......
  • 向量数据库HNSW算法
    向量数据库构建好embedding后,需要通过相关算法进行检索,它常用到的相似性搜索算法有HNSW,HNSW算法是NSW算法改进而来,它是属于ANN算法中不同类别的图类别中的一种。    节点与节点之间的连接方式可以形成3类图:正则图,随机图,正则和随机结合图(小世界),如下图1:1.正则图    在......