一、选择PerconaServerMariaDB还是MYSQL

 

 

1Mysql  三种存储引擎

 

MySQL提供了两种存储引擎:MyISAM和InnoDB,MySQL4和5 使用默认的MyISAM存储引擎。从MYSQL5.5开始,MySQL已将默认存储引擎从MyISAM更改为InnoDB。MyISAM没有提供事务支持,而InnoDB 提供了事务支持。

 

 

XtraDB是InnoDB  存储引擎的增强版本,被设计用来更好的使用更新计算机硬件系统的性能,同时还包含有一些在高性能环境下的新特性。

2、Percona    Server分支

PerconaServer由领先的MySQL咨询公司Percona发布。

PerconaServer是一款独立的数据库产品,其可以完全与MySQL  兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB。是最接近官方MySQL Enterprise  发行版的版本。

Percona   提供了高性能XtraDB   引擎,还提供PXC   高可用解决方案,并且附带了

percona-toolkit等DBA管理工具箱,

 

3、MariaDB

MariaDB由MySQL的创始人开发,MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL  的代替品。

MariaDB提供了MySQL提供的标准存储引擎,即MyISAM和InnoDB,10.0.9版起使用

XtraDB(名称代号为Aria)来代替MySQL的InnoDB。

 

4、如何选择

 

综合多年使用经验和性能对比,首选Percona  分支,其次是MariaDB,如果你不想冒一

点风险,那就选择MYSQL官方版本.



二、    常用的MYSQL调优策略

 

1、硬件层相关优化

 

 

修改服务器BIOS设置

l  选择PerformancePerWattOptimized(DAPC)模式,发挥CPU最大性能。

l  MemoryFrequency(内存频率)选择MaximumPerformance(最佳性能)

l  内存设置菜单中,启用NodeInterleaving,避免NUMA  问题

 

 

2、磁盘I/O相关

 

 

 使用SSD硬盘

l     如果是磁盘阵列存储,建议阵列卡同时配备CACHE及BBU模块,可明显提升IOPS。

l     raid级别尽量选择raid10,而不是raid5.

 

3、文件系统层优化

 

 

l 使用deadline/noop这两种I/O调度器,千万别用cfq

l 使用xfs文件系统,千万别用ext3;ext4勉强可用,但业务量很大的话,则一定要用xfs;

l  文件系统mount参数中增加:noatime,nodiratime,nobarrier几个选项(nobarrier是xfs

文件系统特有的);



注:修改io调度算法

[root@IO-0-1 ~]# cat /sys/block/sda/queue/scheduler

noop anticipatory deadline [cfq] ----括号中为当前使用的算法

修改IO调度算法

[root@IO-0-1 ~]# echo deadline > /sys/block/sda/queue/scheduler

[root@IO-0-1 ~]# cat /sys/block/sda/queue/scheduler

noop anticipatory [deadline] cfq  可以看到IO调度算法已经修改为deadline

mount参数添加noatime,nodiratime,nobarrier



# vi /etc/fstab

nodiratime,nobarrier

devpts           /dev/pts      devpts   gid=5,mode=620             0 0

proc             /proc         proc     defaults                   0 0

/dev/sda2        swap          swap     defaults,noatime           0 0

修改设置后只需要重新挂载文件系统、不需要重启就可以应用新设置:

 

# mount -o remount /


或者直接挂载: mount -o noatime,nodiratime,nobarrier /dev/sdb1 /data



Centos 6安装xfs的方法:


安装xfs相关包,挂载xfs内核

 # yum install xfsprogs kmod-xfs xfsdump xfsprogs-devel

 # modprobe xfs

 # lsmod |grep xfs

xfs                  1124960  1
exportfs         4236  1 xfs





 

 

4、内核参数优化

 

 

l  修改vm.swappiness参数,降低swap使用率。RHEL7/centos7以上则慎重设置为0,可能发生OOM

l  调整vm.dirty_background_ratio、vm.dirty_ratio  内核参数,以确保能持续将脏数据刷新到磁盘,避免瞬间I/O写。产生等待。

l  调整net.ipv4.tcp_tw_recycle、net.ipv4.tcp_tw_reuse  都设置为1,减少TIME_WAIT,提

高TCP效率。




修改swap使用概率??

表示使用swap的概率,此值越大,表示使用swap的概率越大。推荐配置如下:

查看目前配置:cat /proc/sys/vm/swappiness

添加如下内容到/etc/sysctl.conf

vm.swappiness=10

表示当内存使用率超过(100-10)90%时,才开始使用swap。

