Mysql读写分离集群的搭建且与MyCat进行整合
1. 概述
老话说的好:不熟悉的东西不要不懂装懂,做人要坦诚,知道就是知道,不知道就是不知道。
言归正传,今天我们来聊聊 Mysql主从读写分离集群是如何搭建的,并且聊一下如何用 MyCat 去访问这个Mysql读写分离集群。
2. 场景介绍
服务器A IP:192.168.1.22
服务器B IP:192.168.1.12
服务器A 和 服务器B 都安装了Mysql,且初始化完成,关于Mysql在CentOS7的安装,可参见我的另一篇文章《MyCat的快速搭建》。
服务器B作为 Mysql 主服务,服务器A作为 Mysql 从服务器。
MyCat 安装在服务器A上。MyCat的安装也可参见我的另一篇文章《MyCat的快速搭建》。
3. Mysql主从读写分离集群的搭建
3.1 修改 服务器B(主)配置文件
# vim /etc/my.cnf
3.2 重启服务器B(主)的 Mysql 服务
# systemctl restart mysqld
3.3 修改 服务器A(从)配置文件
# vim /etc/my.cnf
3.4 重启服务器A(从)的 Mysql 服务
# systemctl restart mysqld
3.5 在 服务器B(主)上创建同步账号并授权
# mysql -u root -p
mysql> create user 'repl'@'%' identified by 'Zhuifengren@123456';
mysql> grant replication slave on *.* to 'repl'@'%';
mysql> flush privileges;
3.6 在 服务器B(主)上进行锁表操作
# mysql -u root -p
mysql> flush tables with read lock;
3.7 在 服务器B(主)上找到 log-bin 的位置
# mysql -u root -p
mysql> show master status;
3.8 将 服务器B(主)的 mysql 数据复制到 服务器A(从)
备份数据
# mysqldump --all-databases --master-data > dbdump.db -uroot -p
注意:刚才锁表的mysql客户端不要退出,重新开一个窗口!!!
传输数据文件
# scp dbdump.db root@192.168.1.22:/home
3.9 在 服务器A(从)还原 mysql 数据
# cd /home
# mysql < dbdump.db -uroot -p
注意:两台服务器mysql的版本务必一致,否则可能报错!!!
3.10 将 服务器B(主)上锁表操作取消
mysql> unlock tables;
3.11 在 服务器A(从)上设置主从同步配置
# mysql -u root -p
mysql> change master to
-> master_host='192.168.1.12',
-> master_user='repl',
-> master_password='Zhuifengren@123456',
-> master_log_file='zhuifengren_log.000001',
-> master_log_pos=1432;
mysql> start slave;
3.12 Authentication plugin 'caching_sha2_password' reported error 报错解决
如果发现主从数据没有同步,可以查看从库(服务器A)的同步日志
# cat /var/log/mysqld.log
如果有如下报错,则说明之前创建的 repl 账户密码加密方式有问题:
Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. Error_code: MY-002061
解决办法:
进入 服务器B(主)的mysql客户端,修改用户密码的加密方式
# mysql -u root -p
mysql> alter user 'repl'@'%' identified WITH sha256_password by 'Zhuifengren@123456';
mysql> grant replication slave on *.* to 'repl'@'%';
mysql> flush privileges;
然后进入 服务器A(从)重启主从同步
# mysql -u root -p
mysql> stop slave;
mysql> start slave;
问题解决!!!
4. MyCat 配置读写分离
4.1 在之前的基础上修改MyCat配置
# cd /home/mycat/conf
# vim schema.xml
其中 读库readHost 标签写在 写库writeHost 标签里面。
dataHost 标签中 balance 属性的含义如下:(摘抄自 MyCat 官网的权威指南)
balance 属性 负载均衡类型,目前的取值有 4 种: 1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。 2. balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双 主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。 3. balance="2",所有读操作都随机的在 writeHost、readhost 上分发。 4. balance="3",所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力, 注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。
4.2 重启MyCat
# cd /home/mycat/bin
# ./mycat stop
# ./mycat start
5. 综述
今天聊了一下 Mysql 主从读写分离集群的搭建,以及 MyCat 如何整合 Mysql 读写分离集群,希望可以对大家的工作有所帮助。
欢迎帮忙点赞、评论、转发、加关注 :)
关注追风人聊Java,每天更新Java干货。
Mysql读写分离集群的搭建且与MyCat进行整合的更多相关文章
- Mysql双主双从高可用集群的搭建且与MyCat进行整合
1.概述 老话说的好:瞻前顾后.患得患失只会让我们失败,下定决心,干就完了. 言归正传,之前我们聊了Mysql的一主一从读写分离集群的搭建,虽然一主一从或一主多从集群解决了并发读的问题,但由于主节点只 ...
- KingbaseES R3 读写分离集群在线扩容案例
案例说明: 1. 通过sys_basebackup创建新备库. 2. 将备库加入到Cluster nodes管理,可以用kingbase_monitor.sh一键启停. 3. 主备复制切换测试. 此次 ...
- Redis集群的搭建及与SpringBoot的整合
1.概述 之前聊了Redis的哨兵模式,哨兵模式解决了读的并发问题,也解决了Master节点单点的问题. 但随着系统越来越庞大,缓存的数据越来越多,服务器的内存容量又成了问题,需要水平扩容,此时哨兵模 ...
- kingbaseES R6 读写分离集群修改ssh端口案例
数据库环境: test=# select version(); version ------------------------------------------------------------ ...
- Centos下Redis集群的搭建实现读写分离
Centos下Redis一主多从架构搭建 搭建目标:因为自己笔记本电脑配置较低的原因,模拟两台机器之间搭建一主一从的架构,主节点Redis主要用来写数据,数据写入到主节点的Redis,然后从节点就可以 ...
- centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数据库读写分离 双主搭建 mysql.history 第二十九节课
centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数 ...
- Docker搭建MySQL主从集群,基于GTID
写在前边 搭建MySQL读写分离主从集群,这里未使用binlog方式,使用的是GTID方式 源码见我的Github https://github.com/hellxz/mysql-cluster-do ...
- Mysql 集群环境搭建
在上一篇文章中已经详细的写了关于Mysql的安装步骤.这一篇文章在上一篇文章的基础之上接着写集群的安装与部署. 安装地址:https://www.cnblogs.com/ming-blogs/p/10 ...
- 项目进阶 之 集群环境搭建(三)多管理节点MySQL集群
上次的博文项目进阶 之 集群环境搭建(二)MySQL集群中,我们搭建了一个基础的MySQL集群,这篇博客咱们继续讲解MySQL集群的相关内容,同时针对上一篇遗留的问题提出一个解决方案. 1.单管理节点 ...
随机推荐
- 4、kubernetes基础概念
一.基础概念 1.Master节点 整个集群的控制中枢.Master节点是Kubernetes集群的控制节点,在生产环境中不建议部署集群核心组件外的任何Pod,公司业务的Pod更是不建议部署到Mast ...
- Vue.JS快速上手(指令和实例方法)
1.声明式渲染 首先,我们要知道Vue是声明式渲染,那啥是声明式渲染,我们只需要告诉程序我们想要什么结果,其他的交给程序来做.与声明式渲染相对的是命令式渲染,即命令我们的程序去做什么,程序就会跟着你的 ...
- mysql 8.0 1405的坑
因版本差异:password 可能对应:authentication_string字段 不行的话再尝试一下,并且修改下密码类型 ALTER USER 'root'@'%' IDENTIFIED WI ...
- shiro登录源码
//1.获取SecurityManager工厂,此处使用Ini配置文件初始化SecurityManager Factory<org.apache.shiro.mgt.SecurityManage ...
- 阿里云服务器,http免费转https详细教程
1.搜ssl证书,点击立即购买 2.这里我们选择免费证书,点击右边立即购买,去支付 购买完成之后,申请证书状态会显示在审核中,不过很快的,几分钟就申请成功了,以下就是我申请成功的界面,因为我服务器用的 ...
- Kotlin之内联回调函数
let 定义: let扩展函数的实际上是一个作用域函数,当你需要去定义一个变量在一个特定的作用域范围内,let函数的是一个不错的选择:let函数另一个作用就是可以避免写一些判断null的操作. 翻译: ...
- Python中的多线程编程
前言: 线程是操作系统能够进行运算调度的最小单位(程序执行流的最小单元) 它被包含在进程之中,是进程中的实际运作单位 一个进程中可以并发多个线程每条线程并行执行不同的任务 (线程是进程中的一个实体,是 ...
- Java最大栈深度有多大?-从一道面试题开始学习JVM
一.问题:Java最大支持栈深度有多大? 1.分析 有JVM的内存结构我们可知: 随着线程栈的大小越大,能够支持越多的方法调用,也即是能够存储更多的栈帧: 局部变量表内容越多,那么栈帧就越大,栈深度就 ...
- 板子题 Sol
RT Cyber_Tree 出了一道板子题... 这题乍看之下貌似还不戳,但如果您做过类似的题,那么这就是一道板子题.... 首先明确要求的是什么,如果我们只考虑权值最大而不考虑最小距离,那么要求的显 ...
- Vue 路由跳转报错 Error: Avoided redundant navigation to current location: "/XXX".
在router文件夹下的index.js中加入红色字体代码即可解决 import Vue from 'vue' import VueRouter from 'vue-router' Vue.use(V ...