MySQL主从复制配置(读写分离准备工作)

本文介绍了MySQL主从复制的配置过程,以实现数据库的读写分离。首先,讲解了读写分离的原因和原理,接着详细阐述了如何在单机上配置两个数据库实例,包括复制数据库文件、修改配置文件、安装服务等步骤。然后,通过开启日志、创建复制账号、设置主从复制参数和监控状态,最终成功实现了数据同步。最后,通过数据插入测试验证了主从复制的正确性。

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

最近在学习ShardingSphere的分库分表和读写分离,其中读写分离部分涉及到MySql的主从复制,实验成功后在这里记录一下配置流程!

一、读写分离概念

1、读写分离原因:

首先读写分离字面意思就是将数据库的读写操作分开,数据库写操作全部在主数据库完成,随后MySql将数据主从复制后,所有读操作均在从数据库进行完成。因为数据库读操作比较很节省时间,但是写操作非常较耗时,此时如果将数据库读写分开操作进行,就可以避免写入操作时影响读取速度。

2、读写分离原理:
Mysql读写分离首先需要将以前的但数据库改为多数据库之间主从复制,即:一个主数据库用于写入数据,一个会或多个从数据库读取数据。
在这里插入图片描述
而主从复制的原理利用到了mysql中的binlog文件,从数据库监控主数据库的binlog文件,从而实现数据同步。
在这里插入图片描述

二、MySQL主从复制配置

现在让我们简单配置一下mysql的主从复制

1、复制数据库实例至3307端口

因为我们在单机进行测试配置,所以我们先将mysql进行复制,在3307端口新建数据库实例!

第一步:先复制mysql文件

首先我的Mysql目录如下:
在这里插入图片描述
第一步直接复制mysql的所有文件(包括数据文件与数据库本身),因为我们要在3307端口新建实例,所以我们取一个比较好区分的名字3307。
在这里插入图片描述

第二步:修改配置文件my.ini

打开刚刚新复制的数据库主文件,修改my.ini文件中内容,重新指定mysql安装目录和数据存放目录。

[mysqld]
# 设置3307端口
port = 3307
# 设置mysql的安装目录
basedir=D:\work\mysql\MySQL-3307
# 设置mysql数据库的数据的存放目录
datadir= D:\work\mysql\Data-3307
# 设置数据库ID(主库与从库不重复即可)
server_id = 2

在这里插入图片描述

第三步:在windows中安装数据库服务

在配置完成后,我们就需要将新数据库安装到windows服务中以便于我们日后的使用!

mysqld install mysql3307 --defaults-file="D:\work\mysql\MySQL-3307\my.ini"

在这里插入图片描述

注意:

  • 一定要使用管理员权限安装
  • 要切换到数据库文件的bin目录下
  • mysql3307为windows服务的名称,可以修改
  • 安装时要指定刚刚修改的配置文件,my.ini

可以看到成功安装!

如果我们安装错误,还可以使用如下命令删除windows服务,删除后重新安装即可!

sc delete 服务名称

在这里插入图片描述

因为新的数据库文件为之前的数据库文件复制而来,所以用户名密码等其他设置完全相同,测试联接即可!

在这里插入图片描述
至此新建数据库操作已全部完成!

2、配置主从复制

接下来让我们分别设置两个数据库,开启主从复制

第一步:开启数据库Log
在这里插入图片描述
分别在主数据库,从数据库开启数据库binlog,并设置不同的数据库ID

log-bin=mysql-bin
server_id=1

注意:log-bin选项必须配合server_id使用,否则会无法启动

第二步:新建账号用于主从复制
我们新建一个账号专门用于数据库主从复制(不新建,使用root账号也可以,但是不规范)

新建/删除账号命令格式:

create user "username"@"host" identified by "password"; #新建
drop user 'username'@'host'; #删除

我们新建一个名为db_sync的账号,并刷新,由于命令比较固定,所以直接复制以下命令即可:

GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync'; #新建
FLUSH PRIVILEGES; #刷新

第三步:查看主数据库log文件

账号设置后,我们要查询主数据库的log文件位置:

show master status;

在这里插入图片描述
此时我们可以看到,文件为mysql-bin.000004位置592,我们需要记住这个位置,以便于从数据库进行监控。

第四步:设置从数据库的数据同步

注意,以下操作为从数据库的操作

首先停止从数据库的同步操作:

STOP SLAVE;

然后修改主从复制的一些信息:

CHANGE MASTER TO
master_host = 'localhost', #主服务器地址
MASTER_PORT = 3306, #主服务器端口号
master_user = 'db_sync', #同步用户
master_password = 'db_sync', #密码
master_log_file = 'mysql-bin.000004', #日志文件名
master_log_pos = 592; #文件位置

启动复制:

START SLAVE;

在这里插入图片描述
注意红色位置的修改!

第五步:查看是否同步成功

使用命令查看数据同步是否成功:

show slave status

在这里插入图片描述
如果配置成功,则Slave_IO_Running与Slave_SQL_Running会均为YES(红色剪头),否则为设置失败。

寻找错误日志文件,查找原因(在数据文件夹下的.err文件):
在这里插入图片描述
可以看到,因为我数据库是直接复制而来,所以UUID相同,接下来尝试修改:
在这里插入图片描述
目录为数据目录下的auto.cnf文件,打开后将UUID修改为不同即可!
在这里插入图片描述
重启服务,查看是否同步成功!
在这里插入图片描述

此时数据已经同步成功!

第六步:数据插入测试

接下来,我们使用真实数据来测试数据库同步是否成功!

注意:插入操作一定要向主数据库进行,否则会导致数据不同步

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

数据同步全部完成!

接下来就可以进行读写分离的操作,剩余内容请关注后续文章~

本文章内容全部为我的学习笔记,感谢大家查看~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值