使配置文件生效

sysctl -p


net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_tw_reuse=1

也是在/etc/sysctl.conf文件中添加,并使之生效。




 

 

5Mysql  参数优化建议

 

 

l 建议设置default-storage-engine=InnoDB,强烈建议不要再使用MyISAM  引擎。

l  调整innodb_buffer_pool_size的大小,如果是单实例且绝大多数是InnoDB引擎表的话,可考虑设置为物理内存的50%-70%左右。


l 设置innodb_file_per_table=1,使用独立表空间。

l  调整innodb_data_file_path = ibdata1:1G:autoextend,不要用默认的10M,在高并发场景下,性能会有很大提升。

l  设置innodb_log_file_size=256M,设置innodb_log_files_in_group=2,基本可以满足大多

数应用场景。

l  调整  max_connection(最大连接数)、max_connection_error(最大错误数)设置,根据业务量大小进行设置。

l  另外,open_files_limit、innodb_open_files、table_open_cache   、table_definition_cache

可以设置大约为max_connection的10倍左右大小。

l  key_buffer_size建议调小,32M左右即可,另外建议关闭querycache。

l  mp_table_size  和max_heap_table_size   设置不要过大,另外sort_buffer_size、

join_buffer_size、read_buffer_size、read_rnd_buffer_size    等设置也不要过大。

 



三、    MYSQL  常见的应用架构分享

 

 

1、主从复制解决方案

 

 

这是MySQL自身提供的一种高可用解决方案,数据同步方法采用的是MySQLreplication技术。MySQLreplication就是从服务器到主服务器拉取二进制日志文件,然后再将日志文件解析成相应的SQL在从服务器上重新执行一遍主服务器的操作,通过这种方式保证数据的一致性。为了达到更高的可用性,在实际的应用环境中,一般都是采用MySQLreplication技术配合高可用集群软件keepalived来实现自动failover,这种方式可以实现95.000%的SLA。

 


互联网公司用的mysql一般是什么版本 现在公司常用的mysql版本_运维


 


 

 

2MMM/MHA  高可用解决方案

 

 

MMM提供了MySQL主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件。在MMM高可用方案中,典型的应用是双主多从架构,通过MySQLreplication  技术可以实现两个服务器互为主从,且在任何时候只有一个节点可以被写入,避免了多点写入的数据冲突。同时,当可写的主节点故障时,MMM    套件可以立刻监控到,然后将服务自动切换到另一个主节点,继续提供服务,从而实现MySQL  的高可用。

 

 

互联网公司用的mysql一般是什么版本 现在公司常用的mysql版本_互联网公司用的mysql一般是什么版本_02





3Heartbeat/SAN  高可用解决方案

 

 



在这个方案中,处理failover的方式是高可用集群软件Heartbeat,它监控和管理各个节点间连接的网络,并监控集群服务,当节点出现故障或者服务不可用时,自动在其他节点启动集群服务。在数据共享方面,通过SAN(StorageAreaNetwork)存储来共享数据,这种方案可以实现99.990%的SLA。

 

 

互联网公司用的mysql一般是什么版本 现在公司常用的mysql版本_ViewUI_03

 


 

 

 

 

4Heartbeat/DRBD 高可用解决方案

 

 此方案处理failover  的方式上依旧采用Heartbeat,不同的是,在数据共享方面,采用了基于块级别的数据同步软件DRBD来实现。DRBD 是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。和SAN  网络不同,它并不共享存储,而是通过服务器之间的网络复制数据。

 

互联网公司用的mysql一般是什么版本 现在公司常用的mysql版本_运维_04

 

 

 


 

 


 

四、MYSQL  经典应用架构


互联网公司用的mysql一般是什么版本 现在公司常用的mysql版本_运维_05

 

 

其中:

 

 Dbm157是mysql主,dbm158是mysql主的备机,dbs159/160/161是mysql从。MySQL写操作一般采用基于heartbeat+DRBD+MySQL  搭建高可用集群的方案。通过heartbeat实现对mysql主进行状态监测,而DRBD实现dbm157数据同步到dbm158。读操作普遍采用基于LVS+Keepalived搭建高可用高扩展集群的方案。前端AS 应用通过提高的读VIP连接LVS,LVS有keepliaved做成高可用模式,实现互备。最后,mysql主的从节点dbs159/160/161通过mysql主从复制功能同步mysql主的数据,通过lvs功能提供给前端AS应用进行读操作,并实现负载均衡。

 

 

 



转载于:https://blog.51cto.com/pizibaidu/1785226