企业实战_12_MyCat水平扩展_分库分表

接上一篇:企业实战_11_MyCat垂直拆分相关配置
https://gblfy.blog.csdn.net/article/details/100055838

文章目录

          • 一、概念理论理解
            • 1. 垂直拆分理解
            • 2. 水平扩展理解
            • 3. 水平扩展案例
            • 4. 水平扩展场景
            • 5. 水平拆分原则
            • 6. 水平扩展架构图
          • 二、关键问题+解决方案
            • 2.1. 分片后如何查询
            • 2.2. 分片规则
            • 2.3. 数据分片步骤
            • 2.4. 如何选择分片键
            • 2.5. 分析业务模型选择分片及算法
          • 三、使用Mycat部署分片集群
            • 3.1. 使用schema.xml配置逻辑库及逻辑表
            • 3.2. 使用rule.xml配置分片表的分片规则
            • 3.3. 使用server.xml配置访问用户及权限
          • 四、环境节点配置分布
          • 五、创建4个分片数据库节点
            • 5.1. 导出和同步
            • 5.2. 创建4个数据库
            • 5.3. 导入表结构
            • 5.4. node2验证
            • 5.5. node3验证
          • 六、实战mycat
            • 6.1. 添加数据节点
            • 6.2. 添加数据节点
            • 6.3. 数据分片名称
            • 6.4. 编辑rule.xml添加规则算法
          • 七、数据测试验证
            • 7.1. 实现思路
            • 7.2. 重新启动mycat
            • 7.3. 登录mycat
            • 7.4. 批量插入数据
            • 7.5. 逻辑库查询
          • 八、 数据分片验证
            • 8.1. node2节点order_db01验证
            • 8.2. node2节点order_db02验证
            • 8.3. node3节点order_db03验证
            • 8.4. node3节点order_db04验证
            • 8.5. 数据分片结论

一、概念理论理解
1. 垂直拆分理解

把表按照业务模块分离到不同的mysql数据库中,这样就可以缓解请求压力。
例如:订单模块的表在order_db数据库中,产品模块的表在product_db数据库中,客户模块的表在customer_db数据库中。

2. 水平扩展理解
  • 水平扩展是在垂直拆分的基础上进行的
  • 水平扩展是将单张表拆分成了多张表,分别放到不同的库中,或者一个库中的不同表中。
3. 水平扩展案例
  • 案例简介1:
    电商平台:订单会比较多,一般先会对数据按照业务模块进行垂直拆分,在此基础上,然后,针对大流量的数据库表,例如订单表,进行水平扩展也叫作分库分表也减轻数据库压力。
  • 案例简介2:
    保险行业场景同上

实际案例实战:
order_master:订单主表

  • ①可以创建分别创建order_db01、order_db02、order_db03、order_db04四个数据库。
  • ②在以上4个数据库中分别创建将order_master这张表。
  • ③ 将order_master这张表的数据按照数据分片规则,分别插入到order_db01、order_db02、order_db03、order_db04四个数据库中。
4. 水平扩展场景

把数据按照模块划分成了多个单独的模块,当大流量和并发请求一起冲击某个模块达到一定量级时,垂直拆分不能解决这种现象。因此,需要针对数据量很大的表进行水平拆分。

5. 水平拆分原则

1.水平拆分只是把某张数据量很大的表 水平拆分成几片,术词叫做数据库分片
2. 这几片数据库表结构都一样
3. 按照一定的规则算法,对数据进行分流*

6. 水平扩展架构图

如下图说是:把订单表进行了水平扩展,分库分表处理
在这里插入图片描述

二、关键问题+解决方案
2.1. 分片后如何查询

在这里插入图片描述

2.2. 分片规则

在这里插入图片描述

2.3. 数据分片步骤

在这里插入图片描述

一、水平分片的步骤:

第一步根据业务状态确定要进行水平切分的表
第二步根据业务模型选择分片键及分片算法
第三步使用Mycat部署分片集群
第四步测试分片几群
第五步业务数据迁移
2.4. 如何选择分片键

如何选择分片键

  1. 尽可能比较均匀分布数据到各个节点
  2. 该业务字段是最频繁的挥着最重要的查询条件
    在这里插入图片描述
2.5. 分析业务模型选择分片及算法
    1. 对订单相关表进行水平拆分
    1. 以订单号作为分片键
    1. 采用简单取模分片算法

