三毛笔记

MySQL架构

两台或以上数据库实例,通过二进制日志,实现数据的“同步"关系。

主从复制

实例准备:两台以上MySQL实例,server_id不同。

主库

从库

主从复制原理

文件

主库:binlog文件

从库:

线程

主库:Binlog_dump_Thread,作用是用来接收从库请求,并将binlog投递给从库。显示正在运行线程:show processlist;

从库:

原理

  1. S:change master to信息写入到master.info,执行start slave;启动IO线程和SQL线程
  2. S:IO线程读取master.info信息,获取主库信息连接主库
  3. M:分配DUMP线程,专门和IO线程通信
  4. S:IO线程根据master.info记录的binlog文件名和position号,请求主库新日志
  5. M:DUMP线程接收请求,截取日志,返回给IO线程
  6. S:IO线程将收到日志存储到TCP/IP缓存,立即返回ACK给主库,主库工作完成
  7. S:IO线程将缓存数据,存储到relay-log日志文件,并更新master.info,IO线程工作结束
  8. S:SQL线程读取relay-log.info,获取上次执行到的位置点
  9. S:SQL线程向后执行新的relay-log,再次更新relay-log.info

小细节:
S:参数relay_log_purge=ON,会定期删除用用过的relay-log
M:DUMP线程会实时监控主库binlog变化,如果有新变化,发信号给从库,IO线程再请求

主从监控

主库方面:

从库方面:

MHA

全称:Master High Availability,是Perl语言写的MySQL故障切换方案,故障切换时间10-30s。

MHA由node和manager组成;

部署MHA高可用框架

配置关键程序软连接:

ln -s /app/database/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
ln -s /app/database/mysql/bin/mysql /usr/bin/mysql

配置各节点互信:

rm -rf /root/.ssh
ssh-keygen
cd /root/.ssh
mv id_rsa.pub authorized_keys
scp -r /root/.ssh 10.0.0.52:/root 
scp -r /root/.ssh 10.0.0.53:/root

各节点安装Node:

yum install perl-DBD-MySQL -y
rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm

安装Manager:

yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

创建MHA专用监控管理用户:grant all privileges on . to mha@'10.0.0.%' identified by 'mha';

Atlas

Atlas中间件是由奇虎360基于MySQL官方中间件mysql-proxy二次开发实现,能够对数据库进行读写分离、分库分表配置,配合MHA架构进行高可用环境搭建有较好效果。

MyCAT

分布式架构

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »