上篇文章,实验了主从mysql复制,这次在上篇文章的基础上,完成mysql分库分表并测试主从复制。

下载Sharding-Proxy

https://archive.apache.org/dist/incubator/shardingsphere/4.0.0/

  1. 下载apache-shardingsphere-incubating-4.0.1-sharding-proxy-bin.tar.gz包,
  2. 解压到某一目录下如mydata目录下
  3. 由于目录名太长,我将目录名称改为了sharding-proxy
  4. 进入sharding-proxy/conf目录下

修改配置文件

  1. 修改认证信息 server.yaml
authentication:users:root:password: rootsharding:password: shardingauthorizedSchemas: sharding_dbprops:executor.size: 16  # Infinite by default.sql.show: true
  1. 修改分库分表配置 config-sharding.yaml
schemaName: sharding_dbdataSources:ds_0:# 库demo_ds_0的连接地址,根据自己的配置修改ip和端口url: jdbc:mysql://192.168.94.133:3307/demo_ds_0?serverTimezone=UTC&useSSL=falseusername: rootpassword: rootconnectionTimeoutMilliseconds: 30000idleTimeoutMilliseconds: 60000maxLifetimeMilliseconds: 1800000maxPoolSize: 50ds_1:# 库demo_ds_1的连接地址,根据自己的配置修改ip和端口url: jdbc:mysql://192.168.94.133:3307/demo_ds_1?serverTimezone=UTC&useSSL=falseusername: rootpassword: rootconnectionTimeoutMilliseconds: 30000idleTimeoutMilliseconds: 60000maxLifetimeMilliseconds: 1800000maxPoolSize: 50# 规则
shardingRule:tables:t_order:actualDataNodes: ds_${0..1}.t_order_${0..1} # 根据user_id取模的结果,选择库;根据order_id取模的结果,选择表;选择库和表的规则在 algorithmExpression 做了配置tableStrategy:inline:shardingColumn: order_id  #表中的order_id列algorithmExpression: t_order_${order_id % 2} # 对order_id取模keyGenerator:type: SNOWFLAKE # 使用雪花算法,生成order_idcolumn: order_idt_order_item:actualDataNodes: ds_${0..1}.t_order_item_${0..1}tableStrategy:inline:shardingColumn: order_idalgorithmExpression: t_order_item_${order_id % 2}keyGenerator:type: SNOWFLAKEcolumn: order_item_idbindingTables: # 绑定表规则,表示t_order和表t_order_item在做连接操作时,不会进行跨库操作- t_order,t_order_itemdefaultDatabaseStrategy: # 选择库使用的策略inline:shardingColumn: user_idalgorithmExpression: ds_${user_id % 2}  # 根据user_id取模的结果,选择库defaultTableStrategy:none:
  1. 配置主从复制规则
# 使用配置文件config-master_slave_0.yaml配置库demo_ds_0主从复制规则
schemaName: sharding_db0dataSources:master_ds_0: #主库demo_ds_0配置url: jdbc:mysql://192.168.94.133:3307/demo_ds_0?serverTimezone=UTC&useSSL=falseusername: rootpassword: rootconnectionTimeoutMilliseconds: 30000idleTimeoutMilliseconds: 60000maxLifetimeMilliseconds: 1800000maxPoolSize: 50slave_ds_0: # 从库demo_ds_0的配置,多个从库,可以继续添加配置url: jdbc:mysql://192.168.94.133:3317/demo_ds_0?serverTimezone=UTC&useSSL=falseusername: rootpassword: rootconnectionTimeoutMilliseconds: 30000idleTimeoutMilliseconds: 60000maxLifetimeMilliseconds: 1800000maxPoolSize: 50masterSlaveRule:  #name: ms_ds_0 # 规则名称masterDataSourceName: master_ds_0 # 主数据源名称slaveDataSourceNames:- slave_ds_0 # 从数据源名称,slaveDataSourceNames数组中的一个元素loadBalanceAlgorithmType: ROUND_ROBIN
# 使用配置文件config-master_slave_1.yaml配置库demo_ds_1主从复制规则
schemaName: sharding_db1dataSources:master_ds_1:url: jdbc:mysql://192.168.94.133:3307/demo_ds_1?serverTimezone=UTC&useSSL=falseusername: rootpassword: rootconnectionTimeoutMilliseconds: 30000idleTimeoutMilliseconds: 60000maxLifetimeMilliseconds: 1800000maxPoolSize: 50slave_ds_1:url: jdbc:mysql://192.168.94.133:3317/demo_ds_1?serverTimezone=UTC&useSSL=falseusername: rootpassword: rootconnectionTimeoutMilliseconds: 30000idleTimeoutMilliseconds: 60000maxLifetimeMilliseconds: 1800000maxPoolSize: 50masterSlaveRule:name: ms_ds_1masterDataSourceName: master_ds_1slaveDataSourceNames:- slave_ds_1loadBalanceAlgorithmType: ROUND_ROBIN