注:分片键非常重要,这里以订单号作为演示,最合理应该以客户id作为分片键

在这里插入图片描述

三、使用Mycat部署分片集群
3.1. 使用schema.xml配置逻辑库及逻辑表
3.2. 使用rule.xml配置分片表的分片规则
3.3. 使用server.xml配置访问用户及权限

在这里插入图片描述

四、环境节点配置分布

以前

主机名IP地址角色数据库
node1192.168.92.101MYSQL、mycatimooc_db(主机物理)
node2192.168.92.102MYSQLorder_db(从机物理)
node3192.168.92.103MYSQLproduct_db(主机物理)
node4192.168.92.104MYSQLcustomer_db(从机物理)

现在

主机名IP地址角色数据库
node1192.168.92.101MYCAT 、MYSQLimooc_db(逻辑库)
node2192.168.92.102MYSQLorder_db(从机物理),order_db01和order_db01
node3192.168.92.103MYSQLproduct_db(主机物理),order_db03和order_db04
node4192.168.92.104MYSQLcustomer_db
五、创建4个分片数据库节点
5.1. 导出和同步

导出order_master表结构

# 登录node2节点,将order_db 数据库中的order_master表结构导出为order_master.sql
mysqldump -uroot -p order_db order_master> order_master.sql# 将order_master.sql同步node03
scp order_master.sql root@192.168.92.103:/root
5.2. 创建4个数据库
# 登录node2创建数据库分片节点
# 分片数据库名:order_db01/order_db02
mysql -uroot -p -e"create database order_db01"
mysql -uroot -p -e"create database order_db02"# 登录node3创建数据库分片节点
# 分片数据库名:order_db03/order_db04
mysql -uroot -p -e"create database order_db03"
mysql -uroot -p -e"create database order_db04"
5.3. 导入表结构
# 登录node2,将order_master.sql分别导入orderdb_01、order_db02
mysql -uroot -p order_db01 < order_master.sql 
mysql -uroot -p order_db02 < order_master.sql # 登录node3,将order_master.sql分别导入order_db03、order_db04
mysql -uroot -p order_db03 < order_master.sql 
mysql -uroot -p order_db04 < order_master.sql 
5.4. node2验证
# 登录node2,登录mysql物理库mysql -uroot -p# 查询数据库列表
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| order_db           |
| order_db01         |
| order_db02         |
| performance_schema |
| sys                |
+--------------------+
mysql> use order_db01;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+----------------------+
| Tables_in_order_db01 |
+----------------------+
| order_master         |
+----------------------+
mysql> use order_db02;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+----------------------+
| Tables_in_order_db02 |
+----------------------+
| order_master         |
+----------------------+
5.5. node3验证
# 登录node3,登录mysql物理库mysql -uroot -p# 查询数据库列表
mysql> show databases;mysql>  show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| order_db03         |
| order_db04         |
| performance_schema |
| product_db         |
| sys                |
+--------------------+
mysql> use order_db03;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+----------------------+
| Tables_in_order_db03 |
+----------------------+
| order_master         |
+----------------------+
mysql> use order_db04;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+----------------------+
| Tables_in_order_db04 |
+----------------------+
| order_master         |
+----------------------+
六、实战mycat
6.1. 添加数据节点

编辑schema.xml,添加数据节点dataNode

# 登录mycat服务器# 进入到mycat配置目录
cd /app/mycat/conf# 编辑schema.xml
vim schema.xml# 添加4个数据节点dataNode
    <dataNode name="ordb01"    dataHost="mysql92102" database="order_db01" /><dataNode name="ordb02"    dataHost="mysql92102" database="order_db02" /><dataNode name="ordb03"    dataHost="mysql92103" database="order_db03" /><dataNode name="ordb04"    dataHost="mysql92103" database="order_db04" />

在这里插入图片描述

6.2. 添加数据节点

由于我们对订单表进行了数据分片,因此,需要修改schema标签,添加数据节点ordb01,ordb02,ordb03,ordb04


# 编辑schema.xml,修改数据节点dataNode
将<table name="order_master"          primaryKey="order_id"          dataNode="ordb" />
调整为
<table name="order_master"             primaryKey="order_id"          dataNode="ordb01,ordb02,ordb03,ordb04" />

在这里插入图片描述

6.3. 数据分片名称

