MySQL如何搭建集群(附搭建过程详细命令及步骤截图)

本文详细介绍了MySQL集群架构的三个关键要素:可用性、扩展性和一致性。通过主从模式解释了数据复制的过程,探讨了主库宕机和从库延迟等问题,并提出半同步复制和并行复制的解决方案。半同步复制确保数据提交前从库已确认,而并行复制则通过组提交优化从库的执行效率。文章还提供了详细的配置和设置步骤,帮助读者理解和实践这两种优化策略。
摘要由CSDN通过智能技术生成

概述

集群架构设计的三个维度:可用性、扩展性、一致性。
可用性主要是站点、服务、数据的高可用。
扩展性主要是加从库或者是分库分表。
一致性主要是如何保证访问数据的一致。

主从模式实现原理

在这里插入图片描述
实现步骤:
1)主库将数据库的变更操作记录到Binlog日志文件中
2)从库读取主库中的Binlog日志文件信息写入到从库的Relay Log中继日志中
3)从库读取中继日志信息在从库中进行Replay,更新从库数据信息
具体触发机制如下:
1)Master服务器对数据库更改操作记录在Binlog中,BinlogDump Thread接到写入请求后,读取 Binlog信息推送给Slave的I/O Thread。
2)Slave的I/O Thread将读取到的Binlog信息写入到本地Relay Log中。
3)Slave的SQL Thread检测到Relay Log的变更请求,解析relay log中内容在从库上执行。
存在的问题:
1)主库宕机后,数据可能丢失
2)从库只有一个SQL Thread,主库写压力大,复制很可能延时
解决的办法:
1)半同步复制—解决数据丢失的问题
2)并行复制----解决从库复制延迟的问题

实现步骤

1)修改主库my.cnf配置文件
执行命令vim /etc/my.cnf
log_bin=mysql-bin #开启binlog,文件名称为mysql-bin
server-id=1 #指定server-id
sync-binlog=1 #执行几次后进行磁盘同步1就代表次数
#忽略以下库的同步
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys
#指定同步的库 不设置就是同步所有库
binlog-do-db=test
2)完成配置修改重启mysql
systemctl restart mysqld
3)主库授权
#登录MySQL
mysql -uroot -p
#主库授权设置
grant replication slave on . to ‘root’@’%’ identified by ‘root’;
grant all privileges on . to ‘root’@’%’ identified by ‘root’;
#刷新权限,立即生效
flush privileges;
#查看主库状态
show master status;
4)从库配置修改
执行命令 vim /etc/my.cnf
server-id=2
relay_log=mysql-relay-bin #relay-log名称
read_only=1 #此库只读
5)完成配置修改重启mysql
systemctl restart mysqld
6)从库启动授权
#登陆数据库设置复制的主库
change master to master_host=‘47.106.138.46’,master_port=3306,master_user=‘root’,
master_password=‘root’,master_log_file=’ master-bin.000002’,master_log_pos=154;
#查看从库状态
show slave status \G;
#开启从库
start slave;
#停止从库
stop slave;
#重新绑定主库
reset master;
#主库修改配置,从库无法启动,重置
reset slave;

半同步复制

MySQL让Master在某一个时间点等待Slave节点的ACK消息,接收到ACK消息后才进行事务提交。

实现步骤

1)主库半同步复制设置
#是否支持动态加载
select @@have_dynamic_loading;
在这里插入图片描述

#查看插件列表
show plugins;
在这里插入图片描述

#安装半同步复制插件并起别名
install plugin rpl_semi_sync_master soname ‘semisync_master.so’;
在这里插入图片描述

#查看半同步复制相关参数
show variables like ‘%semi%’;
在这里插入图片描述

#开启半同步复制
set global rpl_semi_sync_master_enabled=1;
#设置超时时间,默认10秒,设置为1秒
set global rpl_semi_sync_master_timeout=1000;
在这里插入图片描述

2)从库半同步复制设置
#是否支持动态加载
select @@have_dynamic_loading;
在这里插入图片描述

#查看插件列表
show plugins;
#安装从库半同步复制插件并起别名
install plugin rpl_semi_sync_slave soname ‘semisync_slave.so’;
#查看半同步复制相关参数
show variables like ‘%semi%’;
在这里插入图片描述

#开启从库半同步复制
set global rpl_semi_sync_slave_enabled=1;
在这里插入图片描述

#重新加载从库
stop slave;
start slave;
在这里插入图片描述

切换到/var/log目录,查看mysqld.log日志文件核验半同步复制是否生效
在这里插入图片描述

并行复制

当事务提交时,通过在主库上的二进制日志中添加组提交信息,并将在单个操作中写入到二进制日志中。如果多个事务能同时提交成功,那么它们意味着没有冲突,因此可以在Slave上并行执行。

实现步骤

1)主库设置
#查看数据库组信息
show variables like ‘%binlog_group%’;
在这里插入图片描述

#设置延迟时间
set binlog_group_commit_sync_delay=1000;
#设置组内事务数量
set binlog_group_commit_sync_no_delay_count=100;
2)从库配置
#查看从库可设置参数
show variables like ‘%slave%’;
在这里插入图片描述

#修改并行复制方式,由库改组
set global slave_parallel_type=‘LOGICAL_CLOCK’;
#设置组内最大线程数
set global slave_parallel_workers=8;
#查看relay相关参数
show variables like ‘%relay_log%’;
在这里插入图片描述

#打开relay_log写入权限
set global relay_log_recovery=1;
#设置日志信息源为table,提高效率
set global relay_log_info_repository=’TAABLE’;
#重启服务,使配置生效
systemctl restart mysqld

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值