MySQL主从架构

主从架构

  • 主从架构分为很多种:一主一从、双主架构、一主多从、多主多从等模式;通常主库可读可写,从库只读。
  • MySQL最常见的主从架构的实现就是'主从复制(MySQL Replication)'模式,其可以实现读写分离,即写操作连接主库,读操作连接从库

基本原理

  1. 主库的数据发生了变更,将日志写入到主库的binlog中;
  2. 主库的LogDump线程,将binlog文件传输到从库的IO线程;
  3. 从库的IO线程将接收到的binlog写入到relay log中;
  4. 从库的SQL线程读取relay log中的日志,并操作重演,将结果同步到从库中;

实现步骤

前提

需要先完成一次全量同步

配置master数据库

修改my.cnf 配置文件

[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=100 #[必须]服务器唯一ID

重启msyql服务

创建主从复制权限账号

CREATE USER '用户名' IDENTIFIED WITH 'mysql_native_password' BY '密码';//第一步
GRANT REPLICATION SLAVE ON *.* TO '用户名';//第二步
flush privileges;//第三步刷新立刻生效

验证master是否配置成功

show master status;

配置slaver数据库

修改my.cnf 配置文件

[mysqld]
server-id=101 #[必须]服务器唯一ID

重启msyql服务

slaver连接master

change master to master_host='主数据库地址',MASTER_PORT=端口号,master_user='主数据创建的权限账号',master_password='密码',master_log_file='主数据里面的File',master_log_pos=主数据库里面的Position;

// 示例
change master to master_host='142.21.56.322',MASTER_PORT=3317,master_user='slaver',master_password='root',master_log_file='mysql-bin.000005',master_log_pos=743;

启动连接

start slave;

验证主从复制是否配置成功

show slave status;

Sharding-JDBC

读写分离

spring:
  shardingsphere:
    datasource:
      names:
        master,slave
      # 主数据源
      master:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://172.31.16.32:3317/activiti?characterEncoding=utf-8
        username: root
        password: root
      # 从数据源
      slave:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://172.31.16.32:3316/activiti?characterEncoding=utf-8
        username: root
        password: root
    masterslave:
      # 读写分离配置
      load-balance-algorithm-type: round_robin # 轮询
      # 最终的数据源名称
      name: dataSource
      # 主库数据源名称
      master-data-source-name: master
      # 从库数据源名称列表,多个逗号分隔
      slave-data-source-names: slave
    props:
      sql:
        show: true #开启SQL显示,默认false
  main:
    allow-bean-definition-overriding: true

 

主主复制-基本原理

主从复制中,只能做到数据分流,但无法解决单点故障的问题;即若主库节点宕机,此时对从库进行的操作并不会同步到主库中,也就会导致数据库无效;为此引入主主复制方案:将两台MySQL之间互为彼此的主库,同时又互为对方的从库;此时任何的一台节点故障,另外的一台都可以继续提供服务;

区别:一主一从故障后需人为手动介入,而双主模式下能够自动切换。

 

 

参考文章

【1】主从复制-实战

【2】主从复制-实战

【3】主从复制-修改端口号

posted @ 2024-01-23 14:54  先娶国王后取经  阅读(46)  评论(0编辑  收藏  举报