Sharding Sphere读写分离

Mysql主从配置:

mysql主从配置的流程:

1)master会将变动记录到二进制日志里面;

2)master有一个I/O线程将二进制日志发送到slave;

3) slave有一个I/O线程把master发送的二进制写入到relay日志里面;

4)slave有一个SQL线程,按照relay日志处理slave的数据;

二、操作步骤

按照原理,我们开启mysql主从复制,我们大体需要做以下操作:

1)开启master的二进制日志

2)开启slave的二进制日志

3)将slave指向master

4)开始复制.

步骤:

1.编辑主从库my.ini

主库 my.ini:

[mysqld] #开启日志 
log‐bin = mysql‐bin 
#设置服务id,主从不能一致 
server‐id = 1 
#设置需要同步的数据库 
binlog‐do‐db=user_db 
#屏蔽系统库同步 
binlog‐ignore‐db=mysql 
binlog‐ignore‐db=information_schema 
binlog‐ignore‐db=performance_schema 

从库 my.ini:

[mysqld] 
#开启日志 
log‐bin = mysql‐bin 
#设置服务id,主从不能一致 
server‐id = 2 
#设置需要同步的数据库 
replicate_wild_do_table=user_db.%
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.% replicate_wild_ignore_table=performance_schema.%

重启主库和从库

2.创建用于主从复制的账号

#切换至主库bin目录,登录主库 mysql ‐h localhost ‐uroot ‐p 
#授权主备复制专用账号 
#GRANT REPLICATION SLAVE ON *.* TO '用户名'@'slave数据库的IP地址' IDENTIFIED BY '密码';
GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync'; 
#刷新权限
FLUSH PRIVILEGES; 
#确认位点 记录下文件名以及位点 
show master status;

3.设置从库向主库同步数据 

#切换至从库bin目录,登录从库 mysql ‐h localhost ‐P3307 ‐uroot ‐p 
 
#先停止同步 STOP SLAVE; 
 
#修改从库指向到主库,使用上一步记录的文件名以及位点 
CHANGE MASTER TO 
master_host = 'localhost',
master_user = 'db_sync', 
master_password = 'db_sync',
master_log_file = 'mysql‐bin.000002', 
master_log_pos = 154; 
 
#启动同步 START SLAVE; 
 
#查看从库状态Slave_IO_Runing和Slave_SQL_Runing都为Yes说明同步成功,如果不为Yes,请检查 error_log,然后 排查相关异常。 
show slave status 
 
#注意 如果之前此从库已有主库指向 需要先执行以下命令清空 
STOP SLAVE IO_THREAD FOR CHANNEL ''; 
reset slave all;

Sharding-JDBC读写分离配置 :

Sharding-JDBC 通过 sql 语句语义分析,实现读写分离过程,不会做数据同步 
 

添加/修改/删除—> 主数据库,查询—> 从数据库
查询多个从数据库数据算法:round_robin(轮询)和random(随机)

sharding:
  jdbc:
    dataSource:
      names: db-test0,db-test1,db-test2
      # 配置主库
      db-test0: #org.apache.tomcat.jdbc.pool.DataSource
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.jdbc.Driver
        url: jdbc:mysql://ip:3306/cool?useUnicode=true&characterEncoding=utf8&tinyInt1isBit=false&useSSL=false&serverTimezone=GMT
        username: root
        password:
        #最大连接数
        maxPoolSize: 20
      db-test1: # 配置第一个从库
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.jdbc.Driver
        url: jdbc:mysql://ip:3306/cool?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT
        username: root
        password:
        maxPoolSize: 20
      db-test2: # 配置第二个从库
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.jdbc.Driver
        url: jdbc:mysql://ip:3306/cool?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT
        username: root
        password:
        maxPoolSize: 20
    config:
      masterslave: # 配置读写分离
        load-balance-algorithm-type: round_robin # 配置从库选择策略,提供轮询与随机,这里选择用轮询//random 随机 //round_robin 轮询
        name: db1s2
        master-data-source-name: db-test0
        slave-data-source-names: db-test1,db-test2
    props:
      sql: # 开启SQL显示,默认值: false,注意:仅配置读写分离时不会打印日志!!!
        show: true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值