Windows上搭建MySQL主备实例

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

安装MySQL

        M(master)的安装java

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

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

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

        S(slave)的安装           windows

直接使用安装包安装是禁止的,咱们可使用拷贝的方式将安装目录、数据目录从新拷贝一份。注意全部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服务或启动将失败。spa

配置MySQL

        M(master)的配置日志

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

#增长
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试一下,两个实例就会当即出现效果啦。

相关文章
相关标签/搜索