文章目录

  • 集群(高可用)
    • 原理
  • 主从(高性能)
    • 原理
    • 配置
      • 启动前:配置文件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的主从复制,对事务进行分组 + 二阶段提交,

  • 其核心思想:

    1. master服务器上是怎么并行执行的,那么slave上就怎样进行并行回放
    2. 组复制(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 集群/主从相关推荐

  1. Mysql集群主从搭建指定数据库同步数据

    1.全库同步与部分同步 之前提到,我们目前配置的主从同步是针对全库配置的,而实际环境中,一般并 不需要针对全库做备份,而只需要对一些特别重要的库或者表来进行同步.那如何 针对库和表做同步配置呢? 首先 ...

  2. 关于Linux下MySql集群同步(主从、一主多从、主从从)部署及同步策略的一些笔记

    写在前面 和小伙们分享一些Mysql集群主从同步相关的笔记 博文内容涉及: 为什么需要mysql集群主从同步 主从同步原理 部署不同主从结构的Mysql集群 同步使用的复制模式介绍配置 理解不足小伙伴 ...

  3. consul配置mysql集群_consul1.6实现Mysql-Gtid主从读写分离和高可用-03

    规划 Mysql Gtid主从配置 https://blog.51cto.com/9025736/2500516 consul集群搭建 https://blog.51cto.com/9025736/2 ...

  4. mysql 集群操作系统_高性能MySQL集群详解(二)

    一.通过Keepalived搭建MySQL双主模式的高可用集群系统 1.MySQL Replication介绍: MySQL Replication是MySQL自身提供的一个主从复制功能,其实也就是一 ...

  5. mysql主主复制+keepalived 打造高可用mysql集群

    为了响应公司需求,打造出更安全的mysql集群,能够实现mysql故障后切换,研究了几天终于有了成果,一起分享一下. 首先介绍一下这套集群方案实现的功能 1.mysql服务器故障后自动转移,修好后自动 ...

  6. MySQL集群(一)之主从复制

    前面学完了JDBC,接下来带大家感受一下MySQL集群!其实什么是MySQL集群?简单的说就是一群机器(服务器)的集合,它们连在一起来工作. 其实各种数据库都有自己的集群,常常的多: 我们要学习的就是 ...

  7. 使用mysql-proxy 快速实现mysql 集群 读写分离

    使用mysql-proxy 快速实现mysql 集群 读写分离 2011-12-29 17:03 目前较为常见的mysql读写分离分为两种: 1. 基于程序代码内部实现:在代码中对select操作分发 ...

  8. haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群

    概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...

  9. go连接mysql集群_什么是MySQL集群-Go语言中文社区

    一.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committe ...

  10. Mysql 集群双主双从安装使用详细讲解

    文章目录 下载Mysql 安装单机Mysql 配置Mysql集群 双Master配置 master1配置 master2配置 配置说明 双Slave配置 Slave1配置 Slave2配置 双 Mas ...

最新文章

  1. AngularJS中的按需加载ocLazyLoad
  2. 雷军这个程序员!真的牛逼!
  3. 网站建设很简单,想要成功却很难
  4. 模仿Retrofit封装一个使用更简单的网络请求框架
  5. NAACL 2019最佳论文:量子概率驱动的神经网络
  6. 湖南计算机专业专科排名2015,湖南最好的公办专科大学有哪些排名揭秘?湖南十大专科学校推荐?...
  7. python注释的用法(单and多行)
  8. 线性表:顺序队列算法实现
  9. 11月 北京 | 高性能之GPU CUDA 3天密集式进阶课程
  10. 常用数据结构有哪些(转)
  11. mysql开发平台_搭建mysql编程平台
  12. vs 2017 建立 php,WIN10系统下OSG+VS2017或者vs2019环境搭建
  13. matlab噪音的消除办法,基于MATLAB的噪声消除方法.ppt
  14. java实现DSA签名、验签
  15. 中兴 Axon 40 Ultra参数评测 中兴 Axon 40 Ultra配置怎么样 中兴 Axon 40 Ultra值得买吗
  16. Matlab 中一些符号的含义
  17. 当当网读书排行榜爬虫
  18. 突发,韩国三星发生重大变化!
  19. 计算机二级office在线练习,全国计算机二级《MS office》练习题及答案
  20. 超详细VSCode安装教程(Windows)

热门文章

  1. Web渗透测试-实战 方法 思路 总结
  2. 无网络环境下HTCVive VR设备运行环境搭建
  3. 基于FreeFEM++的有限元编程--2
  4. 【工具类】数据脱敏工具类
  5. GB50311-2016标准综合布线
  6. python 将excel文件转换为txt文件_python实现Excel文件转换为TXT文件
  7. 通过url直接访问项目图片
  8. JS中文乱码解决方案
  9. linux终端哪个好看,关于linux:Linux-终端最全推荐建议收藏
  10. Appium原理分析