微服务架构实战:可扩展分布式数据库集群的搭建

文章详细描述了如何在MySQL集群中进行主机资源分配,包括设置主从同步,如配置serverid、binlog、主从复制设置等,并提供了实际操作步骤和示例。
摘要由CSDN通过智能技术生成

MySQL集群主机分配

===========

我们使用六台主机创建两个MySQL集群分组,其中,集群分组1的服务器资源分配如表13-1所示。

微服务架构实战:可扩展分布式数据库集群的搭建

集群分组2的服务器资源分配如表13-2所示。

微服务架构实战:可扩展分布式数据库集群的搭建

这六台主机都必须安装MySQL。建议使用官方的yum安装源安装MySQL的最新稳定版。

yum安装源可以从MySQL的官方网站中下载。

主从同步设置

======

MySQL的主从同步设置是将主机设定为可读写服务器,将从机设定为只读服务器,从机的

数据是从主机中同步过来的。

下面以设置“10.10.10.35” (master) 与“10.10.10.36”(slave) 的主从同步为例进行说明。

1.主机设置

使用如下命令修改服务器名称:

vi /etc/hostname

将文件内容修改为“mysq1-35” 。

使用如下命令修改数据库服务器的配置:

vi /etc/my. cnf

在[mysqld]下面增加以下配置项:

[mysqld]

#服务器的ID,必须唯一

server id=35

井复制过滤:不需要备份的数据库

binlog- ignore-db=mysql

#二进制日志名称

log-bin=demo-mysql-bin

#为每个session分配的内存,在事务过程中用来存储二进制日志的缓存

binlog_ cache_ size=1M

#主从复制格式(mixed, statement,row, 默认格式是statement)

binlog_ format=mixed

#二进制日志自动删除/过期的天数。默认值为0,表示不自动删除

expire_ logs_ days=7

##跳过主从复制中遇到的所有错误或指定类型的错误,避免从机复制中断

##如1062错误是指一些主键重复,1032错误是指主从数据库数据不一致

slave_ skip_ errors=1032

#作为从机时的中继日志

relay_ 1og=demo-mysq1-relay-bin

log_ slave updates=1表示作为从机时也将复制事件写进自己的二进制日志中

log_ slave_ updates=1

#主键自增规则,避免主主同步导致ID重复

牛自增因子(每次加2 )

auto increment_ increment=2

#自增偏移(从1开始),单数

auto_ increment offset=1

设置完成后,保存配置,使用如下命令重启数据库服务器:

service mysqld restart

然后用root用户登录服务器,使用如下命令创建一个同步用户并授权:

mysql> grant replication slave, replication client on . to

‘user36’@‘10.10.10.36’ identified by ‘user123456’;

其中,user36 为用户名,user123456 为密码。

使用如下命令更新权限,让前面的设置立即生效:

mysq1> flush privileges;

使用如下命令查看主机状态:

mysql> show master status;

结果如下所示:

IFile

PositionI Binlog Do_ DB

Binlog_ Ignore_ DBI

Executed Gtid_ Set

demo-mysql-bin.000001 |

mysql

1 row in set (0.00 sec)

其中,File 为二进制日志文件名称,Position 为日志保存位置的偏移量。在后面的从机设置中将用到这两个参数。

2.从机设置

下面以“10.10.10.36"这台服务器的从机设置为例进行说明。

使用如下命令,修改服务器名称:

vi /etc/hostname

将内容修改为“mysql-36" 。

使用如下命令,修改数据库配置:

vi /etc/my.cnf

在[mysqld]下面增加以下配置项: .

[mysq1d]

server_ id=36

binlog- ignore-db=mysq1

log-bin=demo-mysql-bin

保存配置,重启数据库服务器。然后,用root用户登录数据库,使用如下所示的同步配置:

mysql>change master to master_ host=‘10.10.10.35’,master user=‘user36’,

master password=’ user123456’, master_ port=3306,

master log file=‘demo-mysql-bin. 000001’, master_ log_ _pos=123,

master_ connect_ retry=30;

其中,通过master_ log_ file 设置了主机的日志文件,通过master_ log. pos 设置了主机的日志存储位置偏移量。这两个参数必须根据当前主机的状态进行配置。

使用如下命令启动从机,即可开始进行数据同步:

mysql>start slave;

使用如下命令查看从机的同步状态:

mysql>show slave status\G;

结果如下所示:

  1. row

Slave_ IO_ State: Waiting for master to send event

Master_ Host: 10.10.10.35

Master User: user36

Master Port: 3306

Connect Retry: 30

Master_ Log_ File: demo-mysql -bin.000001

Read Master_ Log_ Pos: 123

Relay_ Log_ File: demo-mysq1 - relay-bin.000002

Relay_ Log_ Pos: 287

Relay Master_ Log_ File: demo-mysql-bin. 000001

Slave IO Running: Yes

Slave_ SQL Running: Yes

在上面的结果中,如果Slave_ IO_ Running和Slave_ SQL_ _Running 都显示为“Yes" ,则表示同步成功。

服务器“10.10.10.37”的从机设置可以参照上面的方法实现。

主主同步设置

======

将两个集群分组的主机互相进行主从同步设置,就可以实现主主同步。

参照13.2节的方法,在集群分组2中实现主从同步设置。

其中,集群分组2的主机“10.10.10.25”的数据库配置与集群分组1的数据库配置相似,只是主键的配置为了避免冲突略有不同,即使用双数作为主键,代码如下所示:

[mysqld]

server id=25

binlog- ignore-db=mysql

log-bin=demo-mysql -bin

binlog_ cache_ size=1M

binlog_ format=mixed

expire_ logs_ days=7

slave_ skip errors=1032

relay_ log=demo-mysql-relay-bin

1og slave_ updates=1

auto increment increment=2

#自增偏移(从2开始),双数

auto increment offset=2

当集群分组2的主从设置完成之后,即可对两个分组的主机实现主主同步设置。首先实现集群分组1的主机“10.10.10.35”与集群分组2的主机“10.10.10.25”的主从设置。

1.集群分组1的主机配置

在“10.10.10.35”主机上创建同步用户并授权:

mysql> grant replication slave, replication client on . to

‘user25’@‘10. 10.10.25’ identified by ‘user123456’;

更新权限:

mysql> flush privileges;

查看主机状态:

mysql> show master status;

记下查看结果中的日志文件名称和存储位置偏移量。

2.集群分组2的从机配置

使用如下所示的同步配置:

mysql>change master to master_ host=’ 10.10.10.35 ,master user=‘user25’,

master_ password= ’ user123456’,master_ port=3306,

master log_ file=’ demo-mysql-bin.000001’, master_ 1og_ pos=123,

master_ connect_ retry=30;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

image

除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

[外链图片转存中…(img-ZaXPMOgt-1712437457792)]

除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

  • 23
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值