windows下搭建数据库双机热备,Mycat实现读写分离

                                                          数据库双机热备

主机:

192.168.1.14     和   192.168.1.15

1.分别添加配置文件信息

     14 服务器配置添加

# 主从复制
server-id=14 #设置server-id
log-bin=mysql-bin #开启二进制文件 
#同步的数据库,除此之外别的不同步(和下面binlog-ignore-db二选一)
binlog_do_db=testdb 
auto-increment-increment = 2 #字段变化增量值
auto-increment-offset = 1    #初始字段ID为1
slave-skip-errors = all      #忽略所有复制产生的错误

      15服务器添加配置

server-id=15 #设置server-id
log-bin=mysql-bin #开启二进制文件
binlog_do_db=testdb
auto-increment-increment = 2 #字段变化增量值
auto-increment-offset = 2    #初始字段ID为1
slave-skip-errors = all      #忽略所有复制产生的错误

更多配置信息详细描述

#主标服务标识号,必需唯一
server-id = 1

#因为MYSQL是基于二进制的日志来做同步的,每个日志文件大小为 1G
log-bin=/var/log/mysql/mysql-bin.log

#要同步的库名
binlog-do-db = test

#不记录日志的库,即不需要同步的库
binlog-ignore-db=mysql

#用从属服务器上的日志功能
log-slave-updates

#经过1日志写操作就把日志文件写入硬盘一次(对日志信息停止一次同步)。n=1是最安全的做法,但效率最低。默认设置是n=0。
sync_binlog=1

# auto_increment,控制自增列AUTO_INCREMENT的行为用于MASTER-MASTER之间的复制,避免涌现重复值,
#auto_increment_increment=n有多少台服务器,n就设置为多少,
#auto_increment_offset=1设置步长,这里设置为1,这样Master的auto_increment字段发生的数值是:1,3, #5, 7, …等奇数ID

auto_increment_offset=1
auto_increment_increment=2

#停止镜像处理的数据库
replicate-do-db = test

#不停止镜像处理的数据库
replicate-ignore-db= mysql

2.重启14.15服务器

3.14和15服务器分别创建角色和权限

           在mysql的bin目录下,  以管理员身份打开cmd窗口后,运行mysql -uroot -p,输入密码 登陆。

           先后执行下面3条命令创立用户供从库连接用(用户名MySlave,密码123456),并刷新权限

14服务器上执行:

CREATE USER 'MySlave'@'192.168.1.15' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'MySlave'@'192.168.1.15';
FLUSH PRIVILEGES;

15服务器上执行:         

CREATE USER 'MySlave'@'192.168.1.14' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'MySlave'@'192.168.1.14';
FLUSH PRIVILEGES;

4.执行命令: show master status; 分别查看14和15Master状态,记录二进制文件名和位置 ,如图位置

5.cmd命令行登陆MySQL数据库,14和15服务器分别执行下面命令进行手动同步, 14连接15的二进制文件名和位置 ,15连接14的二进制文件名和位置 ,执行命令:

CHANGE MASTER TO MASTER_HOST='192.168.1.14',MASTER_PORT=3306,MASTER_USER='MySlave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=303322;

注意:上面 MASTER_LOG_FILEMASTER_LOG_POS 部分,替换成主master的二进制文件名和位置

6.  14,15服务器分别启动salve同步进程

start slave;

7. 分别查看14和15的slave状态, 执行命令:

show slave status\G;

8.测试

9.后记

彻底清除slave同步复制关系操作!见文章地址:https://www.cnblogs.com/musen/p/11162783.html

stop slave;

reset slave all;

show slave status\G;

   Emptyset (0,00 sec)

此时真正实现了清除slave同步复制关系!

测试情形一 : 15宕机,  14写入数据 ,然后14也宕机 ,重启15 ,没有恢复数据  , 重启14 , 15恢复数据

测试情形二: 15宕机  ,14写入数据 ,然后14也宕机 ,重启15  , 15写入数据,id和14重复并插入新数据 , 重启14 , 恢复数据 ;   但14/15 id重复行,各自保持原插入数据;

测试情形三: 15宕机,  14修改共有数据 , 然后14也宕机 , 重启15 ,  15也修改共有数据,  14/15两边数据保持一致

重启后恢复时间大概需要一分钟内完成

id建议不要用自增id ,随机id比较好,避免id重复导致数据不一致.

                                                                      Mycat实现读写分离

下载mycat 地址 : Index of /

配置mycat server.xml文件

配置 schema.xml文件

启动mycat

启动成功

Navicat连接mycat

打开mycat

由于我后来把备份库从testdb 切换成了 zhlyweb, 所以显示的表都是zhlyweb库的表

Navicat12连接mycat打开表会报错,错误信息说表不存在 , 这是navicat版本问题,换低版本Navicat就可以了

测试双机热备高可用,宕机14库 ,大概30秒后切换主从 读写正常.

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值