设为首页 收藏本站
查看: 905|回复: 0

[经验分享] MySQL-12108369

[复制链接]

尚未签到

发表于 2018-10-9 06:43:28 | 显示全部楼层 |阅读模式
  MySQL:
  大规模,高并发web服务器体系结构:
  Mysql复制(主从复制,组复制),nginx,lnmp,memcached,tomcat(java,serverlet,集群),varnish(web object缓存  squid)
  Nosql(redis,mongodb)
  Mysql日志类型:
  错误日志:启动,运行,停止mysql时出现的问题
  查询日志:记录建立的客户端连接和执行的语句
  更新日志:记录更改数据的语句(不赞成使用该日志)
  慢日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询
  二进制日志:
  格式:基于语句statement;基于row行的;混合的(Mix)
  默认位置:数据目录
  mysql-bin.xxxxx (编号向后转移)
  Mysql-bin.index:二进制文件索引文件
  查看当前使用的二进制文件是哪一个并且处于哪一个prisation上:
  mysql>show master status;
  查看二进制文件内容:
  Mysql>show BINLOG EVENTS IN “FILES”;
  Mysql>show BINARY LOGS;查看当前mysql上所存在的仍然能够使用的二进制文件列表。
  滚动:二进制日志达到上限就会滚动;执行flush logs;服务器重启
  mysql 里面删除日志文件(不推荐使用rm命令):
  Mysql>PURGE
  最大文件大小,
  事物日志,错误日志,查询日志,中继日志,慢查询日志
  Mysql记录一个事件event:
  1,Timestamp:时间戳
  2.Position:位置,偏移量,offest
  3,事件本身
  4,server-id
  双主架构中,无法实现写操作。如果同时写互相矛盾的操作就有问题
  垂直拆分:一个库分成多个库
  水平拆分:拆表(依据不同的标准)
  路由:知道你要查询的目标在哪个服务器上,再整合每个查询结果返回给用户
  二进制日志(记录MySQL服务器的每一次操作)用来即时点还原:
  二进制日志恢复的数据跟原来的数据不是完全一样,  服务器有多个cpu,在处理数据的时候并发交叉进行,而二进制文件只有一个(只有一个来执行写的操作,串行),
  事务的隔离级别比较低,在并行恢复的时候仍然会产生影响。
  Mysql隔离级别:
  READ-UNCOMITTED:脏读,不可重复读,幻读
  可以看到未提交的数据
  READ-COMITTED:不可重复读,幻读
  读取提交的数据,但是可能每次读取的数据不一致。读取的数据可以写。
  REPEATABLE-READ###默认使用:幻读
  可以重复读取,但是有幻读。读取的行行数据不可写,但可以往表中新增数据,在mysql中,其他事务新增的数据看不到,不会产生幻读。采用多版本并发控制(MVCC)机制解决幻读问题
  SERIALIZABLE:
  可读,不可写。想JAVA中的锁,写事务必须等待另一个事务结束。
  如果使用的默认隔离级别,二进制日志格式是statement,就很可能导致二进制文件恢复的数据不一致。
  READ-*和mixed时也可能导致数据不一致,建议使用row格式。
  二进制日志本身不能替代数据备份,太慢。
  Mysql复制 : 在1上写入数据到数据库,与此同时在二进制文件中保存一份操作,将此文件发送到另一个服务器2上,2在收到这个文件的时候先保存的本地日志relay log(中继日志)中,然后在MySQL里面执行,执行之后保存到数据库中。中继日志除了中继从服务器的日志外没有任何其他作用。
  Mysql允许多级复制:从服务器也可以拥有自己的从服务器,此时,主服务器的从服务器就可以使用自己的二进制文件来进行从自己到从服务器的主从复制。如果从服务器过多的话可以采用多级复制,避免了因为复制使用过多的线程,减轻主服务器的复制线程。如果中间的服务器不需要保存数据,可以将数据库引擎设置为black hole (/dev/null)该创建创建,该写就写,写完之后就丢弃,不保存。
  复制的作用:
  辅助实现备份
  高可用
  异地容灾
  分担负载scale  out;
  Mysql引擎:innodb ;mylASM ;black hole
  Mysql读写分离:mysql-proxy   amoebacobar(业务逻辑拆分工具,数据拆分)
  通过mysql代理来实现,当客户端访问的sql语句是读语句的时候分配到从服务器上,当是写语句的时候分配到主服务器上。
  异步  半同步  同步 :
  Mysql主从复制(可以一主多从)默认是异步
  MySQL5.5以后支持半同步:在一主多从中,只要有一个从服务器返回执行的消息,master就认为是所有从服务器复制完成。
  针对数据库的不同设置从服务器的写权限
  冷备份
  Drbd中的半同步:数据只要发送到tcp/ip的缓存中就好了
  一个salve只能有一个master
  Mysql 5.5 之前复制
  5.6gtid全局事务号,在多事务执行的时候不会产生事务混乱,引入multi-thread replication多线程复制
  主服务器端自动启动dump线程,从服务器启动I/O线程,主动去查看主服务器的二进制文件是否有改动,如果有,主服务器就会启动dump线程复制bin-log文件到从服务器I/O线程,从服务器再开启sql线程,读取中继日志进行本地执行回放
  SSL双向验证
  Mysql主从复制过滤:结合通配符% __
  主master:
  Binlog-do-db:仅将指定数据库的相关修改操作记入二进制日志
  Bin-ignore-db
  从slave:
  Replicate-do-db
  Replicate-ignore-db
  Replicate-do-table
  Replicate-ingore-table
  Replicate-wild-do-table
  Replicate-wild-ingore-table
  Mysql5.6:
  1.Gtid:标识每一个主机上的事务的id,追踪比较事务  innodb高可用依靠gtid来实现
  2.多线程复制:每个数据库只能使用一个线程。多个数据库时使用多线程复制
  并发线程工作数Slave-parallel-workers=n##0 禁用多线程功能
  Mysqlreplication
  Mysqlrplcheck
  Mysql优化:

  1,sql语句优化
  2,索引优化
  3,数据库结构优化
  4,innodb表优化
  5,myiasm表优化
  6,memroy表优化
  7,理解查询执行计划
  8,缓冲和缓存缓存常用的表,缓冲数据
  9,锁优化只能有一个操作--》用不同级别的锁(表锁,页锁,行锁)
  10,MySQL服务器优化
  11,性能评估
  12,mysql优化内幕
  MySQL优化需要在三个不同层次协调进行:
  MySQL级别,OS级别和硬件级别
  1,MySQL级别的优化包括表优化,查询优化和MySQL服务器配置优化。MySQL的各种数据结构有最终作用于OS直至硬件设备,因此还需要了解每种结构OS级别的资源的需要并最终导致的cpu和I/O操作,并在此基础上将CPU及I/O操作需要尽量降低以提升其效率。
  2,数据库层面的优化着眼点:
  1)是否正确设置了表结构的相关属性,尤其是每个字段的字段类型是否为最佳,是否为特定类型的工作设置了合适的表及表字段。
  2)是否为高效查询创建了合适的索引。
  3)是否为每张表设置了合适的村成功与引擎,并且有效利用了存储引擎本身的优势和特征。
  4)是否基于存储引擎为表选用了合适的行格式。
  5)是否使用了合适的锁策略
  6)是否为innodb的缓冲池,myiasm的键缓存以及MySQL查询缓存设定了合适大小的内存空间,以便存储频繁访问的数据切不会引起页面换出。
  操作系统和硬件级别的优化:
  1)是否为实际工作选用了合适的cpu
  2)是否有着合适的大小的物理内存,并通过合理的配置平衡内存和磁盘资源
  3)是否选用了合适的网络设备并正确地配置了网络对整体系统也有着重大影响。延迟和带宽是网络延迟的限制因素。常见问题有丢包。
  4)是否基于操作系统选择了合适的文件系统
  5)MySQL是否对线程进行了有效的管理。
  Mylasm引擎:数据挖掘,性能较优
  .MYD数据
  .MYI索引
  .frm表结构
  Innodb引擎:在线事务
  .frm表结构
  .ibd: 表空间
  数据
  索引


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-617968-1-1.html 上篇帖子: mysql wait_timeout和interactive_timeout总结 下篇帖子: mysql基础(七)select语句
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表