分布式存储mysql

搭建两从两主服务器

再搭建一台mycat

启动mycat

1.创建添加数据源

将后端数据库服务器添加到mycat上面,以便管理和代理,让mycat 和mysql建立连接

添加方法如下

59只实现写

60只实现读

61实现写

62实现读

  • MySQL>/*+ mycat:createdatasource{
  • "name":"dw0", "url":"jdbc:mysql://192.168.88.59:3306","user":"plj","password":"123456"}*/;
  • //添加MySQL60
  • Mysql>/*+ mycat:createdatasource{
  • "name":"dr0", "url":"jdbc:mysql://192.168.88.60:3306","user":"plj","password":"123456"}*/;
  • //添加MySQL61
  • Mysql>/*+ mycat:createdatasource{
  • "name":"dw1", "url":"jdbc:mysql://192.168.88.61:3306","user":"plj","password":"123456"}*/;
  • //添加MySQL62
  • Mysql>/*+ mycat:createdatasource{
  • "name":"dr1", "url":"jdbc:mysql://192.168.88.62:3306","user":"plj","password":"123456"}*/;
  • Mysql>

目录存放位置:

 ls /usr/local/mycat/conf/datasources/
dr0.datasource.json  dr1.datasource.json  dw0.datasource.json  dw1.datasource.json  prototypeDs.datasource.json
/*+mycat:showDataSources{}*/ \G可以查看数据信息

在主服务器创建用户,授予权限.(是mycat提前设置好的,mycat定义好的连接的数据库的服务)

创建集群:

分布式存储mysql_第1张图片

连接本机的mycat服务,创建集群


  1. [root@mycat63 ~]# mysql -h127.0.0.1 -P8066 -umycat -p654321
  2. mysql> /*!mycat:createcluster{"name":"c0","masters":["dw0"],"replicas":["dr0"]}*/;
  3. mysql> /*!mycat:createcluster{"name":"c1","masters":["dw1"],"replicas":["dr1"]}*/;
  4. Mysql>

创建的集群保存在mycat安装目录下

ls /usr/local/mycat/conf/clusters/

查看集群信息

mysql> /*+ mycat:showClusters{}*/ \G

至此集群和数据源已经添加完毕,mycat可以实现读写分离

测试配置 

        创建表时  定义表使用的分片规则

        存储数据是会根据表使用的分片规则的计算结果存储数据

        在63本机上连接服务,创建网站存储数据使用的库名

配置文件存放位置

ls /usr/local/mycat/conf/schemas/tarena.schema.json 

告诉我们

全局表:  不要分布式存储,每台上面都完整的存储数据

分布式存储mysql_第2张图片

部门表

create table tarena.dept(dept_id int  , dept_name char(10),primary key(dept_id)) default charset utf8  broadcast;

测试在c0和c1集群里数据库本机查看表里行

也就是说能在客户端写入数据库的信息,可以在集群里查看到.

员工表

工资表

分片表


  • create table tarena.employees(
  • employee_id int primary key,
  • name char(10),dept_id int ,
  • mail varchar(30)
  • ) default charset utf8
  • dbpartition BY mod_hash(employee_id) tbpartition BY mod_hash(employee_id)
  • tbpartitions 1 dbpartitions 2;

mod_hash()  取余算法  除数  被除数

                                         3        集群个数                        c0   c1

                                        3        2                                1---------->c1

                                                                                    0---------->c0

tbpartitions 1   分表的分片个数:每个集群里有一个表

dbpartitions 2; 分库的分片个数,一般几个集群分几个库

通过mod_hash()  括号里面表头名 通过集群个数取余数决定存储在哪个数据库里面的哪个表里

ER表:有关联有关系的表,有关联关系的数据的表,数据有关联关系的表放在同一个表,把有关关系的表里的数据  存储在相同的集群里面..可以更好的找出信息,不需要跨服务器,如果存在两个存储服务器里,这样就找的快.使用相同分片规则.

分布式存储mysql_第3张图片

工资表:

你可能感兴趣的:(分布式)