Mysql分布式集群

  • 主从复制:
    • 这个过程会产生时延:
      • 网络延迟:可忽略
      • master多个线程在写binlog,但slave只有一个sql线程在重放
      • 即使只有一个master线程在写,我们知道日志是顺序读写的,但relay log日志重放的过程中,是随机写的,也就是sql线程是个随机读写线程 =》解决方法:MTS(enhanced multi-threaded slave)
  • MTS:
    • 但也不能太多,如果突然断点,数据就全没了。
    • 实现方式是在binlog event中增加必要的信息,以便slave节点根据这些信息实现并行复制。
    • 假设有8个线程一起在写内存,由于并发写不能存在锁冲突,所以有了组提交(所以一组里的事务是不能有锁冲突的)的概念。
    • 双一操作简单来说就是控制binlog同步磁盘的速度的操作:
      • innodb_flush_log_at_trx_commit=1:每次事务提交,都会写log(redo),且会刷磁盘。推荐设置为2,每秒才刷一次磁盘
      • sync_binlog=1:比如说多少次事务提交刷写磁盘,默认为1,这应该就是redo同步binlong
      • 这是默认的,我们可以更改以实现组提交。
  • 组提交:
    • 如果一个事务可以commit了,就不存在锁问题了,但其实在prepare阶段就不存在了。

    • 并行复制的策略思想:同时处于prepare状态或commit状态的事务,由于不存在锁冲突,可以在备库上并行。

    • 组提交:将多个事务的redolog(所以在事务执行期间,是在内存的)组队刷磁盘

    • 怎么知道哪些日志可以放一组?=》时间窗口

      • 如事务1处于prepare状态,成为leader,需要先写binlog,在开始写binlog到开始刷磁盘时(这个过程很慢),这个组里又有三个事务了,这个leader会等他们都从redlog写完binlog了,并且滑过了时间窗口了,再一起提交。

  • 读写分离:
    1.  一台写,其他读 =》负载均衡,读是很多的
    2.  实现方法:
      1. mysql 代理机器

      2. 多线程组件  shardingSphere ,mycat等

  1. 立马插入,立马查询的不适合做读写分离,通过上面的延迟分析就直到,还没同步过来,怎么查:设置一个具有读和写的库,或者强制查主库

  • 分库分表
  1. A表在A库,B表在B库=》一般在insert操作时,这条数据都会存入A库和B库,使得A库有AB表,B库也有AB表。 那就是纯粹降低select开销咯!!!
  2. 水平分表很简单,水平砍一刀;垂直分表就是垂直砍一刀,一些字段不经常用(冷数据),我们就可以把它们单独分离出来成一个表,需要的时候和热查询字段关联查询就行。
  3. 分片键盘,其实就类似按月份分表的月份,定位查询哪个表(库),不然还得轮询所有表
    1. 雪花算法:64bit长整型:
      1. 第一个bit不用,为0,id'为正
      2. 最高的41位时间戳,保证id的自增性
      3. 10bit工作id,哪个库的哪个机器,表示我要去哪里查
      4. 同一时刻可能有多条记录,后bit位做为序列号保证id的唯一性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 分布式集群一般采用主从复制或者多主复制的方式进行。下面我来介绍一下具体的步骤: 1. 安装 MySQL 软件 在每个节点上安装 MySQL 软件,可以选择官网下载二进制安装包或者使用 yum/apt-get/aptitude 等软件包管理器进行安装。 2. 配置 MySQL 主从复制或多主复制 - 主从复制:将一个 MySQL 节点作为主节点,其他节点作为从节点。主节点上的数据修改会被同步到从节点上。 - 多主复制:每个节点都是主节点和从节点。当一个节点上的数据修改时,会同步到其他节点上。 具体配置步骤可以参考 MySQL 官方文档。 3. 同步数据 在主从复制中,需要将主节点上的数据同步到从节点上。可以使用 mysqldump 工具备份主节点上的数据,然后在从节点上使用 mysql 命令进行导入。 在多主复制中,每个节点都需要同步其他节点上的数据。可以使用 Galera Cluster、Percona XtraDB Cluster 等工具进行同步。 4. 配置负载均衡 当有多个 MySQL 节点时,可以使用负载均衡器进行流量分发,以提高集群的性能和可靠性。常用的负载均衡器有 HAProxy、Nginx 等。 5. 测试集群集群搭建完成后,需要进行测试以确保集群的正常运行。可以通过在不同节点上进行数据操作、故障模拟等方式进行测试。 以上是 MySQL 分布式集群的大致步骤,具体操作还需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值