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;
结果如下所示:
- 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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://i-blog.csdnimg.cn/blog_migrate/68187e9885c473b570546bac764c96b0.jpeg)
最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)
学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)
除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)
学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)
[外链图片转存中…(img-ZaXPMOgt-1712437457792)]
除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!