百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

干货!在Windows系统搭建MySQL主从复制的环境分享

qiyuwang 2024-10-04 05:06 10 浏览 0 评论

背景

最近在学习用Spring Aop来实现数据库读写分离的功能。

在编写代码之前,首先是要部署好mysql的环境,因为要实现读写分离,所以至少需要部署两个mysql实例,一主一从,并且主从实例之间能够自动同步,因为我的本机内存并不高,所以就打算在windows上直接搭建mysql的主从实例(不想开虚拟机),但这个过程中却遇到了一些麻烦,虽然最后都解决了,但也花费了不少的时间。为了避免以后在同样的事情上浪费时间,同时也方便大家们能复制相同的场景,所以今天就来分享一下搭建环境的过程。

环境说明

本机地址:127.0.0.1(localhost)

mysql版本:mysql-5.7.28-winx64

主库服务名:master,端口3307

从库服务名:slave,端口3308

安装并配置主库master

下载

首先是下载mysql,直接到官网下载zip版的安装包,这里建议下载比较新的版本,比如笔者的版本是5.7,这也是网上很多大神的建议,

解压并创建my.ini文件

解压安装包,命名文件夹为master,进入文件夹,创建一个名为my.ini的空文本,

文本中的内容如下:

[client]
# 端口号,默认是3306,同一个环境下不同的mysql实例端口号不能相同
port=3307
default-character-set=utf8

[mysqld] 
#主库配置
server_id=1
log_bin=master-bin
log_bin-index=master-bin.index

# 设置为自己MYSQL的安装目录
basedir=D:/software/mysql/master
# 设置为MYSQL的数据目录,data文件夹由mysql自动生成
datadir=D:/software/mysql/master/data
port=3307
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER

# 开启查询缓存
explicit_defaults_for_timestamp=true

ps:配置内容中的目录地址要用斜杠,不能用反斜杠,否则等下安装服务会报错找不到目录。

安装master库的服务

1、cmd管理员身份运行,进入master的bin目录下,

2、执行初始化的命令:

mysqld --initialize --user=mysql --console

如果出现类似下面的提升就显示初始化成功,初始化成功会系统自动生成data文件夹,并生成初始密码,

3、初始化完成后,执行安装服务的命令:

mysqld --install master --defaults-file="D:\software\mysql\master\my.ini" 

master为服务的名称,--defaults-file为ini文件的路径,出现"Service successfully installed."即为成功

注:如果安装失败的话,看看是否没有管理员身份运行cmd。

正常来说,安装完master的服务后我们就可以启动mysql了,然而这里有个坑,就是直接mysql后会报错,因为我们还少配置了一个地方,就是注册表中master服务的信息。

所以在未修改注册表之前,建议先别执行启动命令。

4、修改注册表

按win+R,在弹框中输入regedit打开注册表,找到master服务,路径是HKEY_LOCAL_MACHINE–>SYSTEM–>CurrentControlSet–>Services–>master,修改ImagePath

D:\software\mysql\master\bin\mysqld --defaults-file=D:\software\mysql\master\my.ini master

路径就对应自己安装的master数据库文件夹即可。

5、启动服务

依然是在bin目录下执行启动服务,命令是net master start,启动成功后会出现如下的提示:

6、进入mysql

进入mysql的命令是:mysql -u root -p ,但因为我们改了端口号,所以命令要改为mysql -u root -P3307 -p,然后输入刚才生成的初始化密码即可进入mysql,

由于这个初始密码实在是太蛋疼,所以我们最好更改密码,更改语句为:

set password=password('新密码');

例如LZ设置的密码为123456,

这样就成功设置了root用户的密码了,然后我们可以用Navicat等图形化工具来操作连接数据库了,

安装从库slave

从库的安装步骤和主库一样,只是my.ini中修改对应的配置即可。

[client]
port=3308
default-character-set=utf8

[mysqld] 
#从库配置
server_id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

# 设置为自己MYSQL的安装目录 
basedir=D:/software/mysql/slave
# 设置为MYSQL的数据目录 
datadir=D:/software/mysql/slave/data
port=3308
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
#开启查询缓存
explicit_defaults_for_timestamp=true

主从库实现关联

两个库都安装好了,我们就可以来操作主从库之间的关联,实现主从之间的复制,

先登录主库,输入 show master status;

可以发现主库中生成了一个二进制的文件,这是一个日志文件,从库关联它就可以实现和主库的同步了。

登录从库,执行下面的命令,

change master to master_host='127.0.0.1',master_port=3307,master_user='root',master_password='123456',master_log_file='master-bin.000001',master_log_pos=0;

