Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从
本文主要为了记录MySQL搭建读写分离的操作,是本人的操作纪实,并没有详细讲解其中的原理和操作设置,如果需要详细解释的,不建议阅读。

环境准备:

linux系统版本 对应服务器地址 数据库 版本
CentOS7 192.168.222.132 MySQL 5.6
CentOS7 192.168.222.133 MySQL 5.6
CentOS7 192.168.222.134 MySQL 5.6

第一步:建立时间同步环境

  • 使用yum安装npt
yum install ntp –y
  • 安装完成之后修改ntp对应的配置文件
vi /etc/ntp.conf
  • 添加如下配置:图片中地址,对应我们自己服务器的地址
restrict 192.168.222.132 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 8

在这里插入图片描述

  • 启动ntp服务
systemctl start ntpd
  • 检验ntp是否成功安装运行,如果正常工作我们可以得到如下信息
ntpq -p

在这里插入图片描述

将我们三台服务全部做以上配置,配置完成之后,我们就可以开始设置主mysql服务器了

第二步:配置 MySQL 主服务器

  • 打开my.cnf配置文件,进行如下配置
# 打开文件
vi /etc/my.cnf

找到配置文件中的这一段,然后按照下面的配置进行修改
在这里插入图片描述

server-id=132   # 使用ip的后端作为我们的主服务id
log_bin=mysql-bin  # 开启MySQ二进制日志系统。
  • 登录mysql,然后获取数据库列表
mysql -uroot -P3306 -p123456 -h192.168.222.132

show databases;

在这里插入图片描述

binlog-do-db=test  # 需要同步的数据库名test,其他的数据库不同步。
binlog-ignore-db=mysql   #不同步mysql系统数据库,每一个数据库对应一行。
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
  • 配置完成,重复服务
service mysql restart
  • 查看我们的配置是否成功
show master status;

在这里插入图片描述

如果显示结果和我们配置一致证明我们的主服务器配置已经成功啦!可以进行从服务器的配置

配置从服务器

  • 打开my.cnf配置文件,进行如下配置
# 打开文件
vi /etc/my.cnf

找到配置文件中的这一段,然后按照下面的配置进行修改
在这里插入图片描述

server-id=133   # 使用ip的后端作为我们的主服务id
log_bin=mysql-bin  # 开启MySQ二进制日志系统。
  • 登录mysql,然后获取数据库列表
mysql -uroot -P3306 -p123456 -h192.168.222.133

show databases;

在这里插入图片描述

binlog-do-db=test  # 需要同步的数据库名test,其他的数据库不同步。
binlog-ignore-db=mysql   #不同步mysql系统数据库,每一个数据库对应一行。
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
  • 配置完成,重复服务
service mysql restart

从服务器需要做的关键操作

  • 为从服务器创建一个可以登录主服务器的账号。
# 登录主服务器,创建一个新账号
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.222.133' IDENTIFIED BY '123456';
# 刷新权限
FLUSH PRIVILEGES;
  • 然后使用root用户连接mysql,再执行一下语句
change master to
master_host='192.168.222.132',
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.000011',
master_log_pos=1243;
  • 配置完成之后,启动从服务器
start slave;
  • 查看从服务器启动状态
show slave status \G;

在这里插入图片描述
出现上面这两个“Yes”就证明已经配置成功了

  • 如果发现配置不对,需要先停掉从服务器
stop slave;
  • 然后重置从服务器
reset slave;

采坑解决

在这里插入图片描述
如果出现如上报错,我们需要先停止从服务器。该问题引起的原因是我之前安装数据库的时候并没有发现他们的版本不一致导致的,停机更新版本之后再次按照下面步骤操作就好了。

# 先停掉从服务器
stop slave;
# 重置从服务器
reset slave;
# 然后排查配置的问题,重新配置一遍
change master to
master_host='192.168.222.132',
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.000011',
master_log_pos=709;
# 再次启动
start slave;
# 查看服务器状态
show slave status \G;

尝试创建一个表,查看是否同步

CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id',
  `user_name` varchar(255) DEFAULT NULL,
  `pass_word` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

在这里插入图片描述

到这里我们已经成功啦!


注意:

我们配置第三台服务的时候,需要从新创建一个给第三台服务器访问的主服务器的账号。同时,由于我们是在本地虚拟机上安装的读写分离环境,所以每一次启动mysql或者关闭虚拟机都会导致mysql的position改变,所以我们要跟随着配置变化,每次启动读写环境前检查一下,修改配置和上面采坑解决的步骤一直。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
设计模式 监控 Java
分布式系统架构4:容错设计模式
这是小卷对分布式系统架构学习的第4篇文章,重点介绍了三种常见的容错设计模式:断路器模式、舱壁隔离模式和重试模式。断路器模式防止服务故障蔓延,舱壁隔离模式通过资源隔离避免全局影响,重试模式提升短期故障下的调用成功率。文章还对比了这些模式的优缺点及适用场景,并解释了服务熔断与服务降级的区别。尽管技术文章阅读量不高,但小卷坚持每日更新以促进个人成长。
24 11
|
5天前
|
消息中间件 存储 安全
分布式系统架构3:服务容错
分布式系统因其复杂性,故障几乎是必然的。那么如何让系统在不可避免的故障中依然保持稳定?本文详细介绍了分布式架构中7种核心的服务容错策略,包括故障转移、快速失败、安全失败等,以及它们在实际业务场景中的应用。无论是支付场景的快速失败,还是日志采集的安全失败,每种策略都有自己的适用领域和优缺点。此外,文章还为技术面试提供了解题思路,助你在关键时刻脱颖而出。掌握这些策略,不仅能提升系统健壮性,还能让你的技术栈更上一层楼!快来深入学习,走向架构师之路吧!
36 11
|
1天前
|
设计模式 存储 算法
分布式系统架构5:限流设计模式
本文是小卷关于分布式系统架构学习的第5篇,重点介绍限流器及4种常见的限流设计模式:流量计数器、滑动窗口、漏桶和令牌桶。限流旨在保护系统免受超额流量冲击,确保资源合理分配。流量计数器简单但存在边界问题;滑动窗口更精细地控制流量;漏桶平滑流量但配置复杂;令牌桶允许突发流量。此外,还简要介绍了分布式限流的概念及实现方式,强调了限流的代价与收益权衡。
27 11
|
13天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
91 15
|
7天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
14天前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB 分布式版 V2.0,安全可靠的集中分布式一体化数据库管理软件
阿里云PolarDB数据库管理软件(分布式版)V2.0 ,安全可靠的集中分布式一体化数据库管理软件。
|
14天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
14天前
|
存储 算法 安全
分布式系统架构1:共识算法Paxos
本文介绍了分布式系统中实现数据一致性的重要算法——Paxos及其改进版Multi Paxos。Paxos算法由Leslie Lamport提出,旨在解决分布式环境下的共识问题,通过提案节点、决策节点和记录节点的协作,确保数据在多台机器间的一致性和可用性。Multi Paxos通过引入主节点选举机制,优化了基本Paxos的效率,减少了网络通信次数,提高了系统的性能和可靠性。文中还简要讨论了数据复制的安全性和一致性保障措施。
32 1
|
18天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
27天前
|
人工智能 运维 算法
引领企业未来数字基础架构浪潮,中国铁塔探索超大规模分布式算力
引领企业未来数字基础架构浪潮,中国铁塔探索超大规模分布式算力