MySQL-主从同步

本文介绍了MySQL主从同步,即数据从一个MySQL数据库服务器节点复制到一个或多个从节点。阐述了其应用场景,如读写分离、框架扩展,给出了原理图及操作原则,还说明了实现步骤,包括准备工作、在主从库配置文件中做相应配置等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主从同步

什么是主从同步

MySQL主从同步时指数据可以从一个MySQL数据库服务器节点复制到t一个或多个从节点. MySQL默认采用异步复制方式, 这样的从节点不用一直访问主数据库来更新自己的数据, 数据的更新可以izai远程连接上进行, 从节点可以复制主数据库中的所有数据库或者特定的数据库, 或者特定的表.

应用场景

读写分离

在开发工作中,有时候会遇见某个sql语句需要锁表,导致暂时不能使用读的服务,这样就会影响现有业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。当读的压力增加时,也可以通过配置多个从数据库,一起分担读取数据的压力,提高系统的稳定性。

框架扩展

随着系统中业务访问量的增大,如果是单机部署数据库,就会导致UO访问频率过高。有了主从复制,增加多个数据存储节点,将负载分布在多个从节点上,降低单机磁盘/0访问的频率,提高单个机器的/0性能。

原理图

主从同步原理图
主从同步后的操作原则:
主数据库一般只负责做增删改操作,极少负责查询,从数据库只负责做查询,不负责增删改操作,此时主数据库中数据的变动会通过某种方式,自动同步到所有的从数据库中,最终保持数据一致
1. Master中开启一个线程,把数据变动记录到一个二进制的旧志文件(binary log)中।
2. Slave中开启一个10线程专门用于读取Master中二进制日志内容,并且把数据写入自己的回放日志文件(relay log)中.
3. Slave中SQL线程去读取回放日志(relay log)的内容,把Master中执行的DML进行回放,完成主从同步
注意:主从同步是有一定延迟的,所以无法保证从数据库中马上能读取到主数据库同步的信息,因此只要业务方法中涉及到写的操作,那么该操作必须在主数据库上执行

实现步骤

准备工作:先让Master和Slave都拥有相同的数据库,并且数据库中的表数据一致
(注意: 本文Master数据库为windows的本地库, Slave数据库为虚拟机中linux的库, 两库版本都为MySQL5.7)
1,在Master的配置文件"my.ini"中, [mysqld]部分做以下配置,开启binary-log

	#配置当前服务器的id
	server-id=1
	#配置二进制日志文件名
	log-bin=master-bin
	#配置记录哪个数据库的日志, 可以多次配置(例: rbac就是要记录的数据库)
	binlog-do-db=rbac

然后重启MySQL服务器后,再次登录进去看使用SQL命令查看信息,显示以下内容及表示第一步成功了

	--查看主服务器状态 
	show master status;
	--注意:bin-1og的文件名会随着主服务器的重启发送变化

show master status;
2,在Master数据库中新建一个新户专门用于做主从同步(图形化界面操作或SQL命令操作, 二选一)

	-- 2.1使用图形化界面来操作

在这里插入图片描述
在这里插入图片描述

	-- 2.2使用SQL来操作
	-- 创建用户slave用于主从同步,并授予rbac数据库操作权限
	GRANT ALL ON rbac. To 'slave'a'%' IDENTIFIED BY '11
	-- 授予主从同步权限,该权限是一个全局的权限
	GRANT replication slave ON *.* To 'slave'a'%"
	-- 刷新权限
	flush privileges

3,在Slave的配置文件中mysqld部分做以下配置,然后重启服务器.

	#配置从服务器id,必须唯一不能重复
	server-id=2
	#回放哪个数据库的日志,可以多次配置
	replicate-do-db=rbac

linux中重启mysq则需要用到命名: service mysqld restart
linux中mysq配置文件的默认路径是: /etc/my.cnf

4.登录Slave中执行SQL

	-- 设置主服务器的信息
	CHANGE MASTER TO
	MASTER_HOST='master的ip',
	MASTER_USER='主从操作的账号',
	MASTER_PASSWORD='密码',
	MASTER_LOG_FILE='bin-log的文件名',
	MASTER_LOG_POS=日志长度位置
	
	-- 如果从服务器已经开启了主从同步则需要先关闭,才能执行上面的配置 
	stop slave
	
	-- 开启主从同步 
	start slave

	-- 查看从服务器状态 
	show slave status
	-- 看到Slave_IO_Running和Slave_SQL_Running都为YES表示成功了
	-- 如果有错误,请查看对应的Last-Error_Log

以上操作成功的情况下, 此时MySQL的主从同步已经配置完成, 下一步则需要在所需项目中进行读写分离.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值