<table name="order_key" primaryKey="id" dataNode="ordb01,ordb02,ordb03,ordb04" />

调整为

<table name="order_master" primaryKey="order_id" dataNode="ordb01,ordb02,ordb03,ordb04" rule="order_master"/>

在这里插入图片描述

6.4. 编辑rule.xml添加规则算法

既然使用了数据分片,因此需要配置分片算法

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/"><tableRule name="order_master"><rule><columns>customer_id</columns><algorithm>mod-long</algorithm></rule></tableRule><function name="mod-long" class="io.mycat.route.function.PartitionByMod" ><property name="count">4</property></function>
</mycat:rule>

在这里插入图片描述

七、数据测试验证

登录mycat 批量插入数据测试验证

7.1. 实现思路

1  新建一个order_master表
2. 把order_master表分别同步到order_db01、order_db02、order_db03、order_db04
3. 准备一个批量插入的脚本例如:insert into10条数据进行测试
4. 分别登录order_db01、order_db02、order_db03、order_db04查看,数据的分布情况
5. 对数据的分片键进行取模验证
6. 判断插入的数据是否按照取模的算法正确插入到数据库中

需要思考的问题:
这对电商项目应该拿订单号来作为分片主键还是下订单的order_id 来作为分片主键?
如果拿订单号来作为分片主键的话,数据会分布均匀
如果拿客户号customer_id 来作为分片主键的话,数据会分布不均匀
想想哪个更合理?

7.2. 重新启动mycat

由于刚才修改了mycat的配置文件,重新启动mycat才会生效。

# 停止mycat服务
mycat stop# 启动mycat服务
mycat start# 查看mycat启动日志
tail -f /app/mycat/logs/wrapper.logMyCAT Server startup successfully. see logs in logs/mycat.log
7.3. 登录mycat
# 使用mysql客户端连接mycat,并登录mycat
mysql  -uapp_imooc -p123456 -h192.168.92.101 -P8066 # 使用imooc_db数据库
use imooc_db;
7.4. 批量插入数据

到order_master表中

INSERT INTO `order_master` (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time)  VALUES (1, 1, '雨昕', 1, 1, 1, '北京', 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, '2021-07-11 20:20:25', NULL, '2021-07-11 20:18:55', '2021-07-11 20:18:59', 0, 0, NULL, '2021-07-11 20:20:25');
INSERT INTO `order_master` (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time)  VALUES (2, 2, '雨昕', 1, 1, 1, '北京', 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, '2021-07-11 20:20:25', NULL, '2021-07-11 20:18:55', '2021-07-11 20:18:59', 0, 0, NULL, '2021-07-11 20:20:25');
INSERT INTO `order_master` (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time)  VALUES (1, 3, '雨昕', 1, 1, 1, '北京', 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, '2021-07-11 20:20:25', NULL, '2021-07-11 20:18:55', '2021-07-11 20:18:59', 0, 0, NULL, '2021-07-11 20:20:25');
INSERT INTO `order_master` (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time)  VALUES (1, 4, '雨昕', 1, 1, 1, '北京', 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, '2021-07-11 20:20:25', NULL, '2021-07-11 20:18:55', '2021-07-11 20:18:59', 0, 0, NULL, '2021-07-11 20:20:25');
INSERT INTO `order_master` (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time)  VALUES (1, 5, '雨昕', 1, 1, 1, '北京', 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, '2021-07-11 20:20:25', NULL, '2021-07-11 20:18:55', '2021-07-11 20:18:59', 0, 0, NULL, '2021-07-11 20:20:25');
INSERT INTO `order_master` (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time)  VALUES (1, 6, '雨昕', 1, 1, 1, '北京', 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, '2021-07-11 20:20:25', NULL, '2021-07-11 20:18:55', '2021-07-11 20:18:59', 0, 0, NULL, '2021-07-11 20:20:25');
INSERT INTO `order_master` (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time)  VALUES (1, 7, '雨昕', 1, 1, 1, '北京', 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, '2021-07-11 20:20:25', NULL, '2021-07-11 20:18:55', '2021-07-11 20:18:59', 0, 0, NULL, '2021-07-11 20:20:25');
INSERT INTO `order_master` (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time)  VALUES (1, 8, '雨昕', 1, 1, 1, '北京', 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, '2021-07-11 20:20:25', NULL, '2021-07-11 20:18:55', '2021-07-11 20:18:59', 0, 0, NULL, '2021-07-11 20:20:25');
INSERT INTO `order_master` (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time)  VALUES (1, 9, '雨昕', 1, 1, 1, '北京', 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, '2021-07-11 20:20:25', NULL, '2021-07-11 20:18:55', '2021-07-11 20:18:59', 0, 0, NULL, '2021-07-11 20:20:25');
INSERT INTO `order_master` (order_sn,customer_id,shipping_user,province,city,district,address,payment_method,order_money,district_money,shipping_money,payment_money,shipping_comp_name,shipping_sn,create_time,shipping_time,pay_time,receive_time,order_status,order_point,invoice_title,modified_time)  VALUES ( 1,10, '雨昕', 1, 1, 1, '北京', 1, 10.00, 0.00, 0.00, 0.00, NULL, NULL, '2021-07-11 20:20:25', NULL, '2021-07-11 20:18:55', '2021-07-11 20:18:59', 0, 0, NULL, '2021-07-11 20:20:25');
7.5. 逻辑库查询
mysql> SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master;
+-------------+----------+----------+---------------------+
| customer_id | order_sn | order_id | mod(customer_id, 4) |
+-------------+----------+----------+---------------------+
|           2 |        2 |        1 |                   2 |
|           6 |        1 |        2 |                   2 |
|          10 |        1 |        3 |                   2 |
|           4 |        1 |        1 |                   0 |
|           8 |        1 |        2 |                   0 |
|           3 |        1 |        1 |                   3 |
|           7 |        1 |        2 |                   3 |
|           1 |        1 |        1 |                   1 |
|           5 |        1 |        2 |                   1 |
|           9 |        1 |        3 |                   1 |
+-------------+----------+----------+---------------------+
10 rows in set (0.00 sec)
八、 数据分片验证
8.1. node2节点order_db01验证
# 连接node2服务器,登录物理mysql
mysql -uroot -p123456

