云服务器内容精选

  • 解决方案 如果客户端使用了和数据库不同的字符集,需要调整客户端配置,使用相同的字符集连接数据库,或者在连上数据库后显式设置成对应的字符集,即可正常查询。 显式设置字符集的方法如下: set collation_connection = utf8mb4_general_ci; 其中“utf8mb4_general_ci”为需要设置的字符集和排序规则。 当出现如下信息,表示字符集设置成功。 Query OK, 0 rows affected (0.00 sec)
  • 解决方案 方案1:可以在需要排序的字段上加上索引。如案例中,alter table ratings add index idx_category (category); 方案2:可以在排序语句的order by后面加入主键列。如案例中,select * from ratings order by category, id limit 2,2; 方案3:可以在 GaussDB (for MySQL)控制台参数修改页面,开启参数“rds_force_stable_sort”。该参数开启后,将强制使用稳定排序算法,确保排序结果的稳定。 图1 设置参数rds_force_stable_sort
  • 开启Binlog对GaussDB(for MySQL)的性能影响 性能损耗和业务压力强相关,开启Binlog不会影响查询(SELECT)性能,只会影响写入更新(如INSERT、UPDATE、DELETE等)性能。 GaussDB(for MySQL)服务的Binlog和开源的MySQL-Binlog两者从使用方法上来说无明显差异,GaussDB(for MySQL)服务的Binlog完全兼容开源MySQL的Binlog相关语法。
  • 迁移方案总览 表1 迁移方案 源数据库类型 数据量 一次性或持续 应用程序停机时间 迁移方式 文档链接 RDS for MySQL 小型 一次性 一段时间 使用mysqldump工具将数据复制到GaussDB(for MySQL)标准版数据库。 使用mysqldump迁移GaussDB(for MySQL)标准版数据 任何 一次性或持续 最低 使用DRS将表级、库级或实例级数据迁移到GaussDB(for MySQL)标准版数据库。 说明: DRS实时迁移计费说明,请参见DRS迁移计费说明。 RDS for MySQL迁移到GaussDB(for MySQL)标准版 任何 一次性或持续 最低 使用DRS将源库数据同步到GaussDB(for MySQL)标准版数据库。 RDS for MySQL同步到GaussDB(for MySQL)标准版 DDM 任何 一次性或持续 最低 使用DRS将DDM数据同步到GaussDB(for MySQL)标准版数据库。 将DDM同步到GaussDB(for MySQL)标准版 GaussDB分布式版 任何 一次性或持续 最低 使用DRS将GaussDB分布式版数据同步到GaussDB(for MySQL)标准版数据库。 将GaussDB分布式版同步到GaussDB(for MySQL)标准版 GaussDB主备版 任何 一次性或持续 最低 使用DRS将GaussDB主备版数据同步到GaussDB(for MySQL)标准版数据库。 将GaussDB主备版同步到GaussDB(for MySQL)标准版 GaussDB(for MySQL)标准版 任何 一次性或持续 最低 使用DRS将GaussDB(for MySQL)标准版数据同步到GaussDB(for MySQL)标准版数据库。 将GaussDB(for MySQL)同步到GaussDB(for MySQL)标准版 任何 持续 最低 使用DRS将业务库数据同步到GaussDB(for MySQL)标准版数据库(灾备库)。 说明: 该功能为容灾备份,主要为了解决地区故障导致的业务不可用,为用户业务连续性提供数据库的同步保障。 GaussDB(for MySQL)标准版之间搭建单主灾备 GaussDB(for MySQL)标准版之间搭建双主灾备 本地自建MySQL数据库 E CS 自建MySQL数据库 任何 一次性或持续 最低 使用DRS将自建MySQL迁移到GaussDB(for MySQL)标准版数据库。 实时迁移通过增量迁移技术,最大限度允许迁移过程中业务继续对外提供使用,有效的将业务系统中断时间和业务影响最小化,实现数据库平滑迁移上云。 说明: DRS实时迁移计费说明,请参见DRS迁移计费说明。 自建MySQL迁移到GaussDB(for MySQL)标准版 任何 一次性或持续 最低 使用DRS将自建MySQL同步到GaussDB(for MySQL)标准版数据库。 实时同步聚焦于表和数据,将数据通过同步技术从一个数据源拷贝到其他数据库,并保持一致,实现关键业务的数据实时流动。适用于实时分析,报表系统,数仓环境的场景。 自建MySQL同步到GaussDB(for MySQL)标准版 任何 持续 最低 使用DRS将自建MySQL业务库数据同步到GaussDB(for MySQL)标准版数据库(灾备库)。 说明: 该功能为容灾备份,主要为了解决地区故障导致的业务不可用,为用户业务连续性提供数据库的同步保障。 自建MySQL到GaussDB(for MySQL)标准版单主灾备 自建MySQL到GaussDB(for MySQL)标准版双主灾备 本地自建Oracle数据库 ECS自建Oracle数据库 任何 一次性或持续 最低 使用DRS将自建Oracle数据同步到GaussDB(for MySQL)标准版数据库。 将Oracle同步到GaussDB(for MySQL)标准版 其他云上MySQL数据库 任何 一次性或持续 最低 使用DRS将其他云上MySQL数据库迁移到GaussDB(for MySQL)标准版数据库。 说明: DRS实时迁移计费说明,请参见DRS迁移计费说明。 其他云MySQL迁移到云数据库GaussDB(for MySQL)标准版 任何 一次性或持续 最低 使用DRS将其他云上MySQL数据库同步到GaussDB(for MySQL)标准版数据库。 将其他云MySQL同步到GaussDB(for MySQL)标准版 任何 持续 最低 使用DRS将其他云上MySQL业务库数据同步到GaussDB(for MySQL)标准版数据库(灾备库)。 说明: 该功能为容灾备份,主要为了解决地区故障导致的业务不可用,为用户业务连续性提供数据库的同步保障。 其他云MySQL到GaussDB(for MySQL)标准版单主灾备 其他云MySQL到GaussDB(for MySQL)标准版双主灾备
  • 读写分离优势 相比在应用程序内手动做读写分离,扩容灵活,维护成本低。 客户端读请求按权重分发至后端只读节点,数据库实例整体负载更加均衡,提升资源利用率。 通过代理将指定业务的读请求路由到选定的只读实例上,实现业务隔离,避免多个业务之间相互影响。 数据库代理默认提供过载保护功能:避免用户执行大结果集操作时,因压力过大引起服务端OOM。该功能默认打开,不需要用户单独设置。针对数据库内核过慢引起的压力,依赖数据库限流机制。
  • 读写分离原理 GaussDB(for MySQL)支持开通一个或多个数据库代理。 单个数据库代理下的读写分离 一个GaussDB(for MySQL)实例下只有1个数据库代理实例,应用服务通过数据库代理地址连接到数据库代理实例,写请求通过数据库代理实例自动转发到主节点,读请求根据数据库代理实例的路由模式转发至主节点或只读节点。 图1 单个数据库代理读写分离原理图 多个数据库代理下的读写分离 一个GaussDB(for MySQL)实例下可以创建多个数据库代理实例,最多支持创建4个代理实例,主要适用于有隔离需求的复杂业务。不同的应用服务可以根据业务需要连接不同的数据库代理,数据库代理连接指定的只读节点,将不同应用服务之间的读请求最终转发到不同的只读节点上,实现业务隔离。 图2 多个数据库代理读写分离
  • 请求路由规则 只发往主节点的写请求 INSERT、UPDATE、DELETE。 所有DDL操作(建表/库、删表/库、变更表结构、权限等)。 所有事务中的请求(事务拆分开启时部分读请求可能发送至只读节点,详见事务拆分)。 用户自定义函数。 存储过程。 EXECUTE语句。 Multi Statements。 使用到临时表的请求。 所有对用户变量的更改。 KILL(SQL语句中的KILL,非命令KILL)。 发往主节点的读请求 如果查询语句被放在事务中,事务请求都会路由到主实例。如果在查询语句前设置set autocommit=0时也当做事务处理路由到主实例。 如果所有只读节点都均异常或只读节点权重为0时,则查询会路由到主实例。对于成功开启读写分离功能的实例,您可以设置其主实例和只读实例的权重。 在执行SQL语句时: 如果执行了Multi-Statements(如“insert xxx;select xxx”),当前连接的后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离。 带锁的读操作(如SELECT for UPDATE)会被路由到主节点。 当使用/*FORCE_MASTER*/这个Hint语句时,会被路由到主实例。 如果执行了Handler语句,默认后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离。 SELECT last_insert_id()。 所有对用户变量的查询。 发往只读节点或主节点 非事务中的SELECT。 COM_STMT_EXECUTE命令。 总是发往所有节点 所有系统变量的更改。 USE命令。
  • 注意事项 表1 数据库代理注意事项 分类 注意事项 版本约束 GaussDB(for MySQL)实例内核版本如下时,不支持开通数据库代理。 大于等于2.0.26.2且小于等于2.0.28.3 等于2.0.29.1 GaussDB(for MySQL)实例的内核版本低于2.0.42.230601时,仅支持创建1个代理实例。 GaussDB(for MySQL)实例的内核版本高于或等于2.0.42.230601时,最多支持创建4个代理实例。 不支持的功能 数据库代理不支持压缩协议。 数据库代理不支持事务隔离级别READ-UNCOMMITTED。 数据库代理不支持读写表中单列超过16MB的数据。 数据库代理不支持SQL_MODE参数PAD_CHAR_TO_FULL_LENGTH。 使用约束 实例的CPU总核数(即所有节点的CPU核数的总和)低于8核时,不支持开通数据库代理。 至少创建1个只读节点才能开启读写分离功能。 开启读写分离功能后,不允许修改GaussDB(for MySQL)实例的端口和读写内网地址。 如果执行了Multi-Statements,当前连接的后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离。 使用代理地址时,事务请求都会路由到实例的主节点(可以使用事务拆分功能对事务中写之前的读请求进行拆分),不保证非事务读的一致性,业务上有读一致性需求可以封装到事务中。 使用代理地址时,show processlist和直连数据库有差异。因为数据库代理的show processlist是逻辑的,仅仅将通过数据库代理节点下发的业务展示出来,所以和直连数据库有差异。 当某一个代理节点处于异常状态时,通过代理执行show processlist或者Kill时,有可能会出现命令执行时间稍微变长的情况,此时无需关注,业务不会受到影响。 当数据库代理进行缩容后,通过代理执行show processlist命令时,可能会将被缩容的节点上的业务展示出来。 通过数据库代理进行Kill时,偶尔可能会出现超时等报错信息,此时可以通过二次show processlist查看业务是否真正被Kill成功。 当数据库代理的某个节点处于异常状态时,执行show processlist命令时,可能会出现2秒卡顿,此时无需关注,结果会正常返回。 当使用数据库代理时,多语句拼接的SQL大小不超过100MB,避免数据库代理解析SQL消耗过多的资源。 当使用数据库代理时,不能使用中文数据库和中文用户名。 HTAP实时分析 不支持一致性级别和连接池。 路由模式仅支持权重负载模式。 代理模式仅支持读写模式。
  • 基本概念 代理地址 购买数据库代理后,可以从数据库代理中查看代理地址,连接该地址可以执行读写操作,数据库代理会通过代理地址自动将写请求发送到主节点,将读请求发送到只读节点,降低主节点的压力。 代理模式 GaussDB(for MySQL)的代理模式支持读写模式和只读模式。 读写模式:所有写请求只发往主节点,所有读请求按照读权重配比或者是活跃连接数情况分发到已选节点。 只读模式:所有读请求按照读权重配比或者是活跃连接数情况分发到已选只读节点,不会分发到主节点。 事务拆分 数据库代理提供事务拆分的功能,能够将事务内写操作之前的读请求转发到只读节点,降低主节点负载。 更多关于事务拆分的内容请参见开启GaussDB(for MySQL)代理的事务拆分功能。 连接池 数据库代理提供了会话级连接池,可减少短连接业务频繁建立连接导致数据库负载高。 更多关于连接池的内容请参见开启GaussDB(for MySQL)代理的连接池功能。 路由模式 GaussDB(for MySQL)数据库代理支持权重负载、负载均衡的路由模式,可根据需要配置不同的路由模式。 权重负载:根据您设置的读权重比例分发读请求。 负载均衡:根据数据库节点的活跃连接数情况进行读请求分发,将读请求分发到活跃连接数较少的节点上。负载均衡模式不需要修改权重。 更多关于路由模式的内容请参见路由模式。
  • 产品优势 性能强悍 采用计算与存储分离,日志即数据架构,性能提升至开源MySQL的7倍。 通过RDMA协议进行数据库传输,使IO性能不再成为瓶颈。 引入内核特性,例如Query result cache、Query plan cache、Online DDL等,提升用户体验。 弹性扩展 横向扩展:1写15只读节点,快速添加只读节点,满足高并发场景性能需求。 纵向扩展:分钟级规格升降级,轻松应对业务高峰。 高可靠性 支持跨可用区部署,跨区域备份,提升实例容灾能力。 存储三副本,数据更安全。 共享分布式存储,主节点故障时,只读节点自动升级成主节点,RPO为0。 主从节点时延支持ms级,保证业务高可用。 安全防护 采用共享分布式存储,故障秒级恢复,数据“0”丢失。 采用VPC、安全组、SSL连接和 数据加密 等严格控制安全访问。 已通过ISO 27001、CSA、可信云、等保三级等国内外15+安全认证,国内首家获得NIST CSF最高认证。 高兼容性: 完全兼容MySQL,应用无需改造即可轻松迁移上云。 高效备份 全量备份采用快照机制,秒级完成创建快照,具有更高的备份效率。 基于底层存储系统的多时间点特性,不需增量日志回放,可直接实现按时间点回滚。 海量存储 华为自研DFV分布式存储,容量高达128TB。 根据数据量自动伸缩,无须提前规划,节约成本。 算子下推 将过滤条件、列投影、聚合运算从计算节点下推到存储节点,跨存储节点并行处理,减少网络流量和计算节点的压力,提升查询执行效率。同时与并行查询功能进行融合,达成全流程并行执行。
  • 步骤3:测试连通性并安装MySQL客户端 登录ECS实例,请参见《弹性云服务器用户指南》中“Linux弹性 云服务器远程登录 (VNC方式)”。 在RDS“实例管理”页面,单击实例名称进入实例概览页面。 在左侧导航栏选择“连接管理”,在“连接信息”模块获取GaussDB(for MySQL)标准版实例的内网地址和数据库端口。 图9 查看GaussDB(for MySQL)标准版实例的内网地址和端口 在ECS上测试是否可以正常连接到GaussDB(for MySQL)标准版实例内网地址的端口。 telnet 192.168.*.* 3306 如果可以通信,说明网络正常。 如果无法通信,请检查安全组规则。 查看ECS的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将GaussDB(for MySQL)标准版实例的内网IP地址和端口添加到出方向规则。 查看GaussDB(for MySQL)标准版的安全组的入方向规则,需要将ECS实例的私有IP地址和端口添加到入方向规则。 在ECS上下载Linux系统的MySQL客户端安装包,以mysql-community-client-8.0.28-1.el8.x86_64.rpm包为例。 建议您下载的MySQL客户端版本高于已创建的GaussDB(for MySQL)标准版实例中数据库版本。 wget https://dev.mysql.com/get/mysql-community-client-8.0.28-1.el8.x86_64.rpm 执行以下命令安装MySQL客户端。 rpm -ivh --nodeps mysql-community-client-8.0.28-1.el8.x86_64.rpm 如果安装过程中报conflicts,可增加replacefiles参数重新安装,如下: rpm -ivh --replacefiles mysql-community-client-8.0.28-1.el8.x86_64.rpm 如果安装过程中提示需要安装依赖包,可增加nodeps参数重新安装,如下: rpm -ivh --nodeps mysql-community-client-8.0.28-1.el8.x86_64.rpm
  • 步骤2:购买ECS 登录管理控制台,查看是否有弹性云服务器。 有Linux弹性云服务器,执行3。 有Windows弹性云服务器,参考购买并通过Windows系统连接GaussDB(for MySQL)标准版实例。 无弹性云服务器,执行2。 购买弹性云服务器时,选择Linux操作系统,例如CentOS。 由于需要在ECS下载MySQL客户端,因此需要为ECS绑定弹性公网IP(EIP),并且选择与GaussDB(for MySQL)标准版实例相同的区域、VPC和安全组,便于GaussDB(for MySQL)标准版和ECS网络互通。 购买Linux弹性云服务器请参考《弹性云服务器快速入门》中“购买弹性云服务器”章节。 在ECS实例基本信息页,查看ECS实例的区域和VPC。 图7 ECS基本信息 在GaussDB(for MySQL)标准版实例概览页面,在网络信息区域查看GaussDB(for MySQL)标准版实例的区域和VPC。 图8 查看GaussDB(for MySQL)标准版实例的VPC 确认ECS实例与GaussDB(for MySQL)标准版实例是否处于同一区域、同一VPC内。 是,执行步骤3:测试连通性并安装MySQL客户端。 如果不在同一区域,请重新购买实例。不同区域的云服务之间内网互不相通,无法访问实例。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。 如果不在同一VPC,可以修改ECS的VPC,请参见切换虚拟私有云。
  • 步骤1: 购买GaussDB (for MySQL)标准版实例 进入购买云数据库RDS页面。 填选实例信息后,单击“立即购买”。 下面的配置项仅作为示例,实际购买时根据用户需求选择合适的规格参数。 计费模式:按需计费 区域:华北-北京四 数据库引擎:GaussDB(for MySQL) 产品系列:标准版 数据库版本:8.0 实例类型:高可用 存储类型:SSD云盘 主可用区:可用区1 备可用区:可用区2 性能规格:独享型 2U4GB 存储空间:40GB 账号配置:根据密码策略设置管理员密码。 网络配置:GaussDB(for MySQL)标准版实例的区域、可用区、VPC和安全组与步骤2:购买ECS中ECS的一致,确保内网互通。 高级配置:选择默认配置。 购买数量:1 图1 选择数据库引擎版本 图2 性能规格 图3 账号配置 图4 网络配置 图5 高级配置 查看购买成功的GaussDB(for MySQL)标准版实例。 图6 购买成功
  • 步骤3:测试连通性并安装MySQL-Front 登录ECS实例,请参见《弹性云服务器用户指南》中“Windows弹性云服务器管理控制台远程登录(VNC方式)”。 在RDS“实例管理”页面,单击实例名称进入实例概览页面。 在左侧导航栏中选择“连接管理”,在“连接信息”模块获取实例的内网地址和数据库端口。 图9 查看GaussDB(for MySQL)标准版实例的内网地址和端口 在ECS上打开cmd命令窗,测试是否可以正常连接到GaussDB(for MySQL)标准版实例内网地址的端口。 telnet 192.168.*.* 3306 如果可以通信,说明网络正常。 如果无法通信,请检查安全组规则。 查看ECS的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将GaussDB(for MySQL)标准版实例的内网IP地址和端口添加到出方向规则。 查看GaussDB(for MySQL)标准版实例的安全组的入方向规则,需要将ECS实例的私有IP地址和端口添加到入方向规则。 在ECS上打开浏览器,下载并安装MySQL-Front工具(以5.4版本为例)。 图10 选择位置 图11 选择开始菜单 图12 选择附加任务 图13 完成
  • 步骤2:购买ECS 登录管理控制台,查看是否有弹性云服务器。 有Linux弹性云服务器,参考购买并通过Linux系统连接GaussDB(for MySQL)标准版实例。 有Windows弹性云服务器,执行3。 无弹性云服务器,执行2。 购买弹性云服务器时,选择Windows操作系统。 由于需要在ECS下载MySQL客户端,因此需要为ECS绑定弹性公网IP(EIP),并且选择与GaussDB(for MySQL)标准版实例相同的区域、VPC和安全组,便于GaussDB(for MySQL)标准版和ECS网络互通。 购买Windows弹性云服务器请参考《弹性云服务器快速入门》中“购买弹性云服务器”章节。 在ECS实例基本信息页,查看ECS实例的区域和VPC。 图7 查看ECS的区域和VPC 在GaussDB(for MySQL)标准版实例基本信息页,查看GaussDB(for MySQL)标准版实例的区域和VPC。 图8 查看GaussDB(for MySQL)标准版实例的VPC 确认ECS实例与GaussDB(for MySQL)标准版实例是否处于同一区域、同一VPC内。 是,执行步骤3:测试连通性并安装MySQL-Front。 如果不在同一区域,请重新购买实例。不同区域的云服务之间内网互不相通,无法访问实例。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。 如果不在同一VPC,可以修改ECS的VPC,请参见切换虚拟私有云。