
数据库
PostgreSQL 18.6 安装记录
一、环境 项值主机192.168.6.98系统CentOS Stream 9(x86\64)SELinuxEnforcing防火墙firewalld(active)安装方式PGDG
流程:
1.master将操作记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events)
2.Slave通过I/O Thread异步将master的binary log events拷贝到它的中继日志(relay log);
3.Slave执行relay日志中的事件,匹配自己的配置将需要执行的数据,在slave服务上执行一遍从而达到复制数据的目的。
主从配置binarylog延迟产生?
1.当master tps高于sqlve线程所能承受的范围
2.网络延迟
3.磁盘io读写耗时
判断binarylog延迟
1.通过show slave status \G;sends_behind_master 0
2.mk-heartbeat
解决延迟问题
1.配置更好的硬件资源;
2.把iothread改成多线程模式(mysql5.6库进行多线程方式,5.7GTID进行多线程方式);
3.应用程序自己判断(mycat);
将一个很多表的大库切分成几个小库分到不同的节点上,具体步骤如下:
1.收集分析业务模块间的关系;
2.复制数据库到其他实例;
3.配置mycat垂直分库;
4.通过mycat访问db;
5.删除原库中已迁移表;
优点:
拆分简单;
应用程序模块清晰整合容易;
维护方便;
缺点:被拆分成多个节点的数据无法实现跨库查询,跨库查询会报错。
方案1:通过java程序调用多个数据库后将数据组装返回;
方案2:将库中的字段冗余避免出现跨库查询;
方案3:将变化不大的表设置成全局表;
库切分后但是大表仍然会有查询瓶颈;
切分后扩展性有限制;
垂直切分解决不了一些大表大量访问数据的问题,因此需要水平切分。所谓的水平切分,就是将某些大表的数据按照规则分别分散到a1,a2,a3....这些表上,然后访问数据就到a1,a2,a3这些表上访问。
分片原则:1.能不切分尽量不要切分;2.选择合适的切分规则和分片键;3.避免使用join跨分片查询(E-R表关联或者全局表);
当根据分片键进行查询或修改时,mycat会根据分片键运算规则将分片键发送到相应的数据库上。当不是用分片键进行curd时,mycat会将请求发送到所有的数据库上然后返回结果。
水平切分步骤如下:
1.根据业务状态确定要进行水平切分的表;
2.分析业务模型选择分片键以及分片算法;
3.使用mycat部署分片集群;
4.测试分片集群;
5.业务及数据迁移;
如何选择分片键
尽可能的比较均匀分布数据的各个节点上;
该业务字段是最频繁的或者最重要的查询条件;
选择完分片键之后还需要对关联的表进行E-R表操作(就是将有关联其他表数据分配到同一个节点上,避免了join操作);
控制数据库连接数量
无论是将数据库水平切分还是垂直切分,都可以在mycat上修改数据库的连接数量,对数据库的请求连接会被发送到不同的节点服务器上。可以提高数据库的连接瓶颈。mycat的作用适用必须在请求量大大环境中,如果在流量小的环境中,体现不出来作用,还有就是mysql本身的优化,曾经测试过,优化后的mysql相比没有优化的环境中使用mycat性能没有体现出来,而且mysql在语法的优化更能加快数据的返回。
评论 0