启动Sharding-Proxy

  1. 进入bin目录下
  2. 执行./start.sh 3388 ,都口号根据自己实际情况修改,默认是3307。
  3. 看到如下日志,说明启动成功。
log1:
Starting the Sharding-Proxy ...
The port is configured as 3388
Please check the STDOUT file: /mydata/sharding-proxy/logs/stdout.loglog2:
...
[INFO ] 08:35:31.564 [main] c.a.icatch.provider.imp.AssemblerImp - USING: com.atomikos.icatch.force_shutdown_on_vm_exit = false
[INFO ] 08:35:31.564 [main] c.a.icatch.provider.imp.AssemblerImp - USING: com.atomikos.icatch.default_jta_timeout = 300000
[INFO ] 08:35:31.565 [main] c.a.icatch.provider.imp.AssemblerImp - Using default (local) logging and recovery...
[INFO ] 08:35:31.613 [main] c.a.d.xa.XATransactionalResource - resource-1-master_ds_0: refreshed XAResource
[INFO ] 08:35:31.627 [main] c.a.d.xa.XATransactionalResource - resource-2-slave_ds_0: refreshed XAResource
[INFO ] 08:35:31.669 [main] com.zaxxer.hikari.HikariDataSource - HikariPool-3 - Starting...
[INFO ] 08:35:31.677 [main] com.zaxxer.hikari.HikariDataSource - HikariPool-3 - Start completed.
[INFO ] 08:35:31.678 [main] com.zaxxer.hikari.HikariDataSource - HikariPool-4 - Starting...
[INFO ] 08:35:31.690 [main] com.zaxxer.hikari.HikariDataSource - HikariPool-4 - Start completed.
[INFO ] 08:35:31.709 [main] c.a.d.xa.XATransactionalResource - resource-3-ds_0: refreshed XAResource
[INFO ] 08:35:31.725 [main] c.a.d.xa.XATransactionalResource - resource-4-ds_1: refreshed XAResource
[INFO ] 08:35:32.553 [main] com.zaxxer.hikari.HikariDataSource - HikariPool-5 - Starting...
[INFO ] 08:35:32.560 [main] com.zaxxer.hikari.HikariDataSource - HikariPool-5 - Start completed.
[INFO ] 08:35:32.561 [main] com.zaxxer.hikari.HikariDataSource - HikariPool-6 - Starting...
[INFO ] 08:35:32.574 [main] com.zaxxer.hikari.HikariDataSource - HikariPool-6 - Start completed.
[INFO ] 08:35:32.586 [main] c.a.d.xa.XATransactionalResource - resource-5-master_ds_1: refreshed XAResource
[INFO ] 08:35:32.597 [main] c.a.d.xa.XATransactionalResource - resource-6-slave_ds_1: refreshed XAResource
[INFO ] 08:35:32.940 [epollEventLoopGroup-2-1] i.n.handler.logging.LoggingHandler - [id: 0x711df74e] REGISTERED
[INFO ] 08:35:32.943 [epollEventLoopGroup-2-1] i.n.handler.logging.LoggingHandler - [id: 0x711df74e] BIND: 0.0.0.0/0.0.0.0:3388
[INFO ] 08:35:32.946 [epollEventLoopGroup-2-1] i.n.handler.logging.LoggingHandler - [id: 0x711df74e, L:/0.0.0.0:3388] ACTIVE

