一,项目起因
二,项目需求
三,项目搭建
四,项目总结

1.项目起因:
由于公司正在处于创业阶段业务正在稳步上升,访问量日益增大我们的环境已经到达一个瓶颈,因为Mysql都是由阿里云的一台突发型的云服务器,带宽:50M,机型:8核16G,磁盘:5T,为我们提供服务,业务的增长速度远远超过了先前的设计,现阶段面临着两大难题一个就是我们如何应对高并发,另一个就是高性能方面,如果一旦向外扩展还需考虑到高可用方面,经过项目经理+开发+运维开会决定给Mysql搭建集群,提出了如下方案
方案一,Mysql+Mycat+MHA
方案二,Mysql+Mycat+Cluster
方案三,Mysql+Mycat+Keepalived
2.项目需求:
1.Mysql安全
2.Mysql优化
3.Mysql主从复制+读写分离
4.Mysql高可用
5.Mysql备份策略
3.项目实施:
3.1项目安全:
3.1.1,项目安全首先考虑到给mysql的data目录直接分配一个单独的磁盘与我们的系统盘分开保证数据的容错性。
3.1.2,当下的环境对于刚创业的我们网络型防火墙的价格太贵没有考虑,使用了iptables作为我们的主机型防火墙并且配置相应的入站规则和出站规则。
3.1.3,严格控制操作系统用户的权限,比如锁定mysql用户,管理员通过普通账号管理mysql,除了root外,任何用户都不能拥有mysql库下的user表的存取权限,以及给root设置相对复杂的密码,并且做到定时修改。
3.1.4,权限做到最小化分配,尽量避免直接使用root运行mysql,安装mysql服务可以是root来安装但是实际还是让mysql运行
chmod -R mysql:mysql /data/mysql/data
3.2项目优化:

3.2.1,既然说到优化,那怎样优化呢,怎么知道是那些SQL ,是对DML还是DQL,用什么工具。

3.2.2,我这里做的都是主要以索引为优化的一个策略,什么是索引,有哪些索引,索引里面又什么索引,什么是数据结构,mysql当中有那些数据结构。
3.2.3,主键优化–主键顺序插入,主键尽量使用自增的id不要使用UUID
3.2.4,insert优化-使用load加载,批量插入
3.2.5,order by 优化-根据排序缓冲区去排序
3.2.6,update优化-根据主键值去更新数据
3.2.7,慢查询-开启慢查询定位问题以及分析问题

3.3,主从复制+读写分离
应对高并发的场景考虑了一主三从的架构,还能做到主库的数据及时的同步到从服务器实现冗余,读写分离必须基于主从复制,降低主服务器的压力
,让主服务器进行DML语句,让从服务器进行DQL来的语句,分工明确实现负载均衡,提高数据库整体的性能。

读写分离:使用mycat中间件实现读写分离,master负责写,slave负责读

3.4,Mysql高可用:
3.4.1,这里搭建的是一个MHA的高可用的集群,MHA为了保证数据库集群至少有一个数据库可用而产生的软件。
3.4.2,MHA切换原理:
MHA的高可用切换原理:
1.当主数据库宕机时,MHA会尝试保存的master的binlog日志
2.MHA会选一台与主数据库数据最接近的slave,把最接近的salve提升为master
3.将从主数据库保存过来的binlog日志,在备主上执行
4.将此备主提升为新的master,其他slave指向新的master

3.5,Mysql备份策略
1.热备份+逻辑备份+周一完备,周二到周天使用增量备份
2.配置任务计划+脚本

3.6项目总结:
这个项目总体来说解决了我们公司的单机问题,使得整个业务更高效,用户体验更好,
1.了解一下CAP定理。
2.原子性,一致性,隔离性,持久性,是怎么实现的。
3.mysql主从线程的问题。