计算节点读写分离对应用研发者和数据库管理员完全透明,不要求研发者在SQL执行时添加HINT或某些注解;当然,也支持使用HINT的方式显式指定读取主机或从机。指定SQL语句在主存储节点上执行:/*! 用户级别的读写分离可通过管理平台创建数据库用户页面添加用户或编辑用户开启用户级别的读写分离。
目录 概述 1、一对多 2、多对多 3、一对一 多表查询概述 多表查询分类 1、连接查询 2、子查询 ---- 概述 项目开发中,在进行数据库表结构关系设计时,会根据业务需求及业务模块之间的关系,分析设计表结构
备份恢复 使用mysqldump备份 mysqldump - 数据库备份程序 计算节点支持mysqldump功能,用法同MySQL一样。 使用mysqlbinlog连接远程实例获取binlog文件并解析出其中的SQL语句,然后交由计算节点执行,从而将某个数据库的增量数据导入到计算节点某个逻辑库下。 若源端数据库名与计算节点的逻辑库名不相同,则需要在管理端口先添加数据库映射关系,例如: dbremapping @@add@db01:logicdb01 然后到计算节点(192.168.210.32)所在服务器上执行如下命令 7.核对数据同步的正确性:此时需要进行必要的短时停服,中断业务系统向数据库的写入操作。通过人工在源端执行一条特殊数据后查看该条数据是否已经同步。 等到确认计算节点已经追完最新数据后,停止mysqlbinlog命令,若需要的话,取消数据库名称映射。
property name="enableHeartbeat">true</property>假设192.168.200.202的3309实例与192.168.200.203的3313实例为一对主从复制的存储节点数据库 29.344 INFO [HeartbeatTimer] (BackendDataNode.java:405) -found candidate backup for datanode 5 :[id:9, :57:29.344 INFO [pool-1-thread-1020] (CheckSlaveHandler.java:241) -slave_sql_running is Yes in :[id:9, 15:57:29.424 WARN [pool-1-thread-1066] (BackendDataNode.java:847) -datanode 5 switch datasource 5 to 9 keepalived高可用服务原理搭建主备服务关系,可保证在主计算节点(即Active计算节点) 服务故障后,自动切换到备计算节点 (即Standby计算节点),应用层面可借助Keepalived的VIP 访问数据库服务
访问安全 权限体系 计算节点有两类用户,一类是计算节点数据库用户,用于操作数据,执行SELECT,UPDATE,DELETE,INSERT等SQL语句。 另一类是关系集群数据库可视化管理平台用户,用于管理配置信息。此章节将着重介绍计算节点用户相关内容。 基础权限 计算节点数据库用户必须被赋予逻辑库的权限,才能访问逻辑库。 行控制权限 计算节点支持通过手动修改配置库中行权限控制表hotdb_user_row_privilege的方式,为数据库用户增加行控制权限。 修改后需要动态加载生效 可以在3323服务端口执行show hotdb grants for ‘用户名’@‘主机名’查看数据库用户已配置的行控制权限。 select hex(aes_encrypt('SDcrtest',unhex(md5('Hotpu@2013#shanghai#2017'))))查询到keyStorePass值,然后填写C43BD9DDE9C908FEE7683AED7A301E33
SQL语法支持 DML语句 在关系集群数据库中,DML语句的逻辑将变的更为复杂。计算节点将DML语句分为两大类:单库DML语句与跨库DML语句。 跨库INSERT语句 在关系集群数据库中,INSERT语句只有在INSERT... SELECT与INSERT BATCH两种情况下,才会产生跨库INSERT语句。 分片表 支持 全局表 支持 跨库REPLACE语句 在关系集群数据库中 ORDER BY ASC DESC 支持 LIMIT n,m 支持 PROCEDURE 限制支持 支持单库存储过程 INTO OUTFILE 支持 要求执行语句的计算节点数据库用户拥有 支持 SUM(IFNULL()) 支持 SUM(column1-column2) 支持 INTO OUTFILE 支持 要求执行语句的计算节点数据库用户拥有FILE权限
若设置为0,程序异常退出不会持久化,若配置的值大于0,则可以定时持久化到数据库,重启也能累计。 在客户端执行SQL语句,会把相关命令统计在配置库中。当设置为0时,则不统计到配置库。 | 5 | master | | 600004 | write | | 600007 | write | | 600013 | write | +--------+--------+ 9
配置配置是管理平台为计算节点可视化配置所开发的功能,包括配置数据节点、存储节点、存储节点组、逻辑库、分片规则、表信息、数据库用户、计算节点等参数。同时配套设置了配置参数的校验与备份恢复的辅助功能。 参数说明:组名:输入存储节点组命名连接用户:有权限访问该物理库的用户名连接用户密码:有权限访问该物理库的用户密码物理库名称:存储节点中可引用的数据库名称,例如“db01”备份用户:(选填)用于备份该物理库的用户名备份用户密码
通常在计算节点中create database创建的数据库称为"逻辑库",但是在关系集群数据库系统中称呼有所区别,一般因为其是实际保存数据的原因称为"物理库",或者称为"某个关系集群数据库"。 添加逻辑库 通常在计算节点中create database创建的数据库称为"逻辑库",一个"逻辑库"可以为一个应用或一个微服务提供数据库服务。 为了保持一致性,关系集群数据库系统同样通过"逻辑库"为一个应用或一个微服务提供数据库服务,但是关系集群数据库系统由多套实例组成(本例是6套),所以在HHDB Server中"逻辑库"是"全局逻辑库",即 > -p<数据库用户对应的密码> -h<计算节点的VIP或IP> -P<计算节点对应的端口> -D<数据库库名> 部署完成后,默认的信息如下: 数据库用户为root。 HHDB Server的数据库库名默认有hotdb。
SHOW CREATE TRIGGER 支持 返回空集 SHOW CREATE VIEW 支持 返回空集 SHOW DATABASES 支持 SHOW DBLINKS 支持 显示已创建的数据库 DESC 支持 EXPLAIN 支持 请参考EXPLAIN EXPLAIN EXTENDED 不支持 HELP 不支持 USE 支持 KILL会同时关闭计算节点前端连接与存储节点的数据库的连接
Query | 1 | Sending data | UPDATE customer_route_1 SET address = 'abcd' order by id LIMIT 20 | | 9
HHDB Server基于Java NIO、MySQL协议研发,支持数据库连接的多路复用,具有更好的并发性能。 HHDB Server提供数据库服务自动切换功能,可有效地解决数据库单点故障问题。 计算节点组件架构 关系集群数据库HHDB Server集群是由一组计算节点、存储节点、管理平台、配置库组成的数据库管理系统。 计算节点: 计算节点是关系集群数据库HHDB Server集群体系的核心,主要提供SQL解析、路由分发、结果集合并等关系集群数据库的核心控制功能,是整个服务的命脉所在。 应用通过LVS的VIP访问HHDB Server的关系集群数据库服务,关系集群数据库服务对应用程序透明,计算节点集群中单个或多个节点故障对应用程序无影响。 计算节点支持不同开发平台下的数据库驱动、连接池,比如JAVA开发平台的JDBC,c3p0、DBCP、DRUID连接池。下面是c3p0连接池的配置举例: <!
RAW LONGTEXT 数字 NUMBER DECIMAL( p , s ),当NUMBER(p)无精度时根据数据长度转换:[1,3) -> tinyint;[3,5) -> smallint;[5,9) -> int;[9,19) -> bigint;其他 -> decimal 数字 NUMBER( * ) DOUBLE 数字 BINARY_FLOAT BINARY_FLOAT 转为 decimal 支持 WM_CONCAT 支持 补充说明: TO_CHAR(number):支持TO_CHAR(number, format)对格式进行控制,当前仅支持FM开头的格式控制,其后跟数字(0),数字(9) FM表示去掉空格,9表示一位数字,用于控制字符长度,0表示最前端和最后端用0填充,一个0也会占用一个字符长度,逗号,控制在哪个位置出现逗号,点.表示小数点。 HHDB Server是否支持 备注 NVL 支持 编码/解码函数 Oracle数据库函数 HHDB Server是否支持 备注 DECODE 支持 环境与标识符函数 Oracle数据库函数
ndbSqlAddr,ndbSqlUser,ndbSqlPass是配套参数,ndbSqlAddr是NDB SQL节点的物理地址,ndbSqlUser和ndbSqlPass属于连接NDB SQL节点的用户名和密码。
用于设置当前计算节点为只读模式,在readonly模式下,计算节点只接收DQL(SELECT语句)操作,及SET命令行和SHOW类型操作,拒绝执行DDL(CREATE TABLE/VIEW/INDEX/SYN/CLUSTER)、DML(INSERT,UPDATE,DELETE)和DCL(GRANT,ROLLBACK WORK TO SAVEPOINT,COMMIT)等修改性操作命令
计算节点特色功能 HHDB Server在基于关系集群数据库设计的基础上,提供了一些扩展的功能,方便进行使用和管理。 hotdb:dnid = 1*/select * from customer where age > 20; 该语句将在数据库节点1上执行。 用户可以通过关系集群数据库可视化管理平台中的"数据节点"页面,找到数据节点ID为1的存储节点名称,并在"存储节点"页面中搜索指定的存储节点名称,即可定位到实际的数据库。
若使用数据库用户管理类的SQL语句,部分可以支持。 *:表示所有数据库中的所有表/视图; db_name. *:表示某个数据库中的所有表/视图,db_name 指定数据库名; db_name.tbl_name:表示某个数据库中的某个表/视图,db_name 数据库名,tbl_name 表名; tbl_name 表示所有数据库中的所有表/视图 db_name.* 表示某个数据库中的所有表/视图;db_name指定数据库名 db_name.tbl_name 表示某个数据库中的某张表;db_name指定数据库名、tbl_name指定表名/视图名 tbl_name 表示当前数据库中的某张表;tbl_name
reinit datasource:[id:182,nodeId:11 192.168.220.101:3306/db01 status:1,charset:utf8] 引起存储节点超时的原因有:超出系统或者数据库连接限制 maxConnections是前端连接的最大连接数,是计算节点所允许的同时前端数据库连接数的上限。用户可以根据实际需要设置maxConnections,适当调整该值,不建议盲目提高设值。 | a | aa | | 2 | 22 | b | bb | | 3 | 33 | c | cc | | 8 | 88 | c | cc | | 9
---+-----------------------+--------------------+---------+------+-----------+------------------+ | 9 ---+-----------------------+--------------------+---------+------+-----------+------------------+ | 9 17:28 positions_5302007528422328273.tmp -rw-r--r-- 1 root root 141868981 May 9 17:28 row_411809270296834018 .tmp -rw-r--r-- 1 root root 26113612 May 9 18:01 row_4342139033645193593.tmp joinLoopSize 参数说明: Property --账户登录失败重试次数限制(Account login failure retry limit) --> 参数作用: 为防止数据库访问账号被暴力破解,可通过该参数限制同一账户短时间内登录失败重试次数,
.* to 'hotdb_config'@'%'; Query OK, 0 row affected (0.00 sec) root> mysql -uhotdb_config_9 -photdb_config _9 -h127.0.0.1 -P3306 mysql: [Warning] Using a password on the command line interface can be insecure using aio network handler 开启的状态下: 需要等到复制同步后才继续启动 2018-07-12 14:28:52.019 [INFO] [INIT] [$NIOREACTOR-9- JAVA数据库连接池建议 建议连接池使用proxool-0.9。 数据库设计的保留字段 计算节点可根据DNID来显示数据来源的数据节点,故DNID为数据库的保留字段(表结构中请勿使用该字段名称)。