| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> sharding-proxy读写分离实战 -> 正文阅读 |
|
[大数据]sharding-proxy读写分离实战 |
根据上一节的而配置,我们在sharding-proxy代理数据库中新建一张表 CREATE?TABLE?`t_order_0`?( ??`order_id`?bigint(11)?NOT?NULL, ??`user_id`?int(11)?DEFAULT?NULL, ??`status`?varchar(255)?DEFAULT?NULL, ??PRIMARY?KEY?(`order_id`) )?ENGINE=InnoDB?DEFAULT?CHARSET=utf8; 新建好,我们可以发现在真实数据库中自动建立了2张表,t_order_0,t_order_1,是sharing-proxy自动帮我们建立的表 往代理数据库中添加数据:?INSERT?INTO?`t_order`?VALUES?('1',?'1',?'1'); 根据配置:发现数据入库在物理数据库t_order_1中 在往代理数据库中插入数据:?INSERT?INTO?`t_order`?VALUES?('2',?'2',?'2');??发现数据入库在物理数据库t_order_0中 可以发现物理数据库新增2条 就这样分表结束了。通过代码编写只需要连接sharding-proxy 分表的配置如下: schemaName:?sharding_db dataSources: ??ds_0: ????url:?jdbc:mysql://129.2.176.195:3306/sharding_test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true ????username:?root ????password:?root123 ????connectionTimeoutMilliseconds:?30000 ????idleTimeoutMilliseconds:?60000 ????maxLifetimeMilliseconds:?1800000 ????maxPoolSize:?50 shardingRule: ??tables: ????t_order: ??????actualDataNodes:?ds_${0}.t_order_${0..1} ??????tableStrategy: ????????inline: ??????????shardingColumn:?order_id ??????????algorithmExpression:?t_order_${order_id?%?2} ??????keyGenerator: ????????type:?SNOWFLAKE ????????column:?order_id ??bindingTables: ????-?t_order ??defaultDatabaseStrategy: ????inline: ??????shardingColumn:?user_id ??????algorithmExpression:?ds_${0} ??defaultTableStrategy: ????none: ===============分库分表===================== 配置如下: schemaName:?sharding_db dataSources: ??ds_0: ????url:?jdbc:mysql://128.1.76.95:3306/sharding_test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true ????username:?root ????password:?root123 ????connectionTimeoutMilliseconds:?30000 ????idleTimeoutMilliseconds:?60000 ????maxLifetimeMilliseconds:?1800000 ????maxPoolSize:?50 ??ds_1: ????url:?jdbc:mysql://128.1.76.94:3306/sharding_test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true ????username:?root ????password:?root123 ????connectionTimeoutMilliseconds:?30000 ????idleTimeoutMilliseconds:?60000 ????maxLifetimeMilliseconds:?1800000 ????maxPoolSize:?50 shardingRule: ??tables: ????t_order: ??????actualDataNodes:?ds_${0..1}.t_order_${0..1} ??????tableStrategy: ????????inline: ??????????shardingColumn:?order_id ??????????algorithmExpression:?t_order_${order_id?%?2} ??????keyGenerator: ????????type:?SNOWFLAKE ????????column:?order_id ??bindingTables: ????-?t_order ??defaultDatabaseStrategy: ????inline: ??????shardingColumn:?user_id ??????algorithmExpression:?ds_${user_id?%?2} ??defaultTableStrategy: none: 可以发现,操作sharding-proxy,数据分别入库在不同的数据库中和表中 ===========读写分离======================== 配置如下: schemaName:?master_slave_db 分别在主库创建数据库,在从库建立2个数据库,然后重启服务 重启服务我们会发现:在代理服务器自动创建了master_slave_db数据库 读写分离操作:往代理服务器新建一张表,发现主数据库也创建了表,而从服务器没有创建表,这时候我们在从服务器手动创建数据库;第二:往代理服务器新增一条数据,发现主服务器有数据,而从服务器没有数据,第三:往代理服务器读取数据发现没有数据这就证明了读写分离; 总结:在代理服务器向操作sql,写操作在主服务器上执行,读操作在从服务器操作,如果开启了bin-log,进行了主从复制的话,那么读写分离大大减轻了服务器的压力 总结+截图: 我们开启了主从复制: 1,首先在主服务器创建数据库demo_ds_master ================下面我们开启主从复制,也就是从服务的表结构在主服务器创建=========== 1.清空表结构和数据
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:59:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |