计算节点读写分离对应用研发者和数据库管理员完全透明,不要求研发者在SQL执行时添加HINT或某些注解;当然,也支持使用HINT的方式显式指定读取主机或从机。指定SQL语句在主存储节点上执行:/*! 用户级别的读写分离可通过管理平台创建数据库用户页面添加用户或编辑用户开启用户级别的读写分离。
目录 概述 1、一对多 2、多对多 3、一对一 多表查询概述 多表查询分类 1、连接查询 2、子查询 ---- 概述 项目开发中,在进行数据库表结构关系设计时,会根据业务需求及业务模块之间的关系,分析设计表结构
访问安全 权限体系 计算节点有两类用户,一类是计算节点数据库用户,用于操作数据,执行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
备份恢复 使用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 访问数据库服务
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”备份用户:(选填)用于备份该物理库的用户名备份用户密码
本节来简单介绍下PHP中的数据库,这节也是进阶部分最后一节了。数据库我们还没介绍过,下去我们会好好介绍关于MySQL数据库的知识。 1 建立连接 本节我们就不介绍数据库相关是语法只是,以sqlite数据库为了,创建数据库连接如下代码示例: $db = new PDO("sqlite:. 2 执行sql语句 连接完数据库,就可以根据数据库的指令来操作数据库,执行指令的函数使用query()函数,如下示例代码: <?php $db = new PDO("sqlite:. /resultdb"); //连接数据库 //执行exec函数,向查询数据库中的数据 $db->exec("insert into test1 values(6,'tom');insert into test1 > exec()函数并不返回结果集而是用于对给定的数据库执行一个无结果的查询。
."','"..math.random(1,9).."','"..math.random(1949,2013).."-0"..math.random(1,9).. "-0"..math.random(1,9).."','"..math.random(1000,9999)..".11','"..math.random(1000,9999)..".55','"..math.random 1000,9999)..".11','fix-ak"..math.random(1000,9999).."-"..math.random(1000,9999).."','"..math.random(1,9) .."','"..math.random(1,100).."','"..math.random(1,9).."','"..math.random(1,9).."')") -----------------+---------------+ | 10-10 | 0 | ,0:1,1:1,2:1,3:1,4:1,5:0,6:0,7:1,8:1,9:
如果主从数据库均无法连接,则该节点不可用。 2.主库配置不可用,从库配置可用 如果从库可以连接,则使用从库,此节点可用。 larger than the usable space. etl用户(用于数据抽取) 配置了etl的用户较普通用户在数据抽取时可降低内存消耗,具有更高的稳定性和数据抽取效率,具体使用配置说明如下: 在管理平台数据库用户中添加用户 配置校验 登录管理平台,选择"配置"->配置校验进入配置校验面板,点击"开始校验"按钮,将校验关系集群数据库可视化管理平台中配置校验菜单中的配置项,若有配置项不正确,可根据错误提示,修改相应的配置: 通过计算节点管理端执行 死锁检测 在关系集群数据库系统中,若死锁发生在两个数据节点下的存储节点间,存储节点的死锁检测机制将无法检测到死锁。 下面表格中的操作,描述了两个数据节点产生死锁的过程。 在HHDB Server关系集群数据库系统中,计算节点可检测到多个数据节点下的存储节点间的死锁,并回滚开销最少的事务。
数据强一致性(XA事务) 在关系集群数据库系统中,数据被拆分后,同一个事务可能会操作多个数据节点,产生跨库事务。 全局时区 为保证数据的正确性,针对不同存储节点服务器存在设置不同时区,导致数据库中时间类型的数据错误的问题,计算节点 提供对全局时区的支持,包括: 当time_zone参数为具体的相同值或者全为SYSTEM
应用端可借助LVS的VIP访问计算节点的数据库服务,同时保证使用透明与服务不间断。也可使用其余负载均衡方案进行处理,例如F5加自定义检测;应用直连计算节点,但发生异常时更换节点等方式。 原Primary: cd /usr/local/hhdb-2.5.0/hhdb-server/bin sh hotdb_server start 管理端状态查看: 多计算节点集群启动后通过VIP访问数据库服务
显示此数据库用户是否拥有全局SELECT命令查询操作的权限,与数据库用户配置的全局权限有关 insert_priv 显示此数据库用户是否拥有全局INSERT 显示此数据库用户是否拥有全局CREATE命令创建新的数据库或表操作的权限,与数据库用户配置的全局权限有关 drop_priv 显示此数据库用户是否拥有全局 ,允许当前数据库与另一个远程数据库或外部文件建立连接,并使用给定的用户名、密码和JDBC连接等信息。 目前针对外部数据库,计算节点支持与MySQL、Oracle或其他流行数据库建立通信连接。 若当前数据库用户拥有SUPER权限,则展示所有数据库用户下的所有公私有DBLINK信息。
CURRENT_TIME 支持 否 CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP 支持 否 CURRENT_USER(), CURRENT_USER 支持 否 返回当前计算节点数据库用户 schema()返回逻辑库名称 SEC_TO_TIME() 支持 否 SECOND() 支持 否 SESSION_USER() 支持 否 select session_user()显示为当前登录的计算节点数据库用户信息 SYSDATE() 支持 否 (注意:测试服务器的SYSDATE加了参数,使其等于NOW() 所以不会有延迟的区别,为了规避主从库数据不一致等风险) SYSTEM_USER() 支持 否 显示为当前登录的计算节点数据库用户信息 否 UNIX_TIMESTAMP() 支持 否 UpdateXML() 支持 否 UPPER() 支持 否 USER() 支持 否 SELECT user();查询出来的是当前登录的计算节点数据库用户
SQL语法支持 计算节点语法特殊功能 默认分片规则建表 在使用关系集群数据库时,需要先将表的分片规则信息配置好之后才能创建表。 实际使用过程中,用户可能对关系集群数据库及分片规则不了解,这就需要一种能直接过渡到HHDB Server的方案,该方案能根据逻辑库关联的分片节点数量自动对表生成分片规则,称为默认分片规则。 为逻辑库设置分片节点的方法如下:登录关系集群数据库平台,选择"配置"->"逻辑库",给逻辑库设置默认分片节点,然后点动态加载。 -------------------------+-------------+-------------+----------------+ | 4 | hotdb-cloud_555f9d00 分片函数类型 shardcolumnname - 为指定的分片字段 datanodeid - 节点ID,可以逗号间隔,且支持区间形式指定,如:'1,3,4,5-10,12-40',节点ID可登录关系集群数据库可视化管理平台页面
| +-----------------+-----------+--------------+-----------------+----------------+------------+ 9 | +-----------------+-----------+--------------+-----------------+----------------+------------+ 9
-06-14 13:46:48.355 [INFO] [] [TimerExecutor1] FrontendConnection(695) -- [thread=TimerExecutori,id=9,
若使用数据库用户管理类的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
---+-----------------------+--------------------+---------+------+-----------+------------------+ | 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) --> 参数作用: 为防止数据库访问账号被暴力破解,可通过该参数限制同一账户短时间内登录失败重试次数,