MySql 集群/主从
文章目录
- 集群(高可用)
- 原理
- 主从(高性能)
- 原理
- 配置
- 启动前:配置文件my.ini
- 主库挂掉,从库需要手动设置新的主库
- 复制
- 1. 同步复制:
- 2. 异步复制
- 3. 半同步复制:
- 3. 并行复制 MTS multi-threaded slave
- 多源复制(Multi-Source Replication)
集群(高可用)
集群是使用PXC-mysql(Percona XtraDB Cluster),多节点的数据实时同步(读写)
需要用到mysql cluster安装包,要求运行在千兆以上的局域网内,节点可以采用双网卡,节点组之间采用直连方式。
优点就是数据实时同步,高可用,每个节点的数据都是同步一致的,任何一个节点宕机都不会影响业务。
缺点就是性能,写的性能,每次写操作,都会在所有节点之间进行同步
原理
数据节点之间采用的是 同步复制 来保证各节点之间的数据一致性,一般通过两阶段提交协议来实现
管理节点(一个),SQL节点(多个)和数据节点(多个)
2PC同步复制一共需要4次消息传递
主从(高性能)
mysql community(普通版)就可以
读写分离:主写从读 保证高性能
主从之间是通过mysql的复制来保证数据的一致性。相对mysql 集群的数据同步方式来讲是异步的。
但是主从也有缺点,一个是不满足高可用,master宕机,需要手动切换才行,业务会中断不允许的,
原理
- 主从复制
主节点要开启binlog,设置一个唯一的服务器id(局域网内唯一);从节点设置服务器id,binlog记录了主节点上的所有的DDL和DML操作操作,会被复制到从节点的relaylog并在从节点上回放。
配置
启动前:配置文件my.ini
- master
server-id = 唯一id
binlog-do-db = 要复制的数据库
# 开启二进制日志文件
log-bin = mysql-bin
- salve
server-id = 唯一id
binlog-do-db = 要同步的数据库,与master上的配置保持一致
# 开启二进制日志文件
log-bin = mysql-bin
- 启动slave线程
-- 存库 启动I/O 线程和SQL线程
mysql> start slave
主库挂掉,从库需要手动设置新的主库
对比选择Relay_Master_Log_File,Exec_Master_Log_Pos最大的作为新的主库
--停止同步线程
mysql> stop slave io_thread;
--查看正在执行的线程
mysql> show processlist;-- 表示从库更新都执行完毕Slave has read all relay log; waitingfor more updates--停止I/O 线程和SQL线程
mysql> stop slave;--重启存库变为主库
--删除所有的binglog日志文件,并将日志索引文件清空,重新生成二进制日志
mysql> reset master;-- 其他存库地址执行新的主库
mysql> change master to master_user='RepUser',master_password='beijing',master_host='192.168.80.134',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=154;
最后,程序里调用主库的IP也要变,或者将从库IP地址改为主库IP地址,测试应用连接是否正常。
复制
I/O线程:从主库读取bin log,并存储到relay log中继日志文件中。
SQL线程:读取中继日志,解析后,在从库重放。
1. 同步复制:
集群同步复制
指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。
2. 异步复制
Mysql5.5之前的 主从复制 是异步的
- 存在问题:
- 主从延迟可能导致数据丢失:主库宕机造成主库上的事务binlog丢失
3. 半同步复制:
解决数据丢失的问题
主库要等待从库反馈同步成功(不需要等待所有从库给主库反馈。而是等待至少一个从库反馈)。
当出现超时,主数据库将会自动转为异步复制模式,
直到至少有一台从服务器接受到主数据库的binlog,并且反馈给主数据库。这时主数据库才会切换回半同步复制模式。
- MySQL5.5开始,MySQL以插件的形式支持半同步复制
3. 并行复制 MTS multi-threaded slave
解决复制延迟问题
5.6 基于库,多库并行复制
多库才有用,基本无人问津5.7 是基于组提交的并行复制,官方称为enhanced multi-threaded slave(简称MTS)
基于GTID的主从复制,对事务进行分组 + 二阶段提交,其核心思想:
- master服务器上是怎么并行执行的,那么slave上就怎样进行并行回放
- 组复制(group commit):通过对事务进行分组,一个组提交的事务都是可以并行
组复制原理
事务有冲突就不会进入prepare阶段,同时处于prepare阶段的事务就无冲突,那它们就不会共享任何锁,那么这些事务都是可以并行执行。这些事务就能分在一组
mysql的并行复制的具体实现落地 https://blog.csdn.net/Lockey23/article/details/78122111?locationNum=9&fps=1
多源复制(Multi-Source Replication)
MySQL 5.7之前只能实现一主一从、一主多从或者多主多从的复制。
MySQL 5.7 开始支持了多主一从的复制方式,也就是多源复制
MySql 集群/主从相关推荐
- Mysql集群主从搭建指定数据库同步数据
1.全库同步与部分同步 之前提到,我们目前配置的主从同步是针对全库配置的,而实际环境中,一般并 不需要针对全库做备份,而只需要对一些特别重要的库或者表来进行同步.那如何 针对库和表做同步配置呢? 首先 ...
- 关于Linux下MySql集群同步(主从、一主多从、主从从)部署及同步策略的一些笔记
写在前面 和小伙们分享一些Mysql集群主从同步相关的笔记 博文内容涉及: 为什么需要mysql集群主从同步 主从同步原理 部署不同主从结构的Mysql集群 同步使用的复制模式介绍配置 理解不足小伙伴 ...
- consul配置mysql集群_consul1.6实现Mysql-Gtid主从读写分离和高可用-03
规划 Mysql Gtid主从配置 https://blog.51cto.com/9025736/2500516 consul集群搭建 https://blog.51cto.com/9025736/2 ...
- mysql 集群操作系统_高性能MySQL集群详解(二)
一.通过Keepalived搭建MySQL双主模式的高可用集群系统 1.MySQL Replication介绍: MySQL Replication是MySQL自身提供的一个主从复制功能,其实也就是一 ...
- mysql主主复制+keepalived 打造高可用mysql集群
为了响应公司需求,打造出更安全的mysql集群,能够实现mysql故障后切换,研究了几天终于有了成果,一起分享一下. 首先介绍一下这套集群方案实现的功能 1.mysql服务器故障后自动转移,修好后自动 ...
- MySQL集群(一)之主从复制
前面学完了JDBC,接下来带大家感受一下MySQL集群!其实什么是MySQL集群?简单的说就是一群机器(服务器)的集合,它们连在一起来工作. 其实各种数据库都有自己的集群,常常的多: 我们要学习的就是 ...
- 使用mysql-proxy 快速实现mysql 集群 读写分离
使用mysql-proxy 快速实现mysql 集群 读写分离 2011-12-29 17:03 目前较为常见的mysql读写分离分为两种: 1. 基于程序代码内部实现:在代码中对select操作分发 ...
- haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群
概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...
- go连接mysql集群_什么是MySQL集群-Go语言中文社区
一.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committe ...
- Mysql 集群双主双从安装使用详细讲解
文章目录 下载Mysql 安装单机Mysql 配置Mysql集群 双Master配置 master1配置 master2配置 配置说明 双Slave配置 Slave1配置 Slave2配置 双 Mas ...
最新文章
- AngularJS中的按需加载ocLazyLoad
- 雷军这个程序员!真的牛逼!
- 网站建设很简单,想要成功却很难
- 模仿Retrofit封装一个使用更简单的网络请求框架
- NAACL 2019最佳论文:量子概率驱动的神经网络
- 湖南计算机专业专科排名2015,湖南最好的公办专科大学有哪些排名揭秘?湖南十大专科学校推荐?...
- python注释的用法(单and多行)
- 线性表:顺序队列算法实现
- 11月 北京 | 高性能之GPU CUDA 3天密集式进阶课程
- 常用数据结构有哪些(转)
- mysql开发平台_搭建mysql编程平台
- vs 2017 建立 php,WIN10系统下OSG+VS2017或者vs2019环境搭建
- matlab噪音的消除办法,基于MATLAB的噪声消除方法.ppt
- java实现DSA签名、验签
- 中兴 Axon 40 Ultra参数评测 中兴 Axon 40 Ultra配置怎么样 中兴 Axon 40 Ultra值得买吗
- Matlab 中一些符号的含义
- 当当网读书排行榜爬虫
- 突发,韩国三星发生重大变化!
- 计算机二级office在线练习,全国计算机二级《MS office》练习题及答案
- 超详细VSCode安装教程(Windows)