云服务器内容精选

  • 产品简介 GaussDB (for MySQL)实例支持只读节点。 在对数据库有少量写请求,但有大量读请求的应用场景下,单个实例可能无法抵抗读取压力,甚至对主业务产生影响。为了实现读取能力的弹性扩展,分担数据库压力,您可以在某个区域中创建一个或多个只读节点,利用只读节点满足大量的数据库读取需求,以此增加应用的吞吐量。您需要在应用程序中分别配置主实例和每个只读节点的连接地址,才能实现将写请求发往主节点,而将读请求发往只读节点。
  • 功能限制 “包年/包月”和“按需计费”实例最多可以创建15个只读节点。 Serverless实例可创建0~1个只读节点,如需更多只读节点,可以联系客服最多申请创建7个只读节点。 实例恢复:不支持通过任意时间点创建临时节点,不支持通过备份集覆盖节点。 数据迁移:不支持将数据迁移至只读节点。 数据库管理:不支持创建和删除数据库。 账号管理:只读节点不提供创建账号权限。 只读节点与主节点可能会存在时延,其中全文索引由于其本身的特殊机制,延时较为显著。如果您的业务对时延较为敏感,可将查询发送到主节点。
  • 账户密码等级设置 GaussDB(for MySQL)管理控制台上数据库密码复杂度,请参见购买实例中的数据库配置表格。 GaussDB(for MySQL)对在客户端新创建的数据库用户,设置了密码安全策略: 口令长度8~32个字符。 口令至少包含大写字母、小写字母、数字、特殊字符三种字符的组合,其中允许输入~!@#%^*-_=+?,()&$|.特殊字符。 不能与用户名或倒序的用户名相同。 创建实例时,为用户提供了密码复杂度校验,由于root用户可以修改密码复杂度,安全起见,建议修改后的密码复杂度不低于GaussDB(for MySQL)数据库的初始化设置。
  • 账户说明 您在创建GaussDB(for MySQL)实例时,系统会自动为实例创建如下系统账户(用户不可使用),用于给数据库实例提供完善的后台运维管理服务。 删除、重命名、修改这些账户的密码或权限信息,会导致实例运行异常,请谨慎操作。 rdsAdmin:管理账户,拥有最高的superuser权限,用于查询和修改实例信息、故障排查、迁移、恢复等操作。 rdsRepl:复制账户,用于只读节点在主实例上同步数据。 rdsBackup:备份账户,用于后台的备份。 rdsMetric:指标监控账户,用于watchdog采集数据库状态数据。 rdsProxy:数据库代理账户,该账户在 开通读写分离 时才会自动创建,用于通过代理地址连接数据库时鉴权使用。
  • 数据类型对应关系 GaussDB(for MySQL)实例数据同步到HTAP时会被转成对应的类型,详情请参考表1。 表1 数据类型转换 数据类型 GaussDB(for MySQL)数据类型 HTAP数据类型 NUMERTIC TYPES TINYINT Int8 SMALLINT Int16 MEDIUMINT Int32 INTEGER/INT Int32 BIGINT Int64 DECIMAL/NEMERIC Decimal FLOAT Float32 DOUBLE Float64 BIT UInt64 DATE TIME TYPES DATE Date DATETIME DateTime TIMESTAMP DateTime TIME String YEAR UInt16 String Data Types CHAR String VARCHAR String BINARY FixedString VARBINARY String BLOB String TEXT String ENUM Enum SET SET索引 Spatial Data Types GEOMETRY String POINT String LINESTRING String POLYGON String MULTIPOINT String MULTILINESTRING String MULTIPOLYGON String GEOMETRYCOLLECTION String JSON Data Types JSON String 父主题: 开发指南
  • 使用须知 按需实例不支持手动进行磁盘扩容。按需实例不存在磁盘容量的限制,会根据实际使用情况进行自动扩缩容。 针对包年/包月实例,您在购买实例时选择了多大的磁盘容量,系统就会分配多大的磁盘容量。如果后期存储需求超过当前的磁盘容量,GaussDB(for MySQL)会自动扩容,扩容的部分将按需计费。如果后面存储需求下降,则优先会将自动扩容的磁盘容量进行缩容。 示例:比如您够买实例时选择了10GB的磁盘容量,后来需求增加到了18GB,GaussDB(for MySQL)会自动扩容到18GB来满足您的存储需求。此后您通过手动方式将磁盘容量扩充了10GB,这个时候原来购买的磁盘容量和手动扩容的磁盘容量总计有20GB,已经可以满足您的存储需求,这20GB将按照包年/包月来计费,之前GaussDB(for MySQL)自动扩容的磁盘容量会自动缩容,不再产生按需计费。 自动扩缩容都是按需的,不存在磁盘步长。手动扩缩容的磁盘步长为10GB。 扩容期间,服务不中断,备份业务不受影响。 GaussDB(for MySQL)数据库实例支持无限次容量变更。 容量变更过程中,该实例不可重启和删除。
  • 索引设计规范 避免因为字段类型不同造成的隐式转换,导致索引失效。 业务上具有唯一特性的字段,即使是多个字段的组合,建议在所有具有唯一特性字段的最小集合上建立唯一索引。 例如:一个表含有有a,b,c,d,e,f字段,在业务上ab和ef分别是具有唯一特性的字段集合,那么最好在最小集合ab和ef上分别建立唯一索引。 即使在应用层做了完善的校验控制,只要没有唯一索引,根据墨菲定律,必然有脏数据产生。 同时需要考虑建立的唯一索引对查询是否真正有帮助,没有帮助的索引可以考虑删除; 需要考虑多建立的索引对插入性能的影响,根据唯一性相关的数据正确性需求,以及性能需求来权衡是不是需要多建立唯一性索引。 尽量在定长的字段(如:INT)上建立索引;在VARCHAR字段上建立索引时,必须指定索引长度,无需对全字段建立索引,根据实际文本区分度决定索引长度即可。 索引长度与区分度是一对矛盾体,一般对字符串类型数据,长度为20的索引区分度会高达90%以上,可以使用COUNT(DISTINCT LEFT(列名,索引长度))/COUNT(*)的区分度来确定。(有区分度的放前面,没有区分度的放后面)。 页面搜索避免使用左模糊(如:SELECT * FROM users WHERE u_name LIKE ‘%hk’)或者全模糊,避免从索引扫描退化为全表扫描,如果需要请在应用层解决。 索引文件具有B-tree的最左前缀匹配特性,如果左边的值未确定,那么无法使用此索引。 利用覆盖索引来进行查询操作,避免回表,但是覆盖索引加的字段不能太多,要兼顾写性能。 能够建立索引的种类:主键索引、唯一索引、普通索引,而覆盖索引是一种查询的效果,利用explain的结果,extra列会出现:using index。 SQL性能优化的目标:至少要达到range级别,要求是ref级别,如果可以是consts最好。 创建组合索引的时候,区分度最高的在左边。 单张表的索引数量控制在5个以内,或不超过表字段个数的20%。 创建索引避免有如下误解: 宁滥勿缺。误认为一个查询就需要建一个索引。 宁缺勿滥。误认为索引会消耗空间、严重拖慢更新和新增速度。 抵制唯一索引。误认为业务的唯一性一律需要在应用层通过“先查后插”方式能解决。 根据实际业务需求,减少使用无法利用索引优化的order by查询语句。Order by、group by、distinct这些语句较为耗费CPU资源。 涉及到复杂SQL语句时,优先参考已有索引进行设计,通过执行explain,查看执行计划,利用索引,增加更多查询限制条件。 使用新的SELECT、UPDATE、DELETE语句时,都需要通过explain查看执行计划中的索引使用情况,尽量避免extra列出现:Using File Sort,Using Temporary。当执行计划中扫描的行数超过1000时,需要评估是否允许上线。需每日进行慢日志统计分析,处理慢日志语句。 explain解读: type:ALL, index, range, ref, eq_ref, const, system, NULL(从左到右,性能从差到好)。 possible_keys:指出MySQL能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用。 key:表示MySQL实际决定使用的键(索引),如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX 或者IGNORE INDEX。 ref:哪些列或常量被用于查找索引列上的值。 rows:根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数。 Extra: Using temporary:表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询。 Using filesort:MySQL中无法利用索引完成的排序操作称为“文件排序”。 Using index:表示使用索引,如果只有 Using index,说明没有查询到数据表,只用索引表即完成了这个查询,这种情况为覆盖索引。如果同时出现Using where,代表使用索引来查找读取记录, 也是可以用到索引的,但是需要查询到数据表。 Using where:表示条件查询,如果不读取表的所有数据,或不是仅仅通过索引就可以获取所有需要的数据,则会出现 Using where。如果type列是ALL或index,而没有出现该信息,则你有可能在执行错误的查询,返回所有数据。 在WHERE条件列上使用函数,会导致索引失效。 示例:如 WHERE left(name, 5) = 'zhang',left函数会导致name上的索引失效。 修改方案:可在业务侧修改该条件,不使用函数。当返回结果集较小时,业务侧过滤满足条件的行。 对于超大表,在索引使用上还需要遵循以下规范。 要根据查询有针对性的创建,考虑在WHERE和ORDER BY命令上涉及的列建立索引,可根据EXPLAIN来查看是否用了索引还是全表扫描。 值分布很稀少的字段不适合建索引,例如“性别”这种只有两三个值的字段。 字符字段不要做主键。 不用外键,由程序保证约束。 使用多列索引时主意顺序和查询条件保持一致,同时删除不必要的单列索引。 删除索引,要做充分论证,最好做数据备份。 父主题: 使用规范
  • 通过Hint指定SQL发往主节点或只读节点 在SQL开头添加hint注释进行强制路由; /*FORCE_MASTER*/强制路由到主节点; /*FORCE_SLAVE*/强制路由到只读节点; Hint注释仅作为路由建议,非只读SQL、事务中的场景不能强制路由到只读节点。 使用 MySQL 命令行进行连接并使用 Hint 语句时,需要在命令中增加 -c 选项,否则 Hint 会被 MySQL 命令行工具过滤。
  • 关键参数说明 “rds_compatibility_mode”参数用来控制服务器兼容之前版本的部分行为,其选项值请参见表1。 表1 选项说明 选项名称 描述 依赖的内核版本 ALLOW_DATE_COMPARE_AS_STRING 用于控制DATETIME/DATE/TIMESTAMP字符串比较功能。 2.0.45.230900及以上版本 ALLOW_DATETIME_TZ_MONTH_DAY_ZERO 用于控制带时区且月日为0的DATETIME值的插入功能。 2.0.45.230900及以上版本 ALLOW_RENAMED_DEPRECATED_FUNC 支持MySQL 5.7废弃的gis函数的特性开关。 2.0.48.231200及以上版本 ALLOW_BACKSLASH_N_AS_NULL 支持MySQL 5.7废弃的\N关键字的特性开关。 2.0.48.231200及以上版本 ALLOW_GROUP_BY_IMPLICIT_SORTING 支持GROUP BY隐式排序开关。 2.0.48.231200及以上版本 ALLOW_GROUP_BY_ASC_DESC 兼容GROUP BY COLNAME ASC/DESC语法开关。 2.0.48.231200及以上版本 ALLOW_EARLIER_ROWID_FILESORT 启用兼容的文件排序模式选择判据和rowid文件排序模式的开关。 2.0.48.231200及以上版本 “validate_password.length”参数值不能设置的比“validate_password.number_count+validate_password.special_char_count+(2 * validate_password.mixed_case_count)”小,否则应用参数模板时,“validate_password.length”会自动修改为当前已生效的最小值。 当用户通过自定义参数模板创建实例时,“validate_password.length”参数值不能大于16,否则会导致创建实例失败。 当用户通过自定义参数模板创建实例时,“validate_password.mixed_case_count”、“validate_password.number_count”、“validate_password.special_char_count”参数值不能超过4,否则可能会导致实例创建失败,建议使用默认值“1”。
  • 操作场景 创建GaussDB(for MySQL)数据库实例时,系统默认开启自动备份策略,暂不支持关闭。实例创建成功后,您可根据业务需要设置自动备份策略。GaussDB(for MySQL)按照用户设置的自动备份策略对数据库进行备份。 GaussDB(for MySQL)的备份操作是实例级的,而不是数据库级的。当数据库故障或数据损坏时,可以通过备份恢复数据库,从而保证数据可靠性。由于开启备份会损耗数据库读写性能,建议您选择业务低峰时间段启动自动备份。 设置自动备份策略后,会按照策略中的备份时间段和备份周期进行全量备份。实例在执行备份时,按照策略中的保留天数进行存放,备份时长和实例的数据量有关。 在进行全量备份的同时系统每5分钟会自动生成增量备份,用户不需要设置。生成的增量备份可以用来将库表数据恢复到指定时间点。
  • 备份类型 GaussDB(for MySQL)支持的备份有很多种,根据不同维度,有如下分类。 按照数据量:分为全量备份和增量备份。 表1 全量备份和增量备份对比 备份类型 全量备份 增量备份 描述 全量备份是备份数据库所有数据。 增量备份是备份某个时间段内变化的数据。 是否默认开启 是 是 保留时长 如果在新的全量备份未超过保留天数前系统会一直保留,直至新的全量备份超过保留天数后才会删除。 超出备份保留天数的会自动被删除。 特点 对当前状态下的数据库实例中的所有数据进行一次完整的备份。 用户可在任意时刻使用全量备份恢复创建备份时的完整数据。 包含自动备份和手动备份。 系统自动每5分钟或一定数据量时会对上一次自动备份或增量备份后更新的数据进行备份。 全部为自动备份。 查看备份大小 单击实例名称,在“备份恢复”的“全量备份”页签查看备份大小。 单击实例名称,在“备份恢复”的“增量备份”页签查看备份大小。 按照执行方式:分为手动备份和自动备份。 表2 手动备份和自动备份对比 备份类型 自动备份 手动备份 是否默认开启 是 是 保留时长 1~732天 说明: 备份保留时长可联系客服申请开通至最大3660天。 一直保存,直到用户手动删除。 特点 根据您指定的备份保留期保存数据库实例的自动备份。 手动备份是由用户启动的数据库实例的全量备份,会一直保存,直到用户手动删除。 设置方法 设置自动备份策略 创建手动备份 按照备份区域:分为同区域备份和跨区域备份。 设置跨区域备份策略需要开通白名单,请联系客服人员申请权限。 表3 同区域备份和跨区域备份对比 备份类型 同区域备份 跨区域备份 描述 备份存储在同一个区域。 备份存储在除当前区域外的其他区域。 是否默认开启 是 否 保留时长 1~732天 说明: 备份保留时长可联系客服申请开通至最大3660天。 1~1825天 特点 支持将备份文件存放到和实例相同的区域存储,系统默认开启自动备份(同区域)策略,暂不支持关闭。 支持将备份文件存放到另一个区域存储,开启跨区域备份策略后,会自动将该实例的备份文件备份到目标区域。 设置方法 设置同区域备份策略 设置跨区域备份策略 查看备份大小 已开通跨区域备份白名单 单击“备份恢复管理”,在“数据库同区域备份”页签查看目标实例的备份大小。 未开通跨区域备份白名单 单击“备份恢复管理”,查看目标实例的备份大小。 单击“备份恢复管理”,在“数据库跨区域备份”页签查看目标实例的备份大小。 按照备份位置:分为一级备份和二级备份。 一级备份需要开通白名单。 表4 一级备份和二级备份对比 备份类型 一级备份 二级备份 是否默认开启 否 是 保留时长 自动备份产生的一级备份,超出保留个数的一级备份会被删除。 手动备份产生的一级备份,在备份上传OBS桶完成后自动删除。 参考手动备份和自动备份的保留时长。 特点 一级备份是指保存在实例本地的全量备份,相对于二级备份,一级备份恢复速率更快。 一级备份创建完成后,备份状态为“备份可用”,该备份会继续上传到OBS桶(即二级备份),备份上传OBS桶期间,您可以使用一级备份进行恢复操作。 您可以前往设置同区域备份策略中设置一级备份的保留个数。 二级备份是指上传到OBS桶的备份,是默认备份方式。 父主题: 数据备份
  • 使用须知 “异常”状态的数据库实例节点允许重启。 为了缩短重启时间,建议您在重启过程中尽可能减少数据库活动,以减少中转事务的回滚活动。 重启数据库实例节点会将导致短暂中断,在此期间,数据库实例节点状态将显示为“节点重启中”。 重启过程中,该节点将不可用。建议您在业务低谷期执行重启节点操作并确保应用具备重连机制。 如果该实例存在参数修改,则需要重启实例新参数才会生效。重启前,请做好业务安排,谨慎操作。
  • 计费说明 表2 计费说明 计费项 规格码 价格 备份空间 gaussdb.mysql.crossreg.backup.space 国内Region(不含香港):0.000221 元/GB/小时 香港:0.000458 元/GB/小时 海外Region:0.00163 元/GB/小时 跨区域转储网络流量 gaussdb.mysql.crossreg.backup.flow 国内Region(不含香港):0.5 元/GB 香港:0.6400 元/GB
  • 支持的区域 表1 支持的区域说明 实例所在原区域 备份的目标区域 华北-北京四 华东-上海一、华北-乌兰察布一、西南-贵阳一、华南-广州 华东-上海一 华北-北京四、华北-乌兰察布一、西南-贵阳一、华南-广州 华北-乌兰察布一 华北-北京四、华东-上海一、西南-贵阳一、华南-广州 西南-贵阳一 华北-北京四、华东-上海一、华北-乌兰察布一、华南-广州 华南-广州 华北-北京四、华东-上海一、华北-乌兰察布一、西南-贵阳一
  • 产品特性 支持MVCC(多版本并发控制),提供事务一致性读 提供四种隔离级别,用户可以根据具体使用场景,在进行数据同步时通过设置参数值选择所需隔离级别。 READ_UNCOMMITTED:读未提交,无事务一致性。 READ_COMMITTED:读最新已提交数据,提供一致性读。 QUERY_SNAPSHOT:快照查询,避免数据去重归并操作,提供极速查询性能,且保证一致性读。 QUERY_RAW:返回所有原始数据,包括已删除和更新的不同版本。 快速去重 基于快照技术,对数据进行快速去重,提升查询性能。 数据压缩存储 HTAP实时分析默认压缩存储数据,同等条件下能够节约大量存储成本。 并行数据同步 初始全量数据同步阶段,基于数据统计信息自动分片,并行化处理提升同步性能。在建库同步时可以设置并行线程数。 表定义改写 在创建同步时,用户可根据业务场景对表进行个性化修改,进一步提成分析查询性能,我们的支持六种修改方式:ORDER BY、PARTITION BY、SAMPLE BY、 PRIMARY KEY、TTL、COLUMNS。 同步黑白名单过滤 在创建同步时,用户可根据业务需要,通过黑白名单选择所需表或排除表的方式进行筛选。 Binlog合并 当一个库有多个同步时,会合并使用一份binlog,减少从GaussDB(for MySQL)同步时的网络资源消耗。 增强数据复制的稳定性 支持绝大部分GaussDB(for MySQL)的DDL同步。支持字符集的自动转换,将源库的字符集,自动转换成目标库的UTF-8字符集。 数据类型更丰富 支持GaussDB(for MySQL)的全部数据类型,具体类型对应关系参见数据类型对应关系。 多个数据源汇聚 支持将多个GaussDB(for MySQL)数据库同步到一个HTAP实例。 安全增强 对用户账号信息进行加密保存。