winserver 2016实现mysql数据库主从配置及读写分离配置

本文详细介绍了在Windows Server 2016环境下,如何使用Mysql 5.7.20版本进行主从数据库的配置与同步,包括主从库的安装、配置文件的修改、主从关联及读写分离的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 环境介绍及说明:

主库系统版本:winserver 2016
从库系统版本:winserver 2016
主库Mysql版本:mysql-5.7.20-winx64
从库Mysql版本:mysql-5.7.20-winx64
主库的ip地址:192.168.11.132
从库的ip地址:192.168.11.134
主库的端口:3306
从库的端口:3306
注:主库和从库版本可以一致也可以不一致,需要说明一点,如果两者版本不一致,一般主库的版本需要比从库的版本低,这样就可以避免由于版本问题,有些sql不能执行的问题。
二、数据库的安装
主库从库自行安装数据库。
三、主库从库文件配置
1)、主库配置
打开mysql的安装路径,找到my.ini文件,如下图所示:
在这里插入图片描述

在cmd窗口执行:net stop mysql,先关掉mysql服务,然后选中my.ini文件点击右键进行编辑,添加配置文件如下图所示:

server-id=1

log-bin=mysql-bin #从库会基于此log-bin来做复制

binlog-do-db=mytest #用于主从同步的具体数据库,这里我创建了mytest作测试

binlog_ignore_db=mysql #不用于读写分离的具体数据库

binlog_ignore_db=information_schema #和binlog-do-db一样,可以设置多个

在这里插入图片描述

编辑完成之后点击保存,然后在cmd窗口执行net start mysql,打开mysql服务。
2)、从库配置
打开从库mysql的安装路径,找到my.ini文件,如下图所示:

在cmd窗口执行:net stop mysql,先关掉mysql服务,然后选中my.ini文件点击右键进行编辑,添加配置文件如下图所示:

[mysqld]

server-id=2

log-bin=mysql-bin #从库会基于此log-bin来做复制

replicate-do-db=mytest #用于主从同步的具体数据库,这里我创建了mytest作测试

在这里插入图片描述

编辑完成之后点击保存,然后在cmd窗口执行net start mysql,打开mysql服务。
四、关联主库与从库
在主库的mysql 执行命令 show master status查看主库的状态
在这里插入图片描述
我们可以发现 ,master的状态下,生成了一个二进制的日志文件,而slave下是空的,所以我们现在就要把主库与从库关联起来。只需要让从库(slave)知道主库(master)的地址就可以了。
首先我们需要在主库(master)中创建一个用户用于与从库同步的用户名和密码(这里我创建一个slave_user用户,密码为123456),并给slave_user用户授权,以用于主库操作从库。
相关命令:

GRANT ALL PRIVILEGES ON *.*  TO root@'%' IDENTIFIED BY '123456'; 

用户名:root
密码:123456
配置从库:首先停止从库stop slave;,在从库的mysql命令里执行以下命令:

change master to
master_host='192.168.11.132',
master_port=3306,
master_user='root',
master_password='123456',
master_log_file='mysql-bin.000002',
master_log_pos=251;

注释:
master_host—‘填写主库的ip’
aster_user=‘配置好的用户名’,
master_password=‘配置好的密码’,
master_log_file=‘主库里查找的file’,
master_log_pos=主库里查找的position;
启动从库start slave;
检查是否启动成功: show slave status \G;出现以下界面即为安装成功:
在这里插入图片描述
五、验证主从同步

自行创建库与表进行验证即可。
备注:注意不要往从库中写数据,如果从库写入数据,master_log_pos是不会变化的,主库的信息没有发生变化,当主库又变化和从库一样的操作时就有可能会产生冲突,因此,只能在主库中写数据,从库只能读数据,当然主库也可以读数据。
此方法不能同步之前的数据,若需要同步之前的数据,可备份主数据库数据然后恢复到从数据库。或者通过数据日志来同步数据。

参考文档:https://blog.csdn.net/weixin_30873847/article/details/99351427
注:
1:若发现主库数据已添加,且保证配置成功的情况下数据不能同步,请查看添加的数据是否为配置里设置的库。
2:若配置完成之后,主从同步从库上显示Slave_IO_Running: Connecting请参考以下几点原因:
1.网络不通 #互ping机器ip,无丢包率正常访问
2.密码不对 #MySQL重新授权远程用户登陆账号,重新设置密码
3.pos不正确 #主服务器,登陆数据库重新查看起始偏移量show master status
4.ID问题 #ID的问题,在安装完mysql数据库的时候默认他们的server-id=1 但是在做主从同步的时候需要将ID号码设置不一样才行,查看数据库配置文件cat /etc/my.cnf,文件写的不同,排除
5. 防火墙策略

读写分离:
读写分离配置服务器:
系统版本:winserver 2016
mysql-proxy版本:mysql-proxy-0.8.5
服务器ip地址:192.168.11.138

把mysql-proxy-0.8.5-windows-x86-32bit解压到192.168.11.138任意路径下,创建创建配置文件 mysql-proxy.conf,如下:

 [mysql-proxy]
admin-username=root
admin-password=123456
admin-lua-script=C:/mysql-proxy-0.8.5-windows-x86-32bit/lib/mysql-proxy/lua/admin.lua               
proxy-backend-addresses=192.168.11.132:3306
proxy-read-only-backend-addresses=192.168.11.134:3306
proxy-lua-script=C:/mysql-proxy-0.8.5-windows-x86-32bit/share/doc/mysql-proxy/rw-splitting.lua
log-file=C:/mysql-proxy-0.8.5-windows-x86-32bit/log/mysql-proxy.log
log-level=debug
daemon=true
keepalive=true

注释:
admin-username:用于中间件连接的用户
admin-password:同上用户密码
admin-lua-script:根据存放的文件位置自行调整
proxy-backend-addresses:主库服务器+端口
proxy-read-only-backend-addresses:从库服务器+端口,多个从库用,隔开
proxy-lua-script:根据存放的文件位置自行调整
log-file:日志文件存放位置,如果你指定了一个路径,请确保手动创建了对应的文件夹,否则会报错
log-level:日志级别
daemon:以守护进程方式运行
keepalive:长连接
将上面创建的文件复制到mysql-proxy-0.8.5-windows-x86-32bit的bin目录中
创建install.bat文件,内容如下:

mysql-proxy -P 192.168.11.138:6217 --defaults-file=C: \mysql-proxy-0.8.5-windows-x86-32bit\bin\mysql-proxy.conf

也放在mysql-proxy-0.8.5-windows-x86-32bit的bin目录中,双击运行
接下来,用你的客户端工具连接 192.168.47.130:6217(6217这个端口随便设置,跟上面的bat里面一致就行),测试是否可以能正常连接,如果能连接,查看是否能看见测试的数据库,不能显示读写分离的数据库,那一般是权限设置问题,配置权限即可。

配置成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值