Myslq主从系列
项目中数据库怎样部署的?
保证高可用高性能 采用主从
为什么使用Mysql主从?
1、如果数据库单机部署、能够支持的Tps和Qps在500-10000左右,如果遇到访问量大的时候,可能会给数据库造成压力;所以需要进行主从分离
2、大部分系统的访问模型都是 读多写少的场景。可以主库提供写入功能,从库进行读取功能,提高查询性能,降低主库写入压力,
3、当主库宕机的时候,可以切换从库为主机;做到数据容灾备份;
主从复制的原理?
Mysql的主从复制主要依赖与binLog日志,binLog日志以二进制的形式 存储了数据库的所有变化保存在磁盘中,主从复制主要是以异步的形式将binlog日志传入到从库中,从库将binlog日志 写入到relay log中;
从库进行回放,在从节点中开启一个线程 读取relaylog里面的数据,从而做到数据的一致性;
如何保证主从数据库的数据一致性?
将binlog的格式由statement改为row格式,行格式并不是记录的statement的sql原文;
网络延迟导致数据的不一致?
保证主从机器的一致性;可以使用一主多从的架构,也可以将binlog接入到hadoop这类系统中,让他们提供查询能力;避免从节点太多;
避免大事务;优化网络 采用局域网;提升带宽。低版本的mysql 只支持单线程复制;如果主库并发高,可以采用新版本的数据库
如果遇到主从延迟如何解决?
使用缓存:在同步写数据库的同时,也把数据写到缓存,查询数据时,会先查询缓存,不过这种情况会带来mysql和redis的数据一致性问题;
如果主节点发生故障怎么切换?
在高并发场景下,为了优化数据库性能和保证数据的高可用性,通常会采用MySQL主从架构进行部署。主从架构是指将数据库划分为主节点和从节点两个角色,主节点处理用户的写请求和更新请求,而从节点主要负责读请求和备份。
具体实现步骤如下:
-
配置主节点:在主节点上创建一个MySQL实例,并配置好my.cnf文件。在my.cnf文件中,配置binlog日志和ID,用于主从节点之间的复制。开启binlog日志后,主节点就可以将接收到的写请求和更新记录下来,到达事务的边界后写入binlog文件。
-
配置从节点:在从节点上创建一个MySQL实例,并配置好my.cnf文件。在my.cnf文件中,配置server-id,用于唯一标识从节点。然后再配置一下从节点要连接的主节点的信息,如主节点的ip、端口号、用户名和密码等等。配置好后,从节点就可以连接上主节点,并同步主节点的数据了。
-
配置主从复制:主节点配置完成后,在从节点上使用命令行工具或图形化界面的方式,连接到主节点,并进行主从复制的配置。
-
测试:配置完成后,需要对主从架构进行测试,包括主节点的写请求和更新请求、从节点的读请求,以及主节点或从节点的故障切换等情况的测试。
需要注意的是,MySQL主从架构的部署需要注意一些技术要点,如要保证主从节点时间同步,防止出现数据不一致的情况;要设置好合适的触发器和出错处理策略,以便当出现故障时能及时切换节点。同时,还要合理配置主从节点的硬件环境,以保证整个数据库的性能和可用性。