mysql oneproxy稳定吗_扛得住MySQL 之 数据库分片演示(OneProxy)

在分布式数据库中,分区,分片,分库,分表的区别是什么?

分区:

原来所有的数据都是在一个数据库上的,网络IO及文件IO都集中在一个数据库上的,因此CPU、内存、文件IO、网络IO都可能会成为系统瓶颈。而分区的方案就是把某一个或某几张相关的表的数据放在一个独立的数据库上,这样就可以把CPU、内存、文件IO、网络IO分解到多个机器中,从而提升系统处理能力。

分表:

当数据量大到一定程度的时候,都会导致处理性能的不足,这个时候就没有办法了,只能进行分表处理。也就是把数据库当中数据根据按照分库原则分到多个数据表当中,这样,就可以把大表变成多个小表,不同的分表中数据不重复,从而提高处理效率。

分库:

分表和分区都是基于同一个数据库里的数据分离技巧,对数据库性能有一定提升,对MySQL数据库的吞吐量无质的变化。当业务系统的数据容量接近或超过单台X86服务器的容量、QPS/TPS接近或超过单个MySQL数据库实例的处理极限等,则重点在于扩展MySQL数据库的吞吐量和数据处理量。此时,往往是采用垂直和水平结合的数据拆分方法,把数据服务和数据存储分布到多台MySQL数据库服务器上。

分库只是一个通俗说法,更标准名称是数据分片,采用类似分布式数据库理论指导的方法实现,对应用程序达到数据服务的全透明和数据存储的全透明

分片:

分区有两种模式,一种是主从模式,用于做读写分离;另外一种模式是分片模式,也就是说把一个表中的数据分解到多个表中。一个分区只能是其中的一种模式。

分片演示场景:

84ac7901ad0e24c8c32eabf84a5b0f19.png

特点:不仅能实现数据库的分片,还能实现负载均衡,读写分离;不足之处是对分片的支持不是太好;

应用场景:分片,业务透明,在物理实现上分成多个服务器,不同的分片在不同服务器上。分区可以把表分到不同的硬盘上,但不能分配到不同服务器上。一台机器的性能是有限制的,用分片可以解决单台服务器性能不够,或者成本过高问题。当分区之后,表还是很大,处理不过来,这时候可以用分片。

了解oneproxy:http://www.onexsoft.com/zh/oneproxy.html

1、Node3上下载oneproxy

wget http://www.onexsoft.cn/software/oneproxy-rhel6-linux64-v5.8.1-ga.tar.gz

tar -zxf oneproxy-rhel6-linux64-v5.8.1-ga.tar.gz

cd oneproxyvim demo.sh

0feeb445c5045f14409864f96851b167.png

cd conf

vim proxy.conf

73b97770813775c64dcd43ac77ae5adf.png

7eee2179313e22563fcd17eb45764fb1.png

0298c1d6a210cc0ac0252753f2cce59f.png

生成密码:

在Node1中:create user test@'192.168.1.%' identified by '123456';

create databases orders;

grant all privileges on order.* to test@'192.168.1.%';在Node2中:

create user test@'192.168.1.%' identified by '123456';

create databases orders;

grant all privileges on order.* to test@'192.168.1.%';

Node3中:

cd ..

./demo.shmysql -p4041 -uadmin -pOneProxy -h127.0.0.1 #进入oneProxy管理页面passwd "123456"; #加密密码

65eafce982f776c5ee665c1102b5cff0.png

进入配置文件修改:

aab072b2b80d6998180f6236623186a2.png

0b011dadcde6a1bc19396f920483de4c.png

282b47ab4239bd692cd84c02d8c49bfa.png

d9267b172ef9f2b84b55619e1e4df883.png

vim 自己制定配置名称

设置自己的分区规则:

75f7c27310a092afe8a59edf200093ab.png

订单商品表复制上面就可以;

22e75f9446cd1bdd3d9c0e6e418eae53.png

在Node1创建:

69643433dec35c4fb4c19792252bb7c0.png

在Node2中创建和以上一样的表;

在Node3中重启oneproxy;

mysql -p4041 -uadmin -pOneProxy -h127.0.0.1 #进入oneProxy管理页面

list backend; #查看后台服务

6185527218305bf6b7493c91c89e4196.png

7ca7985fe089bef9a07c5d9f9f5670a2.png

vim test.sh #写一个sh脚本

601b2e25ad90122e9bdf621c938039a7.png

运行   bash     ./test.sh

43534e6a09b48c9e2404c2c67ccc1775.png

查询表中的数量

d2e612fb10ae6e442b7947f2c3b11df1.png

select count(*) from order_product;

实现效果:

8dd29f56ac5810357cfe3af5dd472a18.png

a5eb3a1ce0565f699d0db38c3defe3de.png

ffeef9eaeb6ecb1cf867975b4cba3b72.png

Node2中分类表数据数量不一致了,在维护群体表中并不是在一个事务,所以就很容易出现数据错误(如果出现了数据不一致,只能手动的把差异数据补齐);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值