背景

最近在学习用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,

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

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

windows版的mysql主从复制环境搭建的更多相关文章

  1. windows下PHP+Mysql+Apache环境搭建

    Apache版本:httpd-2.2.22-win32-x86-openssl-                   下载地址:http://pan.baidu.com/s/1sjuL4RV PHP版 ...

  2. Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建)

    Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建) 具体案例:局域网内有两台主机,一台Linux.一台Windows,现在需要配置一台Cacti监控服务器对这两台 ...

  3. Windows下ELK-5.4.3环境搭建

    Windows下ELK-5.4.3环境搭建 一.概述 ELK官网 https://www.elastic.co ELK由Elasticsearch.Logstash和Kibana三部分组件组成: El ...

  4. Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程

    这篇文章主要介绍了Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程,需要的朋友可以参考下 准备篇 一.环境说明: 操作系统:Windows Server 201 ...

  5. Windows 7 下 PHP 开发环境搭建(手动)

    Windows 7 下 PHP 开发环境搭建 1.说明 做开发的都知道一句话,就是“站在巨人的肩膀上”.确实现在打开浏览器随便一搜很多一键安装PHP环境的软件,比如wamp.xampp.AppServ ...

  6. Mysql系列三:Centos6下安装Mysql和Mysql主从复制的搭建

    一.Centos6下安装Mysql 检测下系统有没有自带的mysql:yum list installed | grep mysql, 如果已经有的话执行命令yum -y remove mysql-l ...

  7. 【1】windows下IOS开发基础环境搭建

    一.目的 本文的目的是windows下IOS开发基础环境搭建做了对应的介绍,大家可根据文档步骤进行mac环境部署: 二.安装虚拟机 下载虚拟机安装文件绿色版,点击如下文件安装 获取安装包:       ...

  8. Windows下C,C++开发环境搭建指南

    Windows下C,C++开发环境搭建指南 前情提要 基于近一段时间很多网友发邮件反馈,说一些项目编译出现问题,诸如此类的情况. 就觉得很有必要写一篇C,C++开发环境的小指南,统一回复. 1.君欲善 ...

  9. ubuntu下mysql的环境搭建及使用

    ubuntu下mysql的环境搭建及使用 环境安装 使用如下命令分别安装服务端程序,客户端程序,及客户端依赖库 sudo apt-get install mysql-server sudo apt-g ...

随机推荐

  1. 2019.10.24 CSP%你赛第二场d1t3

    题目描述 Description 精灵心目中亘古永恒的能量核心崩溃的那一刻,Bzeroth 大陆的每个精灵都明白,他们的家园已经到了最后的时刻.就在这危难关头,诸神天降神谕,传下最终兵器——潘少拉魔盒 ...

  2. 回头看 vue-router

    回头看 vue-router 复习 我的github iSAM2016 目录 响应路由参数的变化 嵌套路由 函数式导航 路由的命名 示例:切换路由的时候可以修改页面的标题 导航钩子 全局钩子 实例:检 ...

  3. Java中Object类hashCode的底层实现

    Java中Object类hashCode的底层实现 openjdk\jdk\src\share\native\java\lang\Object.c 42 static JNINativeMethod ...

  4. unity image 设置图片

    从任意文件目录下读取文件并在unity中显示: 1)读取目标文件 byte[] imageByte = File.ReadAllBytes(imagePath); 2)转换成纹理 texture.Lo ...

  5. stream流篇

    流是C#中比较重要的一个概念,很多关键技术都需要用到流.何为流呢?可以理解流为江河中水的流动,不过C#中则为信息流,我们可以把信息写入流,也可以读出.比如以文件读写操作为例,首先以某种方式(如只读)打 ...

  6. 一个漂亮的js表单验证页面+验证码

    一个漂亮的js表单验证页面 见图知其意, 主要特性 带密码安全系数的判断 其他的就没有啥啦 嘿嘿嘿 当然,其代码也在Github上 我也准备了一套可以直接Ctrl + v; Ctrl + c 运行的代 ...

  7. SpringCloud之Nacos服务发现(十七)

    一 Nacos简介 Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现.配置和管理. Nacos主要提供以下四大功能: 服务发现与服务健康检查 Nacos使服务更容易注册自己并 ...

  8. Python安装pyinstaller方法,以及将项目生成可执行程序的步骤

    pyinstaller安装方法 前提:确保计算机安装了Python语言环境,并且正确配置了环境变量. 方法一:联网在线自动安装 选择一 Windows OS下进入cmd(命令行窗口) 输入:pip i ...

  9. yii2中commands的简单应用

    class HelloController extends Controller { /** * This command echoes what you have entered as the me ...

  10. Java后端开发工作 - 写接口

    我在公司的工作内容是,对于一个BS应用,负责服务器端开发工作,Java语言.与前端开发人员合作,最终提供给前端RESTFUL接口,保证页面正常响应. 经验之谈 一个接口可以理解为一个业务逻辑,一个业务 ...