order_db01数据库

# 使用指定数据库
use order_db01;# 查询order_master表中取模数据
SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master;mysql> use order_db01;
Database changed
mysql> SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master;
+-------------+----------+----------+--------------------+
| customer_id | order_sn | order_id | mod(customer_id,4) |
+-------------+----------+----------+--------------------+
|           4 |        1 |        1 |                  0 |
|           8 |        1 |        2 |                  0 |
+-------------+----------+----------+--------------------+
2 rows in set (0.00 sec)

order_db01分片数据库节点插入数据2条

8.2. node2节点order_db02验证

order_db02数据库

# 使用指定数据库
use order_db02;# 查询order_master表中取模数据
SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master;mysql> use order_db02;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master;
+-------------+----------+----------+--------------------+
| customer_id | order_sn | order_id | mod(customer_id,4) |
+-------------+----------+----------+--------------------+
|           1 |        1 |        1 |                  1 |
|           5 |        1 |        2 |                  1 |
|           9 |        1 |        3 |                  1 |
+-------------+----------+----------+--------------------+
3 rows in set (0.00 sec)

order_db02分片数据库节点插入数据3条

8.3. node3节点order_db03验证
# 连接node3服务器,登录物理mysql
mysql -uroot -p123456
mysql> use order_db03;
Database changed
mysql> SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master;
+-------------+----------+----------+--------------------+
| customer_id | order_sn | order_id | mod(customer_id,4) |
+-------------+----------+----------+--------------------+
|           2 |        2 |        1 |                  2 |
|           6 |        1 |        2 |                  2 |
|          10 |        1 |        3 |                  2 |
+-------------+----------+----------+--------------------+
3 rows in set (0.00 sec)

order_db03分片数据库节点插入数据3条

8.4. node3节点order_db04验证
mysql> use order_db04;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master;
+-------------+----------+----------+--------------------+
| customer_id | order_sn | order_id | mod(customer_id,4) |
+-------------+----------+----------+--------------------+
|           3 |        1 |        1 |                  3 |
|           7 |        1 |        2 |                  3 |
+-------------+----------+----------+--------------------+
2 rows in set (0.00 sec)

order_db04分片数据库节点插入数据2条

