• 学习记录-MySQL实战45讲 ~ 27


    一主多从,一般用于读写分离,主库负责所有的写入和一部分读,其他的读请求则由从库分担,A 和 A’互为主备

    主备切换

    基于位点的主备切换,从库需要change master到主库并提供对应的文件名和日志偏移量,等待新主库 A’把中转日志(relay log)全部同步完成;在 A’上执行 show master status 命令,得到当前 A’上最新的 File 和 Position;取原主库 A 故障的时刻 T;用 mysqlbinlog 工具解析 A’的 File,得到 T 时刻的位点,

    mysqlbinlog File --stop-datetime=T --start-datetime=T

    基于 GTID 的主备切换

    GTID 的全称是 Global Transaction Identifier,也就是全局事务 ID,是一个事务在提交的时候生成的,是这个事务的唯一标识,在 MySQL 里面我们说 transaction_id 就是指事务 id,事务 id 是在事务执行过程中分配的,如果这个事务回滚了,事务 id 也会递增,而 gno 是在事务提交的时候才会分配

    读写分离的主要目标就是分摊主库的压力,可能导致数据不一致:

    客户端(client)主动做负载均衡,这种模式下一般会把数据库的连接信息放在客户端的连接层。也就是说,由客户端来选择后端数据库进行查询

    中间代理层 proxy,客户端只连接 proxy, 由 proxy 根据请求类型和上下文决定请求的分发路由

    强制走主库方案;sleep 方案;判断主备无延迟方案;配合 semi-sync 方案(事务提交的时候,主库把 binlog 发给从库;从库收到 binlog 以后,发回给主库一个 ack,表示收到了;主库收到这个 ack 以后,才能给客户端返回“事务完成”的确认,在一主多从场景中,主库只要等到一个从库的 ack,就开始给客户端返回确认);等主库位点方案;等 GTID 方案。

    select 1 成功返回,只能说明这个库的进程还在,并不能说明主库没问题

    innodb_thread_concurrency 参数的目的是,控制 InnoDB 的并发线程上限。也就是说,一旦并发线程数达到这个值,InnoDB 在接收到新请求的时候,就会进入等待状态,直到有线程退出

    show processlist 的结果里,看到的几千个连接,指的就是并发连接(内存消耗)。而“当前正在执行”的语句,才是我们所说的并发查询(消耗CPU),锁等待不占CPU,所以不算在并发线程的计数里

    查表判断/更新判断/内部统计

  • 相关阅读:
    LinkedHashMap源码学习
    HashMap源码学习
    Java中"或"运算与"与"运算快慢的三三两两
    Java源码记录
    SpringBoot系列随笔
    分布式事物
    分布式事物
    部署spring boot + Vue遇到的坑(权限、刷新404、跨域、内存)
    一次使用存储过程游标遇到的坑
    UML简单介绍—类图详解
  • 原文地址:https://www.cnblogs.com/it-worker365/p/14523330.html
Copyright © 2020-2023  润新知