Windows上搭建MySQL主备实例

本文详细介绍如何在Windows环境下安装并配置MySQL主备实例,包括安装步骤、参数配置及链路建立过程。

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

既然要搭建一套主和备,那么必定是两个进程,接下来我们要做的是如何在一台机器上安装两个MySQL,然后将它们的链路建立起来。主实例的端口为3006,备实例的端口为3007,安装在D盘。

安装MySQL

        M(master)的安装

        在windows平台,我们使用msi安装包即可,下载地址 ,大约350M左右,mysql-installer-community-5.7.19.0.msi。安装过程中选择custom方式安装MySQL-server。

目录设置:D:\Program Files\MySQL\MySQL Server 5.7-M
数据目录设置:目录设置:D:\ProgramData\MySQL\MySQL Server 5.7-M
端口设置:3306
windows服务名称:MySQL-M

设置root密码,完成。这样,我们就完成了主实例的安装,接下来拷贝配置信息到备实例。

        S(slave)的安装           

直接使用安装包安装是禁止的,我们可以使用拷贝的方式将安装目录、数据目录重新拷贝一份。注意所有M相关的信息都被替换为了S。

目录设置:D:\Program Files\MySQL\MySQL Server 5.7-S
数据目录设置:目录设置:D:\ProgramData\MySQL\MySQL Server 5.7-S
端口设置:3307
windows服务名称:MySQL-S

这样基础文件就已经搞定了。S的windows服务需要单独处理,在“开始”中输入regedit,打开注册表。windows的服务信息在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services下,找到M的服务名称“MySQL-M”,然后右键-导出,将此项注册表导出来,然后使用notepad等文本编辑器将里面所有M相关的都替换为S,然后双击执行将修改过的注册表项目添加到注册表,这样我们就看到了新的注册项“MySQL-S”,由于项“ImagePath”无法直接在编辑器中编辑,我们就在这里右键-修改该数据,将路径中所有M相关的都设置为S。注销windows,打开“服务”,就可以看到现在有两个服务:MySQL-M、MySQL-S。

此时,我们还没有对实例进行配置,不能启动MySQL服务或启动将失败。

配置MySQL

        M(master)的配置

        MySQL的配置都在my.ini中,Linux下位my.conf,默认在数据目录下。配置该目录的目的是为了将主/备区分开来,例如端口号这种基本配置,以下为需要区别配置的内容。

#增加
log-bin=mysql-bin

#server-id 主和备不能相同,必须区分开来。
server-id=123456789

#数据目录根据不同的实例角色进行修改
datadir=XXXXX

        S(slave)的配置

同上。

如果要部署 M->S1->S2这样的架构,那么需要S1上开启binlog更新,在配置文件中增加配置项:

#开启备库日志记录
log_slave_updates

请注意,数据目录下有个文件auto.cnf,和GTID有关系,一定注意要像server-id一样区别开来,建议直接删除掉,重启服务后将会重新生成。

以上,主备实例初始化OK。

#启动两个服务
net start MySQL57-M
net start MySQL57-S

配置主备链路

    接下来,要做四件事:授权主备复制专用账号、确认M位点、修改S指向到M、检查链路。

#M上执行 授权同步账号

GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync';
#M上确认位点 记录下文件名以及位点

show master status;

#假设文件为mysql-bin.000001 位点为154。后面要用。
#S上执行指向切换

CHANGE MASTER TO 
 master_host = 'localhost',
 master_user = 'db_sync',
 master_password = 'db_sync',
 master_log_file = 'mysql-bin.000001',
 master_log_pos = 154;

#注意 如果之前此备库已有主库指向 需要先执行以下命令清空
STOP SLAVE IO_THREAD FOR CHANNEL '' 
#S上执行

show slave status;

#确认Slave_IO_Runing以及Slave_SQL_Runing两个状态位是否为“Yes”,如果不为Yes,请检查error_log,然后排查相关异常。

建议备库上执行set GLOBAL read_only=1设置其为只读。

这样主备链路就完成了。可以create database试一下,两个实例就会立即出现效果啦。

 

 

转载于:https://my.oschina.net/u/859433/blog/1548083

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值