8.5. 数据分片结论
mysql> SELECT customer_id,order_sn,order_id,mod(customer_id,4) FROM order_master;
+-------------+----------+----------+---------------------+
| customer_id | order_sn | order_id | mod(customer_id, 4) |
+-------------+----------+----------+---------------------+
|           2 |        2 |        1 |                   2 |
|           6 |        1 |        2 |                   2 |
|          10 |        1 |        3 |                   2 |
|           4 |        1 |        1 |                   0 |
|           8 |        1 |        2 |                   0 |
|           3 |        1 |        1 |                   3 |
|           7 |        1 |        2 |                   3 |
|           1 |        1 |        1 |                   1 |
|           5 |        1 |        2 |                   1 |
|           9 |        1 |        3 |                   1 |
+-------------+----------+----------+---------------------+
10 rows in set (0.00 sec)

从上面数据分片的数据来看:
1.10条数据按照数据分片规则简单取模,分别插入到了4个数据库中。
2.order_master表中的主键是order_id,主键有自增约束。虽然主键是唯一的不可重复的,但是,是相对于一个表而言的。
3.这些重复的order_id的数据插入到了不同的数据库中。

以上会造成一个现象就是,在imooc_db逻辑库中的order_master表获取order_id为1的场景,会出现什么问题呢?
order_id数据为1的有3条数据,那最后回去哪一条呢?
答案是:不能取任何一条。

那应该如何解决上述问题呢?请大家继续阅读下一章全局自增ID。

下一篇:企业实战_13_MyCat清除冗余数据
https://gblfy.blog.csdn.net/article/details/100057317

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试阿里,我还是挂在了第四轮……

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 倪升武责编 | 郭 芮可能每个技术人都有个阿里梦&#xff0c;我也不例外。最近准备跳槽&#xff0c;前一阵子在准备各种面试&#xff0c;也面了几个大厂&#xff0c;包括阿里。是的&#xff0c;最后我挂在了第四轮。这篇文章…

Mycat+Mysql 插入数据报错 i[Err] 1064 - partition table, insert must provide ColumnList

逻辑库结构和物理库表结构如下(逻辑库结构物理库表结构)&#xff1a; CREATE TABLE order_key (id int(11) NOT NULL AUTO_INCREMENT COMMENT 主键,goods_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 商品名称,place varchar(2…

微服务精华问答 | 如何理解中台战略和微服务

戳蓝字“CSDN云计算”关注我们哦&#xff01;微服务(Microservice Architecture)是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。今天&#xff0c;就让我们来看看关于微服务更加有深度的问题吧。1Q&#xff1a;什么是微服务A&#xff1a;1&#xff09;一组小的服务&a…

php 对象转换成数组,PHP把对象转换为数组的问题

原始对象object(Qiniu\Http\Error)#24 (2) {["url":"Qiniu\Http\Error":private]>string(25) "http://rs.qbox.me/buckets"["response":"Qiniu\Http\Error":private]>object(Qiniu\Http\Response)#25 (6) {["sta…

华为内测基于Android 10.0的EMUI 10系统;2019年Q1真无线耳机市场份额,苹果占半壁江山……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 苹果获得悬停手势专利 可隔空…

企业实战_17_MyCat水平扩展_跨分片查询_ER分片

接上一篇&#xff1a;企业实战_16_MyCat全局自增ID https://blog.csdn.net/weixin_40816738/article/details/100064315 案例比较&#xff1a; 在垂直拆分场景中&#xff0c;针对字段个数少的类型为字典类型的表&#xff0c;我们可以使用全局表的方式解决。 在水平扩展场景中&a…

bmob php支付,支付服务 - 支付服务RESTful 开发文档 - 《Bmob 文档中心》 - 书栈网 · BookStack...

注意&#xff1a;目前支付宝无法使用&#xff0c;请用户暂时不要接入&#xff0c;等待官方的恢复公告&#xff01;打款需知1.打款前请先在控制台填写以下信息2.每月的1、2、16、17号为申请打款时间&#xff0c;15号、月尾日为打款时间&#xff0c;确保用户有半个月的追诉期。Bm…

企业实战_22_MyCatSQL拦截

接上一篇&#xff1a;企业实战_21_MyCat_keepalived 安装配置验证 https://gblfy.blog.csdn.net/article/details/100073474 Mycat SQL拦截应用场景&#xff0c;可以指定监控的sql类型 文章目录1. 在server.xml文件中添加sql拦截属性标签2. 测试验证3. 查看sql拦截监控日志1. 在…

