• [技术干货] 华为云云原生数据库,让企业离应用更进一步
    7月9日,华为开发者大会2023(Cloud)期间,华为云举办“云原生数据库,‘Less哲学’让开发者离应用更近一步”的专题论坛。华为云数据库服务产品部副总经理庄乾锋携手两位华为云数据库技术专家,并联合顺丰客户,共同分享了云原生数据库未来演进方向、华为云云原生多模数据库的创新、全链路智能化解决方案,以及顺丰的云原生优秀实践,让企业和开发者离应用更近一步,加速云原生数据库的落地。多模融合,极简体验,华为云打造以应用为中心的云原生数据库庄乾锋表示,新应用、新场景带来了新的业务诉求,客户渴求更好地解决数据同步、数据存储和处理、数据库高效管理等问题的解决之道。而以应用为中心的云原生数据库,具备敏捷智能的天然优势,能够让应用更智能、更高效地使用数据库,促使越来越多用户更加坚定地选择了云原生数据库。面对企业新诉求,华为云数据库提出了云原生三大方向:Serverless打造极致的弹性,通过ALT应用无损透明倒换、应用弹性透明调度、应用透明集群等技术,保障数据库弹性伸缩业务无感知;Regionless让全域数据可用,Global Database、全域分层式引擎、全域一致性集群等技术,保障数据高可用、数据就近访问;Modeless带来极简体验,通过模型处理总线、HTAP、NDPQ等技术,智能根据业务负载选择合适引擎处理业务请求,并实现多模数据自动转换,让数据处理和管理变得更简单。以云原生架构为代表的华为云关系型数据库GaussDB(for MySQL)和非关系型数据库GaussDB NoSQL,在生态开放、弹性扩容、性能提升、高可用等方面,较开源数据库具备极大优势。比如GaussDB(for MySQL) 100%兼容MySQL 8.0,实现分钟级扩容,性能较开源提升7倍,两地三中心架构设计,具备跨Region数据实时灾备,最高支持128TB的海量存储,可实现超百万级QPS吞吐。华为云云原生数据库已经在电商、游戏、汽车制造等行业广泛应用,助力更多企业实现敏捷化管理。比如支撑梦饷集团打造一体化电商平台,实现数据库运维效率提升约30%,每秒成交的订单数创历史新高,为200万店主、10000+品牌、2.5亿商品提供了高效的服务。游戏行业,华为云GaussDB(for Redis) 是最佳的游戏数据库选型,加速了《迷你世界》去中心平台化,实现5倍性能提升,轻松应对20倍业务高峰变化,亚毫秒级时延稳定无抖,高效支撑千万级用户同时在线畅玩。云原生多模融合,高效管理多样化海量数据华为云数据库NoSQL产品架构师余汶龙表示,随着企业业务的发展,传统NoSQL数据库在容量、性能、扩展性、可用性、运维等方面出现挑战,企业呼唤更稳定可靠、更易用、更加降本增效的NoSQL产品。华为云GaussDB NoSQL通过云原生存算分离架构设计,支持四款非关系型数据库引擎,分别兼容Redis、MongoDB、InfluxDB和Cassandra,打造了高扩展、高性能、高可靠、海量存储、强容灾等能力。强扩展:支持计算、存储分别按需扩容。计算扩容时,业务仅秒级抖动,扩容耗时分钟级;存储扩容时,业务无感知,耗时为秒级,支持一键扩缩容。分级存储:冷热数据自动交换,应用零改造,支持指定热数据到期时间,灵活调整冷热分离线。多租户管理:集群最高支持6万+数据库,支持DB级权限隔离,清晰的多租户权限隔离设计,易于DBA管理。强容灾:支持同城双活数据库中心容灾解决方案、两地三中心容灾解决方案,且支持双向同步,具备全量+增量同步、key保序、可靠传输、断点续传等特性,提供了企业级容灾解决方案。华为云GaussDB NoSQL当前已历经电商、游戏、泛互联网、社交文娱等行业核心业务锤炼,打造了极致稳定、高效可靠的数据库服务。比如游戏行业,华为云GaussDB(for Redis)支撑《余烬风暴》强势上线,时延稳定无抖,首日对战高峰实时扩容,对业务零影响。在内部,华为云GaussDB(for Cassandra)助力华为终端云高效管理10000+个Cassandra节点,轻松处理每秒1000万+业务请求量。云智能DBA助手、Serverless,打造全链路数据库智能化体验华为云数据库高级产品经理周家恩表示,数据库技术车轮滚滚向前,数据库演进方向也从云化转向云原生化、智能化,云原生数据库与Serverless的结合,进一步加速了云原生数据库的演进,数据库运维方式也随之变化。作为国内领先的云原生数据库典范,华为云GaussDB(for MySQL) 已实现全栈无感Serverless,带领云原生数据库进入智能时代。GaussDB(for MySQL)能按照新的算力单元来计费,打破了传统以固定规格售卖的商业模式,客户可直接对自己的实际使用量进行付费;Backtrack极速闪回功能,实现TB级数据分钟级完成回溯; Global Database突破地域限制,实现数据全球就近访问和容灾;NDPQ智能并行计算,查询响应时间提升数十倍。华为云还打造了云智能DBA助手,提供了SQL诊断、参数调优、智能索引推荐等系列运维能力,大幅度提升了开发、运维人员的效率。比如,实时性能和会话监控查询功能,及时发现数据库异常并提供快速解决建议,提升实例稳定性;容量预估功能,可以根据历史容量信息预估空间增长,提供表智能诊断、智能扩容;自治限流功能,自动检测到数据库CPU等异常,根据既定业务优先级等进行限流处理,保证核心业务的稳定运行。云原生数据库,解码智慧物流“速递”的秘密顺丰科技数据库专家王操表示,顺丰快递是国内领先的快递物流综合服务商、全球第四大快递公司,一直在积极利用科技赋能顺丰技术创新,为客户提供涵盖多行业、多场景、智能化、一体化的智慧供应链解决方案。为了提升物流管理效率,顺丰基于云原生数据库重新打造了智慧物流管理平台,顺丰云数据库管理平台具备集群管理、高可用、容灾服务、资源管理、运维生态、自动化变更等能力。集群管理方面,我们能够快速地对信息进行检索,自动排除部分风险;高可用方面,通过日志模块、数据管理等运营服务,长链接模块、修复模块等服务来检查数据库状态,快速检索并修复异常;容灾方面,打造了整体化容灾方案,可以快速检索到异常信息,并自动修复;资源管理方面,打通各层资源,进行整体资源融合,实现公共能力的复用;自动变更方面,通过构建一个运营工作台,同时打通整个流程,集合所有资源信息,再通过自动化的变更流程,减少大量的人工沟通和变更的时间。顺丰致力于构建数字时代的智慧供应链生态,云原生数据库的加持,进一步提升了物流管理效率,为消费者提供更便捷、更可靠、更贴心的服务。云原生数据库正逐渐成为数据库行业的“宠儿”,也在越来越多的行业场景发挥重要的价值。华为云数据库将始终践行云原生理念,围绕Serverless, Regionless, Modeless三大方向持续打磨云原生能力,更加贴近客户业务的现实需求,让云原生数据库更广泛地进入千行百业,进一步推动企业数字化转型。
  • [常见问题汇总帖] Invalid or unsupported by client SCRAM mechanisms
    目前我们的sonarqube版本是8.7,opengauss的版本是3.0.2,我想用sonarqube连接opengauss数据库,但是报错,如题,该怎么解决呢
  • [技术干货] 执行计划缓存,Prepared Statement性能跃升的秘密
    引言在数据库系统中,SQL(Structured Query Language)语句输入到系统后,一般要经历:词法语法解析(parse)、重写(resolve)、优化(optimize)、执行(execute)的过程。词法语法分析,重写和优化,这三个阶段会生成SQL语句的执行计划 (plan)。当SQL语句存在多种执行计划的时候,优化器会从这许多的执行计划中挑选出一个它认为最优的(通常是占用系统资源最少的,包括CPU以及IO等)作为最终的执行计划供执行器执行。生成执行计划的过程会消耗较多的时间,特别是存在许多可选的执行计划时。图1:SQL语句执行 Prepared Statement是将SQL语句中的值用占位符替代,可以视为将SQL语句模板化或者说参数化。当执行PREPARE语句时,传统MySQL将对指定的语句进行词法语法解析和重写,如上图①②。该阶段称为预编译阶段。Prepared Statement的优势在于一次编译、多次运行,省去了预编译阶段需要的时间。随后发出EXECUTE命令时,MySQL将对编译阶段生成的结构执行优化,即上图的③,生成对应的执行计划并执行,把输出结果返回到客户端。例如:PREPARE stmt FROM ‘SELECT * FROM t WHERE t.a = ?’;SET @var = 2;EXECUTE stmt USING @var;传统MySQL的Prepared Statement只会节省SQL语句的解析及重写过程需要的时间,但是对于一条SQL语句,如文章开头所述,优化SQL语句并生成执行计划需要耗费大量的资源以及时间。如果能将该Prepared Statement语句对应的最终执行计划进行缓存,当执行EXECUTE语句的时候,就可以直接使用已缓存的执行计划,从而就可以跳过SQL语句生成执行计划的整个过程,进而可以提高语句的执行性能。为此,GaussDB(for MySQL) 提供了Prepared Statement执行计划缓存特性。接下来一起看一下GaussDB(for MySQL)是如何对执行计划进行缓存并加速Prepared Statement性能的。执行计划缓存工作原理GaussDB(for MySQL)对Prepared Statement执行计划进行缓存的基本原理和流程如下图所示:响应EXECUTE,执行查询。通过is_plan_cached过程来查看当前Query的执行计划是否已经被缓存。如果已经被缓存,优化器将对当前的Query缓存的执行计划进行初始化,根据执行计划的上下文还原执行计划,然后利用还原的执行计划继续执行。如果没有被缓存,在执行完Query优化生成执行计划之后,通过is_query_cachable过程验证当前执行计划是否可以被缓存。如果满足缓存条件,执行计划将会被缓存(调用cache_JOIN_plan),以便以后的EXECUTE语句可以利用该缓存的计划进行执行。如果不能缓存,通过传统的MySQL执行流程(优化,生成执行计划然后执行)执行EXECUTE语句。执行计划缓存管理执行计划缓存功能开关GaussDB(for MySQL)引入了一个新的系统参数rds_plan_cache来开关Prepared Statement执行计划缓存功能。rds_plan_cache:该参数可以设置为ON/OFF。分别代表开启和关闭执行计划缓存。该参数是Session/Global级别的参数。查看执行计划缓存情况GaussDB(for MySQL)提供了两个状态变量供用户查看或者验证Prepared Statement执行计划是否被缓存,以及在执行时是否命中了缓存的执行计划。cached_plan_count:显示有多少个Prepared Statement缓存了执行计划。这是一个Global级别的状态变量。cached_plan_hits:显示EXECUTE执行过程中命中了缓存的执行计划的次数。这是一个Session/Global状态。下面举例来看一下Prepared Statement是如何利用了执行计划缓存特性的:SET @a = 'two';SET @b = 3;PREPARE stmt FROM "SELECT * FROM t1 WHERE b = ? AND c = ?";EXECUTE stmt USING @a,@b;执行结果如下:a b c6 two 3再次执行Prepared Statement:EXECUTE stmt USING @a,@b;a b c6 two 3第三次执行Prepared Statement:execute stmt using @a,@b;a b c6 two 3通过cached_plan_count和cached_plan_hits查看stmt执行计划是否被缓存,以及在执行时是否命中了缓存的执行计划。SHOW SESSION STATUS LIKE "cached_plan%";显示结果如下:Variable_name ValueCached_plan_count 1Cached_plan_hits 2从显示结果可以看出,第一次执行EXECUTE语句的时候,Prepared Statement对执行计划进行了缓存,即可以看到Cached_plan_count为1; 之后执行两次EXECUTE语句,都命中了执行计划缓存,所以可以看到Cached_plan_hits变成了2。缓存的执行计划如何失效为了保持当前缓存的执行计划是尽可能最优的,GaussDB(for MySQL)定义了如下规则来对当前缓存的计划进行失效,并重新生成执行计划:执行计划相关表的记录数更改超过总记录数的20%。这意味着当前表的记录数如果插入/删除超过20%的记录,当前缓存计划将失效并在优化后重新缓存。注:记录数是根据统计数据估计的。所以最好先对表进行Analyze。表定义进行了更改。例如,执行计划相关表上进行的DDL将导致缓存计划无效,并在优化后重新缓存。如果系统变量Optimizer_switch中影响执行计划生成的选项值进行了更改,则缓存的计划将失效,并在优化后重新缓存。系统字符集发生变化,与缓存的计划不同时,将导致缓存计划失效,并在优化后重新缓存。执行计划缓存功能当前的一些限制GaussDB(for MySQL)的Prepared Statement的目的是节约查询的优化时间。对于通过并行查询优化的大查询,也就是数据量相对庞大的查询,这些查询大部分的执行时间是集中在执行计划的执行阶段。对于该类型的查询,优化时间相比执行时间而言可以忽略不计,所以GaussDB(for MySQL)没有对并行查询计划进行缓存。另外,GaussDB(for MySQL)对于Prepared statement 缓存执行计划的能力还在逐步增强中,比如当前只支持单表的SELECT查询语句,暂时还不支持UNION操作。执行计划缓存性能测试结果对于使用执行计划缓存和不使用执行计划缓存的场景,基于Sysbench测试集进行了性能测试对比,从测试结果可以看出,在启用执行计划缓存后,各类业务性能均有提升。注意:这些测试只代表相对数字,并不代表实际性能。测试环境配置如下:数据集 : 8 个表,每个表1000万行测试服务器:Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz 2 physical cores 56 processors 460G memory总结GaussDB(for MySQL)通过缓存执行计划,可以提升Prepared Statement的性能。特别是针对Range Scan的测试集,性能提升可达2倍左右。未来我们会支持越来越多的查询场景,性能加速值得期待。
  • [问题求助] 有了解gaussdb考证的老师吗
    公司对gaussdb有兴趣,想通过个人考试加深对gaussdb的了解,请问下,有了解gaussdb 考证的老师吗,想了解下想关情况
  • [数据库] 【第55课】GaussDB(for MySQL)小版本升级全攻略
    本节重点讲GaussDB(for MySQL如何升级内核小版本,内核小版本的升级涉及性能提升、功能优化或问题修复等。关于内核的版本更新说明,请前往华为云官网查看。华为云有新的内核小版本发布时,您可以在“实例管理”页面的“数据库引擎”列看到内核小版本升级提示,轻点“补丁升级”,即可前往升级,具体内容参考后续操作步骤。升级小知识升级数据库内核小版本会重启GaussDB(for MySQL)实例,服务可能会出现闪断,请您尽量在业务低峰期执行该操作,或确保您的应用有自动重连机制。如果数据库内核从8.0.18升级到8.0.22版本,分区数大于1000时可能会升级失败,请升级之前提交工单联系华为云工程师协助检查版本兼容性。升级实例小版本时,如有只读节点,也会同步升级只读节点的小版本,升级完成会重启实例,请您选择合适的时间升级(不支持单独升级只读实例的小版本)。升级内核小版本后,实例会升级到最新的内核小版本,升级成功,无法降级。小版本升级过程中禁止event的ddl操作,如create event、drop event和alter event。操作步骤登录管理控制台。单击管理控制台左上角的,选择区域和项目。在页面左上角单击,选择“数据库 > 云数据库 GaussDB(for MySQL)”。在“实例管理”页面,选择指定的目标实例,单击实例名称。在“基本信息”页面,“实例信息”模块的“兼容的数据库版本”处,单击“补丁升级”。您也可以在“实例管理”页面的“数据库引擎”列看到内核小版本升级提示,单击“补丁升级”。在弹出框中,选择升级方式,单击“确定”。a、立即升级:系统会立即升级您的数据库内核版本到当前最新版本。操作完成后,可进入任务中心的“即时任务”页签,查看该升级任务的相关信息。b、可维护时间段内升级:系统会在您设置的可维护时间段内,升级您的数据库内核版本到当前最新版本。操作完成后,可进入任务中心的“定时任务”页签,查看该升级任务的相关信息。
  • [数据库类] guassdb(formysql) 如何建立列存储格式的表,是不是不支持啊
    create table test_bb  (  COL373 CHAR(2) COMMENT '备用字段373',  COL374 DATE COMMENT '备用字段374',  COL375 CHAR(2) COMMENT '备用字段375' )with(orientation=column);
  • [技术干货] 拒绝“爆雷”!GaussDB(for MySQL)新上线了这个功能
    什么是最大读取行一直以来,大数据量查询是数据库DBA们调优的重点,DBA们通常十八般武艺轮番上阵以期提升大数据查询的性能:例如分库分表、给表增加索引、设定合理的WHERE查询条件、限定单次查询的条数……然而,DBA再厉害,应用程序千千万,写代码的程序员万码奔腾,大数据量的查询像地雷,不定什么时候就爆了。比如隐藏在某段代码里的查询,因为一个新手程序员的经验不足,查询代码写得欠佳,没有WHERE子句或缺少索引引发了不必要的多行读取,甚至全表扫描,给服务器带来了过度的压力,导致业务执行缓慢,甚至最后服务器OOM崩溃。为了避免这种“爆雷”,GaussDB(for MySQL)近期上线了最大读取行特性。优化器产生执行计划后,如果优化器预估的读取行数超过了所设置的最大读取行阈值,则自动中止查询,将雷的导火索切断。这种机制的优点在于:执行计划阶段就对查询进行了干预,而不是语句开始执行后在执行过程中进行中断。既杜绝了劣质查询对服务器和业务运行造成的风险,又大大节省了时间和资源。如何设置最大读取行在GaussDB(for MySQL)中,设置rds_max_row_read,指定查询允许读取的最大行数。GaussDB(for MySQL)收到查询指令,执行查询之前,会对查询要读取的行数进行估计。当估值超过所设置的最大读取行时,将中止查询,即查询没有机会运行,提前规避不必要的资源消耗。下面是一份测试数据,说明了开启最大读取行前后的差异。假设表t1有4M大小的行,当开发人员或应用程序尝试运行以下查询时,运行需要7分钟。mysql> SELECT  *  FROM t1;WHERE子句的缺失致使需要全表扫描,查询耗时长。对于更大的表,这类查询将需要更多的耗时,使服务器消耗更多资源,查询耗时甚至可能高达数小时。最大读取行特性的使用,可以节省宝贵的时间和资源。比如假设将最大读取行数指定为1000000:mysql> set rds_max_row_read =1000000;Query OK, 0 rows affected (0.00 sec)修改后,重新运行不含WHERE子句的查询,收到了读取行超限的提示,查询被停止。   mysql> SELECT  *  FROM t1;ERROR HY000: Expected number of read rows exceeds the maximum allowed (see @@rds_max_row_read)通过最大读取行,相当于拥有了一个工具,DBA或者软件工程师根据业务情况可以自如设置和调整限制规则,保证业务正常运行的同时,限制次优查询,避免性能异常。适用范围适用于SELECT、CREATE SELECT和INSERT SELECT。功能开启默认情况下,该功能是禁用的,只有当rds_max_row_read设置了值时,该功能才会被激活。为了功能的稳定,避免无心的错误设置对业务造成不必要的影响,rds_max_row_read做了最低值限制,不允许用户设置比最低值更低的值。实现原理GaussDB(for MySQL)通过遍历每个查询块并聚合各查询块的贡献来整体评估查询的读取行数:也就是对各join对象的读取行数评估后累加。如果在累加评估过程中的某一刻,估计值超过了所设置的限制,查询将被终止。对于关联子查询,评估办法为:评估子查询的读取行数,然后乘以查询被执行的次数。需要特别说明的是,对每个JOIN对象的估计是执行计划预估返回的行数,可能与真实执行返回的行数有偏差。这虽然是一个相对简单的评估模型,但是我们坚信其具有足够的鲁棒性。对于复杂查询,GaussDB(for MySQL)还通过optimizer trace提供了更多信息以帮助您确定优化器做决策的原因及如何优化查询。示例示例1mysql> EXPLAIN format=tree SELECT * FROM table_1, table_2;+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| EXPLAIN                                                                                                                                                                   |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| -> Inner hash join (no condition)  (cost=6.50 rows=54)    -> Table scan on table_1  (cost=0.19 rows=9)    -> Hash        -> Table scan on table_2  (cost=0.85 rows=6) |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)mysql> SET rds_max_row_read =20;Query OK, 0 rows affected (0.00 sec)mysql> SELECT * FROM table_1, table_2;ERROR 1888 (HY000): The expected number of read rows exceeds the allowed maximum (see @@rds_max_row_read)查询读取的行太多,我们尝试在optimizer trace的帮助下寻找原因:SET optimizer_trace="enabled=on";SELECT * from table_1, table_2;SELECT * FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;在optimizer trace中,可以找到:{            "Max_row_read": {              "select#": 1,              "current_estimate_of_rows": 54,              "rows_contributed_by_this_query_block": 54            }          }这表示此查询中的唯一查询块,行读取数为54。执行计划中的这个评估有多准确呢?执行如下查询查看语句实际被执行的次数:mysql> show status like "handler_read_rnd_next";+----------------------------+-------+| Variable_name              | Value |+----------------------------+-------+| Handler_read_rnd_next      | 17    |+----------------------------+-------+1 rows in set (0.00 sec)handler_read_rnd_next显示实际上的读取是17行,而不是54行。这个17是怎么来的呢?这是一个哈希连接:-遍历整张表时,左表有9行数据+1行额外行。-右表有6行+1行额外行。优化器中会预估返回读取行,例如,54。在这个示例中,它并没有很好地猜测到返回的行数,它高估了行读取的数量。在大多数情况下,读取行数的估计不够精确,但可以肯定的是,它是足够稳健的,能达到相应的目的。示例2创建例表t1:mysql> CREATE TABLE t1(a INT);在表中填充1536行数据后。将rds_max_row_read设置为500,进行以下测试查询:mysql> SELECT * FROM t1 WHERE a>6;ERROR HY000: Expected number of read rows exceeds the maximum allowed (see @@rds_max_row_read)在optimizer trac的帮助下,可以看到优化器估计的读取行数是512行,因此查询被终止。如果在a字段上添加索引(这是一件明智的事情),同一查询的估计读取行数是1,查询检测顺利通过。这个简单的示例说明:最大读取行能帮助您编写更加优质的查询语句。结论最大读取行特性针对读取过多行的查询,识别和过滤出效率低下的查询。用户可以为读取行数设置阈值,超过该阈值则终止查询。为了识别此类查询,GaussDB(for MySQL)在优化器中进行了读取总行数的粗略估计。当查询终止时,可以检查optimizer trace,从中收集线索,以帮助重写更高效的查询。简而言之,最大读取行为用户提供了一个工具,使他们可以更充分地利用手上的资源。
  • [问题求助] 高并发测试结果没有优势
    在学习电商秒杀小项目的时候,用Jmeter 1000个线程循环10次测试访问商品列表的这个并发事件的时候,使用GaussDB for mysql (4核16g)的QPS为180左右(并发高了也是这个值应该是稳定了)(广州节点)我在云服务器(广州节点,2核2g)上搭建mysql同样进行测试,QPS有210这样的话GaussDB高并发的优势该怎么体现哇(头秃)
  • [问题求助] GaussDB for Mysql关于高并发的特性技术如何体现
    GaussDB for Mysql关于高并发的特性技术如何体现。有无相关文档或是思路
  • [问题求助] SQL server迁移gaussDB
    请问SQL server迁移GaussDB有什么工具可以实现对象的迁移?
  • [技术干货] lamp数据库选型
    问题:LAMP数据库和应用都分别用主机部署,请问用什么规格的存储,并说明原因(应用服务器数据存储200g,文件数据增长快)回答:具体考的时候,如果你真的抽到这个题目,要看清楚题干对吧,题干上面应该会说这个应用数据库,它的读写环境有没有要求什么的,要具体要结合题目。如果仅基于现有的信息:1、Apache服务器:WEB应用程序的服务器,当客户端请求的是静态资源时,web服务器会直接把静态资源返回客户端;2、当客户端请求的是动态资源时,httpd的php模块会进行相应的动态资源运算,如果此过程还需要数据库的数据作为运算参数时,php会连接mysql取得数据然后进行运算,运算的结果转为静态资源并由web服务器返回到客户端。对于应用服务器,由于文件数据增长快,建议还是选用云硬盘,可以选用高性能。如果有说明,可搭配SFS文件存储。                                                                    
  • [技术干货] 主流数据库迁移
    1、Mysql一、mysqldump步骤:1.使用mysqldump导出自建数据库的数据2.将导出的两个文件上传到ECS实例上3.将导出的文件导入到目标RDS中4.导入成功后登录RDS实例数据库中查看数据是否正常。二、数据复制DRS步骤:(以本地mysql迁移至RDS为例)1.在“实时迁移管理”页面,单击“创建迁移任务”,进入创建迁移任务页面。2.在“迁移实例”页面,填选区域、任务名称、描述、迁移实例信息。3.在“源库及目标库”页面,迁移实例创建成功后,填选源库信息和目标库信息,单击“源库和目标库”处的“测试连接”,分别测试并确定与源库和目标库连通后,勾选协议。4.在“迁移设置”页面,设置迁移用户和迁移对象.5.在“预检查”页面,进行迁移任务预校验,校验是否可进行迁移。6.进入“参数对比”页面,进行参数对比。7.在“任务确认”页面,设置迁移任务的启动时间、任务异常通知设置、SMN主题、时延阈值、任务异常自动结束时间,并确认迁移任务信息无误后,单击“启动任务”,提交迁移任务。2. SQL server 工具1 使用SQLserver导入导出功能将本地SQL Server数据库迁移到RDS for SQL Server二、步骤:(以本地sqlserver迁移至RDS为例)1.登录控制台,选择“数据库 > 云数据库 RDS”“实例管理”页面,选择目标实例,单击实例名称,进入实例的“基本信息”页签。2.在“基本信息”页签下单击“绑定”,在弹出框选择对应的弹性IP。3.在本地安装SQL Server客户端管理工具,通过弹性IP进行连接4.通过SQL Server自带的脚本生成工具,生成ECS上的数据库结构脚本5.在SSMS客户端中打开生成的脚本SQL文件,连接到RDS对应实例上。6.完成以上步骤后通过SQL Server自带的导入导出功能完成数据迁移。工具2 DRS备份迁移步骤 cid:link_01.在“备份迁移管理”页面,单击“创建迁移任务”。在“选定备份”页面输入任务名称和描述,填选备份文件信息,单击“下一步”。在“选定目标”页面,根据所选数据库类型,配置相应的数据库信息,单击“下一步”在“信息确认”页面核对配置详情后,勾选协议,单击“下一步”。在“备份迁移管理”页面任务列表中,观察对应的恢复任务的状态为“恢复中”,恢复成功后,任务状态显示“成功”。工具3 Golden Gate在源端和目标端的数据盘建立ggs目录将OGG软件包解压到ggs目录中打开源端和目标的SQL Server代理服务并将启动类型改为自动在源端建立数据库source,目标端建立数据库target在源端和目标端SQLServer中执行对应的语句创建测试表为源端和目标端创建用户,并授权源端:并授权用户名和密码在源端source库启用cdc在源端和目标端分别创建ODBC数据源ogg配置,源端和目标端的ogg安装目录中执行ggsci。配置完成,测试迁移是否正常使用3、Oracle利用华为云云数据库RDS和分布式数据库中间件DDM完成Oracle应用迁移上云,提高访问效率,轻松应对高并发的实时交易场景一、工具1.若采用工具流至云下或云上自建oracle:Oracle Golden Gate/Data guard/Always On/数据库自带迁移工具等2.若采用公有云服务至云数据库postgre:UGO+DRS二、Oracle数据库迁移上云的流程迁移上云流程(以GoldenGate为例)Oracle GoldenGate 数据复制过程如下:利用抽取进程(Extract Process)在源端数据库中读取Online Redo Log或者Archive Log,然后进行解析,只提取其中数据的变化信息,比如DML操作——增、删、改操作将抽取的信息转换为GoldenGate自定义的中间格式存放在队列文件(trail file)中再利用传输进程将队列文件(trail file)通过TCP/IP传送到目标系统。目标端有一个进程叫Server Collector,这个进程接受了从源端传输过来的数据变化信息把信息缓存到GoldenGate 队列文件(trail file)当中,等待目标端的复制进程读取数据。• GoldenGate 复制进程(replicat process)从队列文件(trail file)中读取数据变化信息,并创建对应的SQL语句,通过数据库的本地接口执行,提交到目标端数据库,提交成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成2、Oracle迁移至数据仓库(GaussDB)的工具和流程使用DRS的实时同步功能将本地Oracle数据库实时迁移至华为云GaussDB(for openGauss)。通过全量+增量同步,实现源数据库Oracle和目标数据库GaussDB(for openGauss)的数据长期同步。(1)迁移至数据仓库的工具:DRS(2)迁移至数据仓库的流程:创建VPC和安全组创建GaussDB(for openGauss)实例迁移前构造数据迁移数据库(创建DRS实例,将本地Oracle上的test_info数据库迁移到GaussDB(for openGauss)实例中test_database_info数据库中)迁移后进行数据校验PS:补充业务架构和迁移原理(防止考到)1、业务架构图2、迁移原理次实践使用全量+增量同步功能,原理如下:全量同步阶段,先进行结构迁移,例如表、主键、唯一键的迁移。结构迁移完成后,启动增量数据抽取,以确保全量数据同步期间的增量数据完整的抽取到DRS实例。启动全量迁移任务。全量迁移完成后自动进入增量同步,从全量迁移开始抽取的位点开始回放。当增量回放全部完成后,启动比对任务进行一致性检查,支持实时比对。实时比对数据一致时,可以启动业务割接若需要将Oracle数据进一步挖掘和分析,需要将数据导入到数仓中,在华为云上应该怎么完成数据导入,并说明下主要步骤? Oracle迁移至数据仓库(GaussDB)的工具和流程 (CDM/DRS/备份迁移:数据库上传OBS,恢复) 1.CDM (1)准备数据(2)创建CDM集群(3)CDM集群绑定EIP (4)创建Oracle连接和DWS连接 (5)创建数据迁移作业(6)查看迁移的数据统计 2.使用DRS的实时同步功能将本地Oracle数据库实时同步至华为云GaussDB(for openGauss)。通过全量+增量同步,实现源数据库Oracle和目标数据库GaussDB(for openGauss)的数据长期同步。 (1)迁移至数据仓库的工具:DRS (2)迁移至数据仓库的流程: a) 创建VPC和安全组 b) 创建GaussDB(for openGauss)实例 c) 迁移前构造数据 d) 迁移数据库(创建DRS实例,将本地Oracle上的test_info数据库迁移到GaussDB(for openGauss)实例中test_database_info数据库中) e) 迁移后进行数据校验 3.备份迁移 存入OBS再转储至DWS步骤:(1)开始(2)上传数据至OBS(3)创建OBS外表(4)执行导入数据(5)处理错误表(6)优化查询效率(7)结束 OBS导入导出数据时,暂不支持跨Region进行OBS数据导入导出,必须确保OBS和DWS集群在同一个Region中目标数据库应该选择什么类型和部署方式? 华为云服务的哪些特性可以同时既满足高性能,又能满足高可靠性的需求? (多实例+DDM+缓存数据库+一主一备5只读(集群部署)) 一、数据库本身特性 服务高可用:可用区内部主备、跨可用区主备 数据高可靠:在线存储数据可靠性9个9、备份存储数据可靠性11个9 数据高安全:(1)连接安全:VPC、子网、安全组、VPN、SSL(2)安全管理:管控平台严格做到不碰用户业务数据(3)数据加密:储存数据加密,秘钥严格管理 二、用分布式数据库中间件DDM 1、分布式数据库中间件(DDM):分布式关系型数据库,兼容Mysql协议,采用存储计算分离架构的模式,使得存储、计算层可以无限扩展,从而拥有海量数据高并发访问能力。 三、采用缓存数据库 采用分布式缓存服务Redis、Memcached对象缓存服务等产品,基于双机热备的高可用架构,基于主备、读写分离、集群等丰富类型的缓存类型,满足用户高并发及数据快速访问的业务需求。
  • [技术干货] LAMP+LNMP
    LAMP:Linux + Apache + MySQL+php的组合方式LNMP:Linux + Nginx + MySQL+php的组合方式LAMP和LNMP最主要的区别在于:一个使用的是Apache,一个使用的是Nginx。Linux 开源免费软件,作为网站的操作系统 Apache/Nginx Web服务器软件 MySQL 多线程多用户的数据库管理系统,用来存放数据 PHP 服务器端的应用程序软件,快速执行动态网页LAMP:apache适用性很强,几乎可以运行在所有的计算机平台,功能模块很多。有强大的rewrite功能,与PHP共同使用时比较简单,不需要其他服务配合使用。但是Apache处理请求时是同步、阻塞型的,一个连接对应一个进程,所以CPU、内存消耗大,并发性能较差。使用的是Apache,Apache是世界是用排名第一的Web服务器软件,其几乎可以在所有广泛使用的计算机平台上运营,由于其跨平台和安全性被广泛使用,是最流行的Web服务端软件之一。相比于nginx,apache有些臃肿,内存和CPU开销较大,性能上有损耗,nginx对于静态文件的响应能力远高apache。 Apache是负载PHP的最佳选择,如果流量很大的话,可以使用nginx来负载非PHP的Web请求。LNMP:Nginx则是轻量级、异步、非阻塞型的web服务,多连接可以对应一个进程,因此CPU、内存消耗小,并发性能高,处理静态请求能力很强。Nginx的配置也很简单,但rewrite功能不敌apache,在稳定性、安全性方面也有所欠缺使用的是Nginx,Nginx是一款高性能额Http和反向代理服务器,也是一个AMAP/POP3/SMTP服务器。nginx使用资源更少,支持更多并发连接,效率更高,作为负载均衡服务器。nginx即可对内进行支持,也可对外进行服务,安装简单,配置简单。总之:1、LNMP方式的优点:占用VPS资源较少,Nginx配置起来也比较简单,利用fast-cgi的方式动态解析PHP脚本。缺点:php-fpm组件的负载能力有限,在访问量巨大的时候,php-fpm进程容易僵死,容易发生502 bad gateway错误。2、基于 LAMP 架构设计具有成本低廉、部署灵活、快速开发、安全稳定等特点,是 Web 网络应用和环境的优秀组合。若是服务器配置比较低的个人网站,当然首选 LNMP 架构。由于Apache本身处理PHP的能力比起php-fpm要强,所以不容易出现类似502 bad gateway的错误。适合访问量较大的站点使用。当然,在大流量的时候。把Apache和Nginx结合起来使用,也不失为一个不错选择。
  • [产品介绍] 【云图说】第270期 云数据库GaussDB(for MySQL)事务拆分大揭秘
    云数据库GaussDB(for MySQL) 介绍页入口:cid:link_1云数据库GaussDB(for MySQL)事务拆分帮助文档入口:cid:link_0
  • [技术干货] 【云图说】第270期 云数据库GaussDB(for MySQL)事务拆分大揭秘
    云数据库GaussDB(for MySQL) 介绍页入口:cid:link_1云数据库GaussDB(for MySQL)事务拆分帮助文档入口:cid:link_0
总条数:163 到第
上滑加载中