it_worker365

   ::  ::  ::  ::  :: 管理

一主多从,一般用于读写分离,主库负责所有的写入和一部分读,其他的读请求则由从库分担,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,所以不算在并发线程的计数里

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

posted on 2021-03-12 13:24  it_worker365  阅读(55)  评论(0编辑  收藏  举报