MongoDB凭什么跻身数据库排行前五?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 孙浩峰DB-Engines 数据库流行度排行榜发布了5 月份的数据&#xff0c;前六名的排名“千年不变”&#xff0c;分别是&#xff1a;Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB 和IBM Db2。而其中&#xff0c;Mo…

企业实战_23_MyCat SQL防火墙

接上一篇&#xff1a;企业实战_22_MyCatSQL拦截 https://blog.csdn.net/weixin_40816738/article/details/100073474 文章目录1. SQL防火墙_白名单配置2. 白名单测试3. SQL防火墙_黑名单配置4. SQL防火墙_黑名单测试SQL防火墙&#xff1a;包括2个标签<whitehost></whi…

同样是消息队列,Kafka凭什么速度那么快?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 邴越来源 | 技术琐话Kafka的消息是保存或缓存在磁盘上的&#xff0c;一般认为在磁盘上读写数据是会降低性能的&#xff0c;因为寻址会比较消耗时间&#xff0c;但是实际上&#xff0c;Kafka的特性之一就是高吞吐率。即使是普…

企业实战_10_Mycat集成ZK实现配置同步

主机名IP地址角色数据库mycat192.168.43.32MYCAT ,MYSQL,ZKmycat&#xff08;全局自增id&#xff09;node1192.168.43.104ZKMYSQLorder_db01和order_db01node2192.168.43.217ZK,MYSQLorder_db03和order_db04node3192.168.43.172MYCAT ,MYSQLmycat&#xff08;全局自增id&#x…

亚马逊重组游戏开发部门:数个未发布游戏被“扼杀”;台积电明年开始为苹果iPhone生产5nm处理器……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 盒马送餐机器人、无人化再进…

psp中java,PSP编程概述

元旦准备买NDS&#xff0c;顺带关注了下PSP&#xff0c;其实是想&#xff0c;或许买PSP也不错~PSP很像一个平台&#xff0c;提供了很多东西&#xff0c;譬如官方的PS模拟器~在上面编程也是个不错的想法。国外的一个网站提供了很多信息&#xff0c;PS2Dev Network (http://www.p…

企业实战_18_MyCat_ZK集群安装部署

接上一篇&#xff1a;企业实战_17_MyCat水平扩展_跨分片查询_ER分片 https://gblfy.blog.csdn.net/article/details/100066013 文章目录一、使用ZK记录Mycat的配置1. 操作步骤2. 服务器部署分布二、zk集群安装部署2.1. 安装jdk并验证2.2. ZK下载2.3. node1下载同步zk2.4. 基础配…

分布式精华问答 | 分布式与集群的区别是什么?

什么是分布式计算&#xff1f;所谓分布式计算是一门计算机科学&#xff0c;它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分&#xff0c;然后把这些部分分配给许多计算机进行处理&#xff0c;最后把这些计算结果综合起来得到最终的结果。1Q&#xff1a;…

Mycat设置开机自启

接上一篇&#xff1a;实战_21_Mycat_MySql更新数据库失败 --read-only https://blog.csdn.net/weixin_40816738/article/details/100059688 下载mycat wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz解压即安装mycat tar -zxf Mycat…

最近,京东AR又爆出哪般神奇?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 刘晶晶只用一部手机就可在线“试用”口红&#xff0c;效果堪比美妆男主李佳琪&#xff0c;厉不厉害&#xff1f;只要轻轻一点就可一目了然购买的家具在家中摆放的效果怎样&#xff0c;神不神奇&#xff1f;时间飞快&#xff…

zookeeper开机自启动

编辑rc.local vim /etc/rc.d/rc.local2.需要指定jdk路径以及zookeeper启动路径 export JAVA_HOME/app/jdk1.8.0_144 /app/zookeeper-3.4.11/bin/zkServer.sh start3. 启动zookeeper cd /app/zookeeper-3.4.11/bin ./zkServer.sh start查看zk启动状态 /app/zookeeper-3.4.11…

10分钟读懂什么是容器云?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 宝哥devops运维来源 | http://t.cn/ECwSNgj容器技术是近几年云行业发展中不可缺少的一环。Docker和k8s的大热极大可能会推动云计算PAAS层的完善和普及。那么容器云到底是怎样的技术形态&#xff1f;究竟是概念还是可落地的应…