不难看出上面都是主库的配置信息,成功后执行命令start slave 开启主从复制

完成之后,我们简单验证下,在master库中创建一个数据库,名字就叫test,

然后slave中也生成了同样的数据库test,

这样,主从复制就成功实现了。

后记

值得说明的是,因为两个库只是做了单向关联,如果往从库中写数据的话,主库是无法同步的。所以从库只能用于读取数据,而主库既能写,也能读,当然,多数情况都是用于写数据,读取数据一般都是从库获取,这样能有效减轻主库的压力,也就是我们常说的读写分离。

喜欢文章请多多点赞评论转发,关注小编,后续小编会再带来更丰富的学习内容更新,希望大家能够喜欢~~~

相关推荐

# 安装打开 ubuntu-22.04.3-LTS 报错 解决方案

#安装打开ubuntu-22.04.3-LTS报错解决方案WslRegisterDistributionfailedwitherror:0x800701bcError:0x80070...

利用阿里云镜像在ubuntu上安装Docker

简介:...

如何将Ubuntu Kylin(优麒麟)19.10系统升级到20.04版本

UbuntuKylin系统使用一段时间后,有新的版本发布,如何将现有的UbuntuKylin系统升级到最新版本?可以通过下面的方法进行升级。1.先查看相关的UbuntuKylin系统版本情况。使...

Ubuntu 16.10内部代号确认为Yakkety Yak

在正式宣布Ubuntu16.04LTS(XenialXerus)的当天,Canonical创始人MarkShuttleworth还非常开心的在个人微博上宣布Ubuntu下个版本16.10的内...

如何在win11的wsl上装ubuntu(怎么在windows上安装ubuntu)

在Windows11的WSL(WindowsSubsystemforLinux)上安装Ubuntu非常简单。以下是详细的步骤:---...

Win11学院:如何在Windows 11上使用WSL安装Ubuntu

IT之家2月18日消息,科技媒体pureinfotech昨日(2月17日)发布博文,介绍了3中简便的方法,让你轻松在Windows11系统中,使用WindowsSubs...

如何查看Linux的IP地址(如何查看Linux的ip地址)

本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。...

怎么看电脑系统?(怎么看电脑系统配置)

要查看电脑的操作系统信息,可以按照以下步骤操作,根据不同的操作系统选择对应的方法:一、Windows系统通过系统属性查看右键点击桌面上的“此电脑”(或“我的电脑”)图标,选择“属性”。在打开的...

如何查询 Linux 内核版本?这些命令一定要会!

Linux内核是操作系统的核心,负责管理硬件资源、调度进程、处理系统调用等关键任务。不同的内核版本可能支持不同的硬件特性、提供新的功能,或者修复了已知的安全漏洞。以下是查询内核版本的几个常见场景:...

深度剖析:Linux下查看系统版本与CPU架构

在Linux系统管理、维护以及软件部署的过程中,精准掌握系统版本和CPU架构是极为关键的基础操作。这些信息不仅有助于我们深入了解系统特性、判断软件兼容性,还能为后续的软件安装、性能优化提供重要依据。接...

504 错误代码解析与应对策略(504错误咋解决)

在互联网的使用过程中,用户偶尔会遭遇各种错误提示,其中504错误代码是较为常见的一种。504错误并非意味着网站被屏蔽,它实际上是指服务器在规定时间内未能从上游服务器获取响应,专业术语称为“Ga...

猎聘APP和官网崩了?回应:正对部分职位整改,临时域名可登录

10月12日,有网友反映猎聘网无法打开,猎聘APP无法登录。截至10月14日,仍有网友不断向猎聘官方微博下反映该情况,而猎聘官方微博未发布相关情况说明,只是在微博内对反映该情况的用户进行回复,“抱歉,...

域名解析的原理是什么?域名解析的流程是怎样的?

域名解析是网站正常运行的关键因素,因此网站管理者了解域名解析的原理和流程对于做好域名管理、解决常见解析问题,保障网站的正常运转十分必要。那么域名解析的原理是什么?域名解析的流程是怎样的?接下来,中科三...

Linux无法解析域名的解决办法(linux 不能解析域名)

如果由于误操作,删除了系统原有的dhcp相关设置就无法正常解析域名。  此时,需要手动修改配置文件:  /etc/resolv.conf  将域名解析服务器手动添加到配置文件中  该文件是DNS域名解...

域名劫持是什么?(域名劫持是什么)

域名劫持是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。说的直白些,域名劫持,就是把互...

取消回复欢迎 发表评论: