关于windows安装主从Mysql5.7.31的操作与坑记录

mysql下载与安装

下载

我的是5.7.31版本64位
mysql5.7

安装

解压压缩包

  • 解压mysql压缩包到我的D盘 分别复制出两个目录 master slave
D:\mysql5.7\master
D:\mysql5.7\slave

如我的目录

创建文件mysql.ini

  • 第一个mysql.ini使用3006端口
  • server-id=3 同步rwms数据库
  • log-bin = mysql-bin必须要有
  • basedir和basedir是相对目录,data不需要自己创建
 [mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
#设置3006端口
port = 3006
server-id = 3
log-bin = mysql-bin
binlog-do-db = rwms
# 设置mysql的安装目录
basedir=D:/mysql5.7/master
# 设置mysql数据库的数据的存放目录
datadir=D:/mysql5.7/master/data# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
  • 第二个mysql.ini使用3007端口
  • 3007端口
  • server-id = 4
  • log-bin = mysql-bin
  • replicate-do-db = 你要同步的从数据库
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
#设置3007 端口
port = 3007 
server-id = 4
log-bin = mysql-bin
replicate-do-db = rwms
# 设置mysql的安装目录
basedir=D:/mysql5.7/slave
# 设置mysql数据库的数据的存放目录
datadir=D:/mysql5.7/slave/data# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

命令安装3006端口的mysql

  • cd到D:\mysql5.7\master\bin
  • 执行安装方法生成mysql3006服务
mysqld install mysql3006 --defaults-file="D:\mysql5.7\master\mysql.ini"
  • 成功标识 Service successfully installed.
  • initialize data(很多文章都没有指明文件,这里最好指明你的文件ini)
mysqld --defaults-file=D:\mysql5.7\master\mysql.ini --initialize --console
  • 成功标识出现临时密码 A temporary password is generated for root@localhost: ttlfEoGsu4=t

修改注册表

  • win+r 输入regedit进入到注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql3006

  • 修改imagePath为 自己的目录前缀 如我的D:\mysql5.7\master\bin,如果正确的目录则不需要修改
    如图

启动mysql3006服务

  • bin目录下 执行net start mysql3006
    也可以使用任务管理器找到服务3006来启动

登陆mysql3006数据库服务

  • 在bin目录下输入 mysql -u root -p -P 3006 同时输入刚刚生成的临时密码
 ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
  • use mysql; 进入mysql数据库授予rwms用户123456 所有权限同时可远程访问
GRANT ALL PRIVILEGES ON *.* TO 'rwms'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

flush privileges;

同上安装3007的从数据源

启动navicat来设置主从

navicat操作

  • 请记住File和Position的值,新建数据库xxx(rwms),同理对从数据源也是新建数据库xxx 且禁止对两个数据库增删改
    在这里插入图片描述
  • navicat进入主数据源查询控制台输入
    在这里插入图片描述
show master status

如图

  • 新建一个专门用户同步数据的用户
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

设置同步数据源

  • 图中一定要在slave中操作

在这里插入图片描述

  • 关闭主从复制
stop slave
  • 重新建立连接其中master_user是刚刚新建的用户 master_password就是制定他的密码
    master_log_filemaster_log_pos就是刚刚上面记住的参数
change master to master_host='192.168.8.113',master_port=3006,master_user='slave',master_password='rwms',master_log_file='mysql-bin.000005',master_log_pos=347;
  • 开启同步
start slave
  • 检查是否同步成功
    切记副库不能改动 因为副库是从主库拿数据 一旦副库改动 同步将失效 需要自己修复
    在这里插入图片描述
  • Slave_IO_Running如果为正在连接connecting可以检查是否是你的change master to 是否有错误
  • Slave_Sql_Running 为no 检查是否主从不一致可以参考
    别人解决的方法

测试

  • 直接在master新建表,看你的slave是否有同步

问题汇总

  • 安装多个mysql的时候一定要修改注册表
  • 安装mysql 一定要指定到你的mysql.ini 否则会报错
  • mysql -u root -p -P 3006 这里一定要指定端口,否则默认3306
  • show master status 什么都没有
    刚开始我也是确实如大家所说二进制日志没开启,我本身遇到了,但没有解决,即使和现在一模一样的配置都不行.按照网上说的也不行,可以重建然后对主数据源进行导入
  • master 的master_log_pos参数是动态变化的,如果在查询后进行了数据库的操作,会改变,导致后面的slave的设置出错
  • 私自修改从数据库,会导致两个数据不同步导致后续的同步失败

spring aop根据dao的方法名来拦截从而读写分离数据库(下篇主要参考了wollow的druid连接池)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值