使用Sharding-Proxy完成mysql分库分表和主从复制
上篇文章,实验了主从mysql复制,这次在上篇文章的基础上,完成mysql分库分表并测试主从复制。
下载Sharding-Proxy
https://archive.apache.org/dist/incubator/shardingsphere/4.0.0/
- 下载apache-shardingsphere-incubating-4.0.1-sharding-proxy-bin.tar.gz包,
- 解压到某一目录下如mydata目录下
- 由于目录名太长,我将目录名称改为了sharding-proxy
- 进入sharding-proxy/conf目录下
修改配置文件
- 修改认证信息 server.yaml
authentication:users:root:password: rootsharding:password: shardingauthorizedSchemas: sharding_dbprops:executor.size: 16 # Infinite by default.sql.show: true
- 修改分库分表配置 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:
- 配置主从复制规则
# 使用配置文件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
- 进入bin目录下
- 执行./start.sh 3388 ,都口号根据自己实际情况修改,默认是3307。
- 看到如下日志,说明启动成功。
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分库分表和主从复制相关推荐
- 【分布式mysql分库分表中间件sharding】
分布式mysql分库分表中间件,sharding领域的一站式解决方案.具备丰富.灵活的路由算法支持,能够方便DBA实现库的水平扩容和降低数据迁移成本.shark采用应用集成架构,放弃通用性,只为换取更 ...
- MySQL分库分表和优化
第九阶段模块三 分库分表技术之MyCat 1.海量存储问题 1.1 背景描述 随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无 ...
- MySQL分库分表面试知识点
目录 1 问题分析: 1.1 背景 1.2 业务分库 1.3 数据库分表 2 为什么要分库分表? 3 用过哪些分库分表中间件? 3.1 你们具体是如何对数据库如何进行垂直拆分或水平拆分的? 4 Mys ...
- 【mysql】MySQL 分库分表方案,总结的非常好!
文章目录 1. 数据库架构演变 2. 分库分表前的问题 3. 分库分表的方式方法 3.1 垂直分库 3.2 水平拆分 水平分表 水平分库分表 水平分库分表切分规则 4. 分库分表后面临的问题 4.1 ...
- 【分库、分表】MySQL分库分表方案
一.Mysql分库分表方案 1.为什么要分表: 当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. ...
- mysql分库分表(一)
参考: https://blog.csdn.net/xlgen157387/article/details/53976153 https://blog.csdn.net/clevercode/arti ...
- 利用RadonDB实现MySQL分库分表
利用RadonDB实现MySQL分库分表 RadonDB是青云上提供的MySQL分布式解决方案,提供数据库的透明拆分及高可用服务.RadonDB包括Radon, Xenon, MySQL三部分安装.其 ...
- mysql分库分表分页查询语句_MySQL分库分表分库后的查询(8th)
前言 这边我们以使用python程序要展示一下再分库分表后,我们需要如何对数据库进行操作. python操作数据库 我们这边还是沿用之前的那5中:场景1:购买者下订单#!/usr/bin/env py ...
- 企业Shell实战-MySQL分库分表备份脚本
本文来自 http://www.xuliangwei.com/xubusi/252.html 免费视频讲解见 http://edu.51cto.com/course/course_id-5064.ht ...
最新文章
- 使用 JIRA 4.0 + Greenhopper 4.0 进行项目状态跟踪(转)
- QT的QFileDialog类的使用
- jQuery 操作元素
- 在Java 8 Lambda上使用Apache Commons Functor功能接口
- python启动http服务_Python命令开启http.server服务器
- Go 语言——基本类型
- 网易云音乐api资料
- python下载文件的三种方法
- java怎么连接手机软件_如果是山寨机支持JAVA怎么用电脑往手机上下载软件
- 手把手教你vue中如何使用TradingView
- dd命令打包多个文件_linux dd命令将系统打包成iso - 卡饭网
- Android视频播放器开发
- 国产芯片---超高速、高输出电流,电压反馈放大器MS8241兼容替代LM7171
- 关于函数凹凸性两种定义与二阶导数符号之间的联系证明
- 三维智慧城市数字孪生应用可视化设计
- 谷歌翻译无法使用/翻译页面无法使用/右键翻译成中文无法使用问题解决方法。
- pymysql 插入错误:Warning(1265, “Data truncated for column ‘XXXX‘ at row xxx“)
- 单页面cnd 引入 vant+vue+h5 应用vant
- Sketchfab下载器ArtStation资源下载操作说明中文网模型提取教程
- 前端工程化 - 剖析npm的包管理机制
热门文章
- Couldn't read row 0, col 0 from CursorWindow. Make sure the Cursor is initia
- git【--ours】及【--theirs】优雅的解决冲突
- java处理纳秒时间
- django项目环境搭建
- 编写Java程序,模拟教练员和运动员出国比赛场景,其中运动员包括乒乓球运动员和篮球运动员。教练员包括乒乓球教练和篮球教练。为了方便出国交流,根乒乓球相关的人员都需要学习英语。
- 宝石典故之“凤凰血染红的鸡血石”
- 克服“测试怠惰”的习惯
- UCloud邱模炯:为什么内核是云平台稳定性的关键
- Chrome欲撼IE浏览器 Opera参战扩大中国投资
- 【第二十二讲】获取参数名