MySQL主从复制:同一台电脑Windows环境下如何搭建MySQL主从复制


前言

一般我们在服务器上做数据库集群部署的时候都是需要最少两台物理机器。那么我们做为个人学习或者模拟搭建的时候,就可以参考这篇博文,实现一台物理机照样搭建好MySQL主从环境


主从原理

MySQL主从复制是依靠bin-log二进制文件来完成的。主库开启biglog日志后,每一条执行过的新增和修改语句,都会被记录到biglog日志里。然后从库会监听这个文件,一旦发现biglog文件有改动,则会起一个线程将biglog日志文件拉到从库环境并执行。从而达到数据同步的效果。


一、准备工作

  • 物理机环境下载安装了JDK且配置好了环境变量
  • 下载安装MySQL,我这里用的是5.7版本
  • MySQL连接管理工具Navicat(非必要)

二、搭建步骤

1、正常下载安装MySQL。安装完成后,找到你安装的目录。默认安装的话会在系统C盘的Program Files文件夹下面。
在这里插入图片描述
找到安装目录后,这里在E盘下建一个MySQL2的文件夹(任意盘符都行),然后把上面这些文件复制一份到MySQL2的文件夹里
在这里插入图片描述
复制过来后,是没有data文件夹和my.ini文件的。这里要解释一下,5.7以前。安装目录里是有datamy.ini文件的。5.7将这两个文件放到了ProgramData文件夹下面。这是一个隐藏的文件夹,如果你没有勾选查看隐藏文件功能的话是看不到的。
在这里插入图片描述
在这里插入图片描述
我们把my.ini文件复制过去。data是存放表数据的,不需要复制。我们自己新建一个data文件夹。接下来就是对ini文件进行配置。

  1. 修改端口号:把所有的 port=3306 改成 port=3307
  2. 修改数据存放路径:datadir=E:/MySQL2/data(data是我们刚刚新建的文件)
  3. 修改serviceId:server-id=2。默认是1(主库配置),从库改成2(这里一般推荐用服务器IP地址后三位)
  4. 新增一行配置:replicate-do-db=yxj (replicate-do-db代表要复制主库里哪个库的数据,yxj就是你想做主从复制的数据库名。如果有多个库要复制,则重复设置此配置即可。这个可以去百度一下MySQL主从复制过滤机制了解。)
  5. 其他配置可保持不变,大致需要配置的属性如下:
[client]
port=3307
[mysql]
no-beep
default-character-set=utf8
[mysqld]
port=3307
datadir=E:/MySQL2/data
character-set-server=utf8
default-storage-engine=INNODB
replicate-do-db=yxj
server-id=2

到这里,从库配置就已经完成。接下来我们要安装一下从库服务。也就是MySQL2服务。

  1. 以管理员身份打开cmd 【注意是管理员身份,要不会报错】 进入E:\MySQL2\bin路径下,执行下面这个命令
mysqld install MySQL2 --defaults-file="E:\MySQL2\my.ini"

如果提示“Service successfully installed”,则说明mysql服务安装成功。

  1. 连接从服务器 :mysql -uroot -p -P3307 如果报错:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)。则启动mysql2服务 net start mysql2。
    如果报错: Access denied for user’root’@‘localhost’ (using password: NO)参考这篇文章解决

从库配置完成后,就是主库。

  1. 同样,管理员打开cmd。进入主库安装目录下的bin目录 net stop mysql(mysql是服务名)。或者任务管理器里找到mysql服务,关闭。

  2. 回到C:\ProgramData\MySQL\MySQL Server 5.7目录,找到我们被隐藏的ini文件,编辑它。只需要在配置里加上这一行表示开启bin-log在这里插入图片描述

  3. 主库配置完后,重启mysql。这个时候用Navicat新建一个查询,输入如下命令查看biglog配置(命令行也行)show master status;
    查看主库的biglog文件名以及偏移量。在这里插入图片描述

  4. 在主库专门为从库创建一个用来同步数据的账号,并分配replication slave 权限:

create user 'yxj'@'127.0.0.1' identified by '123456';
grant replication slave on *.* to 'yxj'@'127.0.0.1' identified by '123456';

注:@后面的ip地址为允许连接的客户端的ip地址。mytest是用户名,123456是密码

主库到这里也配置完成。最后,我们回到从库,打开从库服务,在Navicat中新建一个查询。输入如下命令设置

change master to master_host='127.0.0.1',master_port=3306,master_user='yxj',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=5156;

master_log_file='mysql-bin.000001’为上面的biglog日志文件名
master_log_pos=5156为上面的偏移量数值
接下来,我们在从库服务下执行show slave status;。cmd命令行可用show slave status \G;查看Slave_IO_Running 和 Slave_SQL_Running 两个线程状态是否都为yes。如果为yes。说明主从复制已经成功了,这个时候我们可以在主库做一些改变,看从库是否会跟着改变!


总结

关键步骤:主库开启biglog,给从库配置一个专门的账号(指定权限)。从库将主库给的账号,biglog日志文件名以及文件偏移量等参数配置进服务里。只要Slave_IO_Running 和 Slave_SQL_Running 两个线程状态为yes。就说明主从配置成功了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值