使用Sharding-Proxy完成mysql分库分表和主从复制相关推荐

  1. 【分布式mysql分库分表中间件sharding】

    分布式mysql分库分表中间件,sharding领域的一站式解决方案.具备丰富.灵活的路由算法支持,能够方便DBA实现库的水平扩容和降低数据迁移成本.shark采用应用集成架构,放弃通用性,只为换取更 ...

  2. MySQL分库分表和优化

    第九阶段模块三 分库分表技术之MyCat 1.海量存储问题 1.1 背景描述 随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无 ...

  3. MySQL分库分表面试知识点

    目录 1 问题分析: 1.1 背景 1.2 业务分库 1.3 数据库分表 2 为什么要分库分表? 3 用过哪些分库分表中间件? 3.1 你们具体是如何对数据库如何进行垂直拆分或水平拆分的? 4 Mys ...

  4. 【mysql】MySQL 分库分表方案,总结的非常好!

    文章目录 1. 数据库架构演变 2. 分库分表前的问题 3. 分库分表的方式方法 3.1 垂直分库 3.2 水平拆分 水平分表 水平分库分表 水平分库分表切分规则 4. 分库分表后面临的问题 4.1 ...

  5. 【分库、分表】MySQL分库分表方案

    一.Mysql分库分表方案 1.为什么要分表: 当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. ...

  6. mysql分库分表(一)

    参考: https://blog.csdn.net/xlgen157387/article/details/53976153 https://blog.csdn.net/clevercode/arti ...

  7. 利用RadonDB实现MySQL分库分表

    利用RadonDB实现MySQL分库分表 RadonDB是青云上提供的MySQL分布式解决方案,提供数据库的透明拆分及高可用服务.RadonDB包括Radon, Xenon, MySQL三部分安装.其 ...

  8. mysql分库分表分页查询语句_MySQL分库分表分库后的查询(8th)

    前言 这边我们以使用python程序要展示一下再分库分表后,我们需要如何对数据库进行操作. python操作数据库 我们这边还是沿用之前的那5中:场景1:购买者下订单#!/usr/bin/env py ...

  9. 企业Shell实战-MySQL分库分表备份脚本

    本文来自 http://www.xuliangwei.com/xubusi/252.html 免费视频讲解见 http://edu.51cto.com/course/course_id-5064.ht ...

最新文章

  1. 使用 JIRA 4.0 + Greenhopper 4.0 进行项目状态跟踪(转)
  2. QT的QFileDialog类的使用
  3. jQuery 操作元素
  4. 在Java 8 Lambda上使用Apache Commons Functor功能接口
  5. python启动http服务_Python命令开启http.server服务器
  6. Go 语言——基本类型
  7. 网易云音乐api资料
  8. python下载文件的三种方法
  9. java怎么连接手机软件_如果是山寨机支持JAVA怎么用电脑往手机上下载软件
  10. 手把手教你vue中如何使用TradingView
  11. dd命令打包多个文件_linux dd命令将系统打包成iso - 卡饭网
  12. Android视频播放器开发
  13. 国产芯片---超高速、高输出电流,电压反馈放大器MS8241兼容替代LM7171
  14. 关于函数凹凸性两种定义与二阶导数符号之间的联系证明
  15. 三维智慧城市数字孪生应用可视化设计
  16. 谷歌翻译无法使用/翻译页面无法使用/右键翻译成中文无法使用问题解决方法。
  17. pymysql 插入错误:Warning(1265, “Data truncated for column ‘XXXX‘ at row xxx“)
  18. 单页面cnd 引入 vant+vue+h5 应用vant
  19. Sketchfab下载器ArtStation资源下载操作说明中文网模型提取教程
  20. 前端工程化 - 剖析npm的包管理机制

热门文章

  1. Couldn't read row 0, col 0 from CursorWindow. Make sure the Cursor is initia
  2. git【--ours】及【--theirs】优雅的解决冲突
  3. java处理纳秒时间
  4. django项目环境搭建
  5. 编写Java程序,模拟教练员和运动员出国比赛场景,其中运动员包括乒乓球运动员和篮球运动员。教练员包括乒乓球教练和篮球教练。为了方便出国交流,根乒乓球相关的人员都需要学习英语。
  6. 宝石典故之“凤凰血染红的鸡血石”
  7. 克服“测试怠惰”的习惯
  8. UCloud邱模炯:为什么内核是云平台稳定性的关键
  9. Chrome欲撼IE浏览器 Opera参战扩大中国投资
  10. 【第二十二讲】获取参数名