Windows下mysql主从搭建

话不多说奔主题,精神抖擞就是干!

1.选用版本
官网一般提供两种包
mysql-8.0.21-winx64.zip免安装版
mysql-installer-community-8.0.21.0.msi安装版
这里我选用安装版
最新包请去官网下载
https://dev.mysql.com/downloads/mysql/
https://dev.mysql.com/downloads/windows/installer/8.0.html


2.搭建环境
这里我使用三台Win10虚拟机进行搭建
(1)路由节点
10.6.10.250
(2)其中一台Mysql节点(主)
10.6.10.251
(3)剩下一台Mysql节点(从)
10.6.10.252
*选用三台的原因是将路由节点单独部署,因为一旦路由节点宕机,主从服务将不可用


3.路由节点(10.6.10.250)
假设我这三台虚拟机的mysql程序配置文件路径都为:
c:ProgramDataMYSQL
我们进到MySQL Router目录下
c:ProgramDataMYSQLMySQL Router
打开该目录下的mysqlrouter.conf
配置信息如下
[DEFAULT]
logging_folder = C:/ProgramData/MySQL/MySQL Router/log
plugin_folder = C:/Program Files/MySQL/MySQL Router 8.0//lib
runtime_folder = C:/ProgramData/MySQL/MySQL Router/run
config_folder = C:/ProgramData/MySQL/MySQL Router/config
data_folder = C:/ProgramData/MySQL/MySQL Router/data

[logger]
level = INFO

[keepalive]
interval = 60

# 以下选项可用于路由标识的策略部分,客户端在连接MySQL Router时,根据IP和Port将选用不同的策略
[routing:basic_failover]
# Router地址
bind_address = 10.6.10.250
# Router端口
bind_port = 7001
# 读写模式
mode = read-write
# 目标服务器
destinations = 10.6.10.251:3306,10.6.10.252:3306

[routing:load_balance]
bind_address = 10.6.10.250
bind_port = 7002
mode = read-only
destinations = 10.6.10.251:3306,10.6.10.252:3306


4.Mysql节点(10.6.10.251)主节点
我们进到MySQL Server 8.0目录下
C:ProgramDataMySQLMySQL Server 8.0
打开该目录下的my.ini
修改配置信息如下
[mysqld]
# Server Id.
server-id=1

# Binary Logging.
log-bin=mysql-bin


5.Mysql节点(10.6.10.252)从节点
我们进到MySQL Server 8.0目录下
C:ProgramDataMySQLMySQL Server 8.0
打开该目录下的my.ini
修改配置信息如下
[mysqld]
# Server Id.
server-id=2


6.开启服务
(1)在10.6.10.250开启MySQL Router服务
(2)在10.6.10.251和10.6.10.252分别开启MySQL服务


7.在Mysql主节点(10.6.10.251)
新打开一个cmd进到bin目录下
C:Program FilesMySQLMySQL Server 8.0in
键入命令
mysql.exe -uroot -p
*键入安装时设置的密码
进入到mysql>,键入命令
mysql>create user 'repl'@'%' identified by 'repl';
mysql>grant replication slave on *.* to 'repl'@'%';
mysql>flush privileges;
mysql>select * from user where User='repl';
mysql>show master status;
*创建一个repl用户,赋给其任意IP访问权限和slave权限,并通过show master status语句查看当前主节点的bin-log文件和position记录下来,后面配置先从节点时要用


8.在Mysql从节点(10.6.10.252)
新打开一个cmd进到bin目录下
C:Program FilesMySQLMySQL Server 8.0in
键入命令
mysql.exe -uroot -p
*键入安装时设置的密码
进入到mysql>,键入命令
mysql>change master to MASTER_HOST='10.6.10.251',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1855;
mysql>stop slave;
mysql>start slave;
mysql>show slave status;
*通过show slave status语句查询状态时,有时候主从建立没那么快,即Slave_IO_Running=
Connecting,可以将上面的几个语句重复执行几遍,看下是否能成功,如果没有,那么需要排查以下几点原因:
(1)主从节点是否ping网络互通
(2)主从节点上,配置的用户和密码是否一致
(3)bin-log文件和position值是否与主节点当前的一致
(4)主从节点是否开启了防火墙
(5)my.ini文件中server_id是否已经改为不同,主节点是否开启bin-log日志功能
(6)C:ProgramDataMySQLMySQL Server 8.0Dataauto.cnf文件里两台节点的[auto]值是否一样,一样的话也会报错,需要改为不一样。这种情况一般都是安装好的服务拷贝,或者虚拟机拷贝偷懒导致
(7)查看错误日志,具体原因具体分析


9.创建数据库,表,插入数据,验证集群的数据同步是否有效
在MySQL Router节点上,新打开一个cmd进到bin目录下
C:Program FilesMySQLMySQL Server 8.0in
键入命令
mysql.exe -uroot -p
*键入安装时设置的密码
进入到mysql>,键入命令
mysql>show databases;
*检查基础数据库是否健全
mysql>create database test;
mysql>use test;
mysql>create table tt(name varchar(23),age int);


10.到另外两台Mysql节点上检查看看是否正确同步过来了
新打开一个cmd进到bin目录下
C:Program FilesMySQLMySQL Server 8.0in
键入命令
mysql.exe -uroot -p

进入到mysql>,键入命令

mysql>show databases;
mysql>use test;
mysql>show tables;
mysql>select * from tt;

最后,祝诸君好运,一次成功,233!

原文地址:https://www.cnblogs.com/chenyixun/p/13625665.html