Mysql8本地搭建主从同步,超详细

一、什么是Mysql主从

Mysql主从是一种特殊的Mysql集群方案

  • 一个主(Master)多从(Slave),负责操作,负责操作,从库的数据从主库同步复制,这样的集群模式就主从同步 。主从复制MySql自己就能完成,我们需要做一些配置即可。
  • 主从同步的优点是减轻读的压力,如果主库的写并发比较高或者为了解决主库单点故障,可用做成多个主库,多个主库相互复制,这样即提高了主库写的并发能力,也解决了单节点故障问题。

二、Mysql主从同步的原理

  • 一句话,基于Mysql的binlog
  • 1、主库Master开启binlog日志,Mysql会把所有写操作(增删改)写入到binlog中
  • 2、主库Master会开启一个log dump 现成,用来给从库Slave的IO线程传binlog
  • 3、从库Slave的IO线程去请求主库的binlog,并将得到的binlog日志写到中继日志(relaylog)中
  • 4、从库Slave的sql线程,会读取relaylog文件中的日志,并解析成具体操作,执行操作,从而和主库Master的数据保持一致

三、本地搭建主从库

1、前期准备工作

  • 安装好mysql8
  • 停止mysql8服务

2、搭建主库和从库

  • 进入mysql安装目录,如果不记得mysql的安装目录,可以进入任务管理器,找到mysql服务,右键打开服务
    Mysql8本地搭建主从同步,超详细_第1张图片
  • ctrl+ f搜索mysql,右键属性
    Mysql8本地搭建主从同步,超详细_第2张图片
  • 复制可执行的文件路径
    Mysql8本地搭建主从同步,超详细_第3张图片
  • defaults-file前面是mysql的安装目录,后面是mysql的数据目录和服务的名称
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" MySQL80
  • 进入mysql的安装目录,复制两份,分别命名为master(主库)和slave(从库),作为主库和从库的安装包
    Mysql8本地搭建主从同步,超详细_第4张图片
  • 进入mysql的数据目录,复制两份,分别命名为masterdata(主库的数据)和slavedata(从库的数据),注意复制的是MySQL Server 8.0
    Mysql8本地搭建主从同步,超详细_第5张图片
  • 进入masterdata(主库的数据)和slavedata(从库的数据)的Data目录,删除auto.conf文件,因为这个里面是服务的唯一id,用来标识服务的,所以不能相同,我们后面运行服务的时候就会自动生成
    Mysql8本地搭建主从同步,超详细_第6张图片
  • 进入masterdata(主库的数据)和slavedata(从库的数据)修改my.ini配置文件Mysql8本地搭建主从同步,超详细_第7张图片
  • 需要修改几个地方

【client】中的port 端口号
【mysqlId】中的port 端口号
【mysqlId】中的basedir,mysql安装路径
【mysqlId】中的datadir,mysql数据路径
【mysqlId】中的server-id,mysql服务id
master的配置文件,server-id没有截到,不重复即可,port随意制定,两个port要一致,并且不被占用即可。
Mysql8本地搭建主从同步,超详细_第8张图片

slave的配置同理
Mysql8本地搭建主从同步,超详细_第9张图片

启动master服务

  • 进入master的bin(C:\Program Files\MySQL\master\bin)目录,cmd执行,master就是启动后服务的名称,file就是my.ini所在的路径
    【注意】my.ini在mysql安装目录和数据目录都有,这里的是mysql数据目录的那一个,也就是我们改的那一个

mysqld --install master --defaults-file=“C:\ProgramData\MySQL\masterdata\my.ini”

【提示】如果出现install/remove of the service denied 权限不足 以管理身份运行cmd.exe(在电脑搜索那里搜索cmd,点击或者右键以管理员身份运行,然后执行cd C:\Program Files\MySQL\master\bin 切换到mysql的安装目录)
Mysql8本地搭建主从同步,超详细_第10张图片
Mysql8本地搭建主从同步,超详细_第11张图片

  • 启动成功后,可以看到任务管理中已经有master服务,且是正在运行
    Mysql8本地搭建主从同步,超详细_第12张图片
    【注意】如果不是正在运行,右键master服务,点击打开服务,搜索master,并右键打开即可
  • 打开navicat尝试连接,可以发现连接成功
    Mysql8本地搭建主从同步,超详细_第13张图片
    Mysql8本地搭建主从同步,超详细_第14张图片
  • slave的步骤同master,这里就不再赘述

授权Slave使用账号及权限

  • 在master的连接中,执行以下命令

CREATE USER ‘用户名’@‘master的ip,如果是本地,直接用localhost’ IDENTIFIED BY ‘密码’;
GRANT REPLICATION SLAVE ON . TO ‘用户名’@‘master的ip’;

  • 【注意】mysql8创建用户和授予权限是分开写的,以前可以写成一个sql
  • 创建成功后就可以在mysql库中的user表看到刚创建的用户

slave的后续配置

  • 在master中执行以下命令,得到File和Position

show master status;

得到File和Position
在这里插入图片描述

  • 在slave中执行以下命令

change master to
master_host=‘master的ip’, #master IP
master_user=‘上一步授权给slave的账号’, #master通过GRANT授权的账号
master_password=‘授权账号的密码’, #master通过GRANT授权的密码
master_port=3307, #master数据库的端口
master_log_file=‘上面得到的File’,
#master数据库中通过show master status显示的File名称
master_log_pos=上面得到的Position
#master数据库的通过show master status显示的Position的值

  • slave中启动同步

start slave;

  • slave中主从同步检查

show slave status;

【注意】Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常
在这里插入图片描述

  • 至此,mysql主从同步已经搭好,在master做的写操作都会同步到slave中

你可能感兴趣的:(java,mysql)