既然要搭建一套主和备,那么一定是两个进程,接下来咱们要作的是如何在一台机器上安装两个MySQL,而后将它们的链路创建起来。主实例的端口为3006,备实例的端口为3007,安装在D盘。html
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
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试一下,两个实例就会当即出现效果啦。