mysql 主从复制 读写分离 MHA

mysql 的主从复制和读写分离:

读写分离和MHA高可用的前提 主从复制

主从复制的模式:

1.mysql的默认模式

异步模式:主库在更新完事务之后会立即把结果返回给从服务器,不关心从库是否接收到,是否处理成功

网络问题可能没有同步,或者是其他因素的影响导致同步失败。

快, 效率高

2.全同步模式:

主库在更新完事务之后,立即把结果返回到从库,所有的从库执行完之后才能继续下一个同步。安全,但性能低

3.半同步复制模式

介于异步和全同步之间,主库更新完事务,也是同步到从库,同步完之后有一个等待时间

等待时间是一个tcp/ip的往返时间 5ms左右

既一定程度上保证效率,又在一定程度上保证了数据的完整性

主从复制:主可以复制给从,从不能到主 也不能从到从

主从复制的延迟怎么解决:

1.网络问题:网线 路由器 防火墙的原因

2.硬件设备问题:cpu 内存 磁盘 出问题

3.配置文件 写错

配置文件中进行设置来提高数据的安全性。

前提 数据的存储引擎是innodb cat /etc/my.cnf 才行

双一设置:

innodb_flush_log_at_trx_commit=1

每次提交都会刷新事务日志,确保事务的持久性。但会影响性能

sync_binlog=1

每次提交事务,将二进制日志的内容保存到磁盘,确保日志的持久性。提高安全性

性能化设置:

sync_binlog=5 或10 0 极端情况 不建议

最多提交几条事务会进行磁盘刷新 日志内容保存到磁盘

innodb_flush_log_at_trx_commit=2

每次更新都保存在内存中,不进行刷新。

innodb_buffer_pool_size=60M

控制innodb缓冲池的大小,增大可以提高数据库的性能,但占用的是系统内存,配置时要注意合理化时间。

主从复制如何实现

主服务器记录数据变更到binlog,从服务器请求并复制这些变更到中继日志,然后执行以同步数据。异步过程,提升性能与可靠性

基于mysql的二进制日志,根据主库的二进制文件的标志位,实现主从同步。

主从服务器之间,服务器的时间要同步

架构:一主两从 三台服务器

192.168.233.21 mysql8.0主

192.168.233.22 mysql8.0从

192.168.233.23 mysql8.0从

log- slave-updates=true

允许 从服务器 从主库复制数据时,可以写入 从库 自己的二进制日志中

relay-log=relay-log-bin

从服务器上获取二进制日志的开头,开启从库的二进制日志

relay-log-index=slave-relay-bin.index

二进制日志的索引文件的名称

relay_log_recovery=1

配置从服务器 在启动使是否执行二进制日志的回复操作(和主库同步),1表示开启

Slave_IO_Running

从库和主机的读写通信是否正常

Slave_SQL_Running

slave mysql进程状态是否正常

读写分离:

前提是主从复制

在主从架构中,主库只负责写(数据写在主库,主从复制到从),从库只负责读

读写分离的方式:

1.代码 开发人员 使用代码完成,涉及到数据库的二次开发。性能好,不需要额外硬件设备

2.中间层代理 代理服务器。在客户端和主从架构之间有一个代理服务器。代理服务器收到客户端的请求之后,通过客户端的sql语句来进行判断,读转到从,写转到主

amoeba:读写分离最常用客户端代理软件。java代码开发的

192.168.233.21 mysql8.0主

192.168.233.22 mysql8.0从

192.168.233.23 mysql8.0从

192.168.233.10 jdk1.6和amoeba

192.168.233.20 maridb

MHA高可用

高可用模式下的故障切换,基于主从复制。

单点故障和主从复制不能切换的问题。

至少需要三台

故障切换过程 0-30秒

vip地址,根据vip地址所在的主机,确定主备

主和备不是优先确定的,主从复制的时候就确定了主,备是在MHA的过程中确定。

MHA的组件:

MHA NODE数据节点,每台mysql和管理服务器都要安装 监控服务器状态以及收集数据

MHA的manager管理节点

管理mysql的高可用集群

可以单独部署在一台独立的服务器,也可以部署多个

实现主备之间切换。主发生故障。切换到备。

MHA特点:

1.manager来实现主备切换

2.数据同步还是依靠二进制日志,最大程度保证数据不丢失

3.半同步方式,实现数据的完整性

一主多从的架构,最少三台

架构:

4台

master 192.168.235.21 mysql 8.0 node组件

slave1 192.168.235.22 mysql 8.0 node组件

slave2 192.168.235.23 mysql 8.0 node组件

管理节点 192.168.23.10 node组件 manager组件

masterha_check_ssh

所有的数据库节点和管理节点通过ssh来进行互相通信,检查集群的ssh配置

masterha_check_repl

检查mysql的复制情况 数据同步

masterha_manager

manager启动脚本

masterha_check_status

检查MHA集群状态的文件

masterha_master_switch

控制故障转移

masterha_stop

关闭manager服务

master_ip_failover自动故障切换时, vip的管理脚本

master_ip_online_change 在线切换时vip的管理脚本

power_manager故障发生后,关闭主机的脚本

send_report 故障切换之后,发送报警的脚本

在 manager 节点上测试 ssh 无密码认证

masterha_check_ssh -conf=/etc/masterha/app1.cnf

在 manager 节点上测试 mysql 主从连接情况

masterha_check_repl -conf=/etc/masterha/app1.cnf

在 manager 节点上启动 MHA

nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null >

/var/log/masterha/app1/manager.log 2>&1 &

查看 MHA 状态,可以看到当前的 master 是 master 节点。

masterha_check_status --conf=/etc/masterha/app1.cnf

查看 MHA 日志,也以看到当前的 master 是 192.168.233.21,如下所示。

cat /var/log/masterha/app1/manager.log | grep "current master"

相关推荐
郭源潮135 分钟前
《MySQL:MySQL表结构的基本操作》
数据库·mysql
火龙谷1 小时前
【hive】Hive对数据库,对表的操作(一)
数据库·hive·hadoop
西门吹雪@1321 小时前
redis 配置日志和数据存储位置
数据库·redis·缓存
一只栖枝2 小时前
OCP证书有效期是永久,但需要更新
数据库·开闭原则·ocp·oracle认证·ocp培训·ocp证书
王会举3 小时前
让SQL飞起来:搭建企业AI应用的SQL性能优化实战
数据库·人工智能·ai·性能优化
bing_1584 小时前
在 Spring Boot 项目中,如何进行高效的数据库 Schema 设计?
数据库·spring boot·后端·数据库schema设计
听雪楼主.4 小时前
Oracle补丁安装工具opatch更新报错处理
数据库·oracle
不吃元西4 小时前
对于客户端数据存储方案——SQLite的思考
数据库·sqlite
rgb0f04 小时前
MySQL视图相关
数据库·mysql·oracle
编程、小哥哥4 小时前
oracle值sql记录
数据库·sql·oracle