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.单管理节点 ...
随机推荐
- 转:自增(自减)在Java与C中的区别
转自:http://seiyatime.blog.sohu.com/84358295.html 话说昨日面试,在笔试的25个选择题中,涉及自增自减不止一两题,以前在开发过程中并没太在意这方面的问题,也 ...
- tf.app.run() 运行结束时,报错:SystemExit exception: no description
环境:Python3.6.6 + tensorflow-gpu 源码如下: import tensorflow as tf def main(): print("hello tf.app.r ...
- 关于Cloudfront能否接入NLB的讨论
之前讨论过四层应用 是无法通过七层负载负载均衡器转发流量的,因为ALB监听的是Http/s协议,TCP/UDP的请求到了ALB无法识别,ALB在第七层做判断,数据包只有四层,会无法判断转发的目标.相反 ...
- kubernetes 使用 PV 和 PVC 管理数据存储
文章链接 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题.首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失--容器以干净的状态(镜像最初的状态)重 ...
- 前端搭建Linux云服务器,Nginx配置详解及部署自己项目到服务器上
目录 搭建Linux云服务器 购买与基本配置 链接linux服务器 目录结构 基本命令 软件安装 Linux 系统启动 启动过程 运行级别 Nginx详解 1.安装 方式一:yum安装 方式二:自定义 ...
- noip模拟42
A. 卷 发现乘积足以爆 \(long\) \(long\),但是数据随机,可以略忽略精度问题 一个快速降低数的级别的方法是取对数,由于有性质 \(log(x * y)=logx+logy\),合并时 ...
- QT 4.7.3 交叉编译环境搭建
测试平台 宿主机平台:Ubuntu 12.04.4 LTS 目标机:Easy-ARM IMX283 目标机内核:Linux 2.6.35.3 交叉编译器:arm-linux-gcc 4.4.4 tsl ...
- KMP算法的改进
KMP算法的改进 KMP算法已经在极大程度上提高了子符串的匹配效率,但是仍然有改进的余地. 1. 引入的情景 下面我们就其中的一种情况进行分析: 主串T为"aaaabcde-" 子 ...
- 一行Java代码实现游戏中交换装备
摘要:JDK 1.5 开始 JUC 包下提供的 Exchanger 类可用于两个线程之间交换信息. 本文分享自华为云社区<一行Java代码实现两玩家交换装备[并发编程]>,作者:陈皮的Ja ...
- python库--tensorflow--scope命名方式
方法 参数 说明 .name_scope() with...: name 在其下使用Variable, 变量名(V_n)前会被加上'name/...'且相同V_n会自动添加后缀加以区分, 使用ge ...