当前位置: 首页 > 科技观察

MySQL数据库通用架构设计

时间:2023-03-12 20:46:49 科技观察

1.MySQL引擎MySQL提供了两种存储引擎:MyISAM和InnoDB。MySQL4和5使用默认的MyISAM存储引擎。从MySQL5.5开始,MySQL将默认的存储引擎从MyISAM改为InnoDB。MyISAM不提供事务支持,而InnoDB提供事务支持。二、常用的MySQL调优策略1、硬件相关优化修改服务器BIOS设置,选择PerformancePerWattOptimized(DAPC)模式,最大化CPU性能。MemoryFrequency(内存频率)在内存设置菜单中选择MaximumPerformance(***性能),启用NodeInterleaving,避免NUMA问题2、diskI/O相关使用SSD硬盘如果是磁盘阵列存储,则是建议阵列卡配备CACHE和BBU模块,可以显着提升IOPS。尽量选择raid10而不是raid5作为raid级别。3、文件系统层优化deadline/noopI/O调度器的使用。不要用cfq使用xfs文件系统,也不要用ext3;ext4勉强可以用,但是如果业务量很大,就必须用xfs;在文件系统挂载参数中添加几个选项:noatime、nodiratime和nobarrier(nobarrier是xfs文件系统特有的)。4.内核参数优化修改vm.swappiness参数,减少swap使用。RHEL7/CentOS7及以上,小心设置为0,可能会出现OOM。调整vm.dirty_background_ratio和vm.dirty_ratio内核参数,保证脏数据可以持续刷入磁盘,避免瞬时I/O写入。生成等待。调整net.ipv4.tcp_tw_recycle和net.ipv4.tcp_tw_reuse为1,减少TIME_WAIT,提高TCP效率。5、MySQL参数优化建议建议设置default-storage-engine=InnoDB,强烈建议不要使用MyISAM引擎。调整innodb_buffer_pool_size的大小。如果是单实例,而且大部分是InnoDB引擎表,可以考虑设置为物理内存的50%-70%左右。设置innodb_file_per_table=1以使用单独的表空间。调整innodb_data_file_path=ibdata1:1G:autoextend,不要使用默认的10M,在高并发场景下,性能会有很大提升。设置innodb_log_file_size=256M,设置innodb_log_files_in_group=2,基本可以满足大部分应用场景。调整max_connection(连接数)和max_connection_error(错误数)的设置,根据业务量大小设置。另外,open_files_limit、innodb_open_files、table_open_cache和table_definition_cache可以设置为max_connection大小的10倍左右。建议将key_buffer_size减小到32M左右。另外,建议关闭查询缓存。mp_table_size和max_heap_table_size设置不宜过大,sort_buffer_size、join_buffer_size、read_buffer_size、read_rnd_buffer_size设置不宜过大。三、MySQL常用应用架构分享1、主从复制方案这是MySQL自身提供的高可用方案。数据同步方式采用MySQL复制技术。MySQL复制是从服务器拉取二进制日志文件到主服务器,然后将日志文件解析成相应的SQL,在从服务器上重新执行主服务器的操作,从而保证数据的一致性。为了达到更高的可用性,在实际应用环境中,一般采用MySQL复制技术配合高可用集群软件keepalived实现自动故障转移,可以达到95.000%的SLA。2.MMM/MHA高可用性解决方案MMM提供了一个可扩展的脚本套件,用于监视、故障转移和管理MySQL主-主复制配置。MMM高可用方案中,一个典型的应用是双主多从架构。通过MySQL复制技术,两台服务器可以互为主从,任何时候只能写入一个节点,避免了多点写入的问题。数据冲突。同时,当可写主节点发生故障时,MMM套件可以立即对其进行监控,然后自动将服务切换到另一个主节点继续提供服务,从而实现MySQL的高可用。3.Heartbeat/SAN高可用方案在这个方案中,处理故障转移的方法是高可用集群软件Heartbeat,它监控和管理各个节点之间连接的网络,监控集群服务。当某个节点出现故障或服务不可用时,自动启动其他节点上的集群服务。在数据共享方面,通过SAN(StorageAreaNetwork)存储实现数据共享。该解决方案可以实现99.990%的SLA。4、Heartbeat/DRBD高可用方案该方案在处理failover的方式上仍然使用Heartbeat,但不同的是在数据共享方面,它使用了块级数据同步软件DRBD来实现。DRBD是一种软件实现的无共享存储复制解决方案,用于在服务器之间镜像块设备内容。与SAN网络不同,它不共享存储,而是通过网络在服务器之间复制数据。4、MySQL经典应用架构其中:dbm157为MySQLmaster,dbm158为MySQLmaster的备机,dbs159/160/161为MySQLslave。MySQL写操作一般采用基于heartbeat+DRBD+MySQL搭建高可用集群的方案。通过心跳实现MySQLmaster的状态监控,DRBD实现dbm157到dbm158的数据同步。读操作一般采用基于LVS+Keepalived搭建高可用、高扩展集群的方案。前端AS应用通过增强读VIP连接LVS,LVS已keepliaved使其进入高可用模式,实现互为备份。***、MySQLmaster的从节点dbs159/160/161通过MySQL主从复制功能同步MySQLmaster的数据,通过lvs功能提供给前端AS应用进行读操作,并实现负载均衡。