【Oracle篇】基于OGG 21c全程图形化实现9TB数据从Oracle 11g到19c的不停机迁移(上):微服务架构详解与微服务部署,及同步问题总览(第一篇,总共三篇)
《博主主页》CSDN主页奈斯DBIF Club社区主页奈斯、微信公众号奈斯DB《擅长领域》️数据库阿里云AnalyticDB (云原生分布式数据仓库)、Oracle、MySQL、SQLserver、NoSQL(Redis)️运维平台与工具Prometheus监控、DataX离线异构同步工具如果觉得文章对你有所帮助欢迎点赞收藏加关注针对Oracle数据库的迁移无论是将9TB的低版本数据库升级到高版本还是将特定用户迁移至同版本的其他实例主流方案无非下面这6种而这次的需求很具体9TB数据从Oracle 11g到19c停机时间——零。换句话说业务不能停用户无感知DBA最好连咖啡都不用放下☕那我们用排除法逐个看看这6个迁移方案谁能扛住这个需求首先是rmanRMAN 的备份集具有严格的版本兼容性规则不能直接将低版本数据库的备份恢复到高版本数据库。RMAN表示“我没这个能力” → ❌然后是DataGuardData Guard也有严格的版本兼容性规则与RMAN类似但更严格主备库版本必须相同在补丁集级别可以有细微差异与主库必须是相同的主要版本。11g和19c之间DataGuard无能为力 → ❌接着表空间传输表空间传输同样受到版本兼容性的限制源数据库和目标数据库的字节序Endianness 必须相同。字节序Endianness不一致就直接劝退 → ❌来到dbuadbua是专门用来对数据库软件进行升级的因此可以将Oracle 11g升级到19c但是有个问题升级期间数据库不可用需要较长的时间停机。停机时间够喝完一整壶手冲 → ❌一轮筛选下来就只剩下数据泵和GoldenGate了解数据泵的小伙伴都清楚Data Pump支持从低版本导出向高版本导入并且Oracle明确支持11g的expdp导出文件可以被19c的impdp直接导入。再看GoldenGateGoldenGate是一种基于日志的结构化数据复制软件天生为“不停机”和“异构环境”而生跨版本小意思。那么9TB数据、跨版本、不停机这三条同时满足的方案就很清晰了使用数据泵做全量 GoldenGate做增量来实现。由于微服务架构与OGG 11经典架构差异显著因此迁移前博主先根据官方文档梳理OGG 21c微服务架构并完成部署以及整理一下迁移过程中遇到的所有问题。然后再配置源端与目标端的OGG环境完成数据泵全量与OGG增量的同步设置最后通过微服务图形化界面实时校验数据同步情况 ✅内容总计4.5万字。为避免阅读疲劳本系列将分为上、中、下三篇展开第一篇基于OGG 21c全程图形化实现9TB数据从Oracle 11g到19c的不停机迁移(上)微服务架构详解与微服务部署及同步问题总览当前篇第二篇基于OGG 21c全程图形化实现9TB数据从Oracle 11g到19c的不停机迁移(中)源端与目标端配置及全量和增量同步配置详解第三篇基于OGG 21c全程图形化实现9TB数据从Oracle 11g到19c的不停机迁移(下)图形化界面效验数据同步概述特别说明本篇文章部分理论性知识点均来源于版权归 Oracle 所有的官方公开文档手册并结合了我个人的解读和部署演示。若需要调整请联系会尽快处理官方文档对Oracle GoldenGate 21.3版本的介绍Oracle GoldenGate Microservices Architecture目录一、微服务架构和经典架构在进程以及架构上的差别1.1 简介1.2 在经典架构中主要通过几个核心进程协同工作来完成数据同步1.3 微服务架构中进程模型发生了显著变化这与经典架构有很大不同1.4 经典架构和微服务架构的部署要求二、ogg21c微服务抽取Oracle 11g复制到Oracle 19c发生的OGG问题总汇三、ogg微服务部署采用中心枢纽(Hub)部署3.1 下载OGG 21c for Oracle3.2 ogg组件安装3.3 MAMicroservices Architecture微服务使用和登录网页OGG 21c for Oracle微服务版安装和Oracle到Oracle之间的数据实时同步实现数据库版本ogg微服务版本IP地址主机名SIDOS源生产库DB 11g无110.120.100.17oracle11gliudbywcLinux7.6ogg库DB 19c无110.120.100.25oracle19cliudbywcLinux7.6ogg微服务服务器无OGG 21c110.120.100.20ogg21cogg21cLinux7.6一、微服务架构和经典架构在进程以及架构上的差别1.1 简介OGG的微服务架构采用了一系列服务来管理数据复制并提供了基于Web的用户界面进行操作这大大简化了管理和监控工作。支持Oracle GoldenGateOGG微服务架构Microservices ArchitectureMA的首个具体版本是12.3版本该版本所属的12.3系列中还有12.3.0.1.4等更新版本。如下图在软件交付云Go to the Software Delivery Cloud中可以看到支持Oracle GoldenGateOGG微服务架构Microservices ArchitectureMA的首个具体版本是12.3版本该版本同时保留了传统的经典架构。后续的多个版本也持续支持并增强和优化了微服务架构比如18.1.0.0.0、19.1.0.0.4、21.3.0.0.0等版本这些版本为微服务架构配备了现代化新界面等优化特性。微服务架构以及组件Oracle GoldenGate 微服务架构MA支持通过 RESTful 服务在同构或异构数据库环境中配置和管理数据复制。这些微服务可通过多种接口进行访问包括网页界面、命令行界面、REST API 或其他任何支持基于 REST 微服务访问的服务。下图展示了在安全HTTPS或非安全HTTP环境中的复制流程周期。Oracle GoldenGate 微服务支持通过多种客户端或服务接口进行访问。您可以通过这些服务接口连接或登录微服务并执行以下操作配置数据复制任务、利用统计数据管理与监控进程、优化性能、设置安全选项及其他相关任务。Oracle GoldenGate 微服务架构内置以下服务接口管理客户端Admin Client通过命令行访问微服务。管理客户端是一款命令行工具类似经典GGSCI工具可通过其执行全系列配置、控制与监控Oracle GoldenGate的命令该客户端可替代MA网页界面进行进程的创建、修改与删除。管理客户端程序位于$OGG_HOME/bin目录$OGG_HOME为Oracle GoldenGate主目录。基于浏览器的图形化用户界面微服务架构包含基于HTML5的Web界面用于部署环境的管理、监控与安全防护。可以通过各微服务及服务管理器的专属URL访问此Web界面。该界面包含服务管理器、管理服务、分发服务、接收服务及性能监控服务。通过这些Web界面访问点可以创建并运行所有抽取Extract、复制Replicat及分发路径Distribution path进程。此外还能配置数据库凭证、为定义角色后的用户添加部署访问权限并监控进程运行性能。REST API 服务端点Oracle GoldenGate的REST API提供标准化服务端点支持直接通过接口执行各类数据复制任务。这是除Web界面和命令行之外配置数据复制流程的替代方案。REST API内容详情参考官方文档https://docs.oracle.com/en/middleware/goldengate/core/21.3/oggra/下图展示了用于访问和管理部署、微服务及所有其他Oracle GoldenGate进程的多种客户端包括Oracle产品、命令行界面、浏览器及编程式REST API接口。Oracle Goldengate MA微服务架构的组成部分有五个主要组成部分服务管理器(Service Manager)SM充当用于MicroServices架构的其他服务的看门狗。服务管理器允许您在本地主机上管理一个或多个Oracle Goldengate部署。服务管理器可选可以作为系统服务运行并维护有关部署的库存和配置信息并允许您维护多个本地部署。使用Service Manager您可以启动和停止实例和查询部署和其他服务。管理服务器(Administration Service)AS在Oracle Goldengate部署中监督管理管理和监视进程。管理服务器作为中央控制实体运行用于管理Oracle Goldengate部署中的复制组件。您可以使用它来创建和管理本地提取和投递过程而无需访问安装Oracle Goldengate的服务器。管理服务器的关键特征是可以从任何HTTP或HTTPS客户端访问的REST API服务接口此外AdminClient可用于使REST API调用与管理服务器直接通信。同时管理服务器负责协调和协调提取投递和trail以支持更大的自动化和操作管理。管理服务内置网页应用程序无需安装客户端即可通过浏览器直接访问。通过管理服务可创建和管理抽取与复制进程增删改、注册注销、启停操作查看进程信息、统计报告、状态含延迟与检查点获取报告文件与废弃文件配置参数文件检查点、跟踪表及心跳表过程复制、模式与表的补充日志自定义与标准任务如自动重启、清理轨迹文件凭证存储加密密钥(MASTERKEY)用户添加与角色分配接收器服务器(Receiver Service)RS是处理所有传入跟踪文件的中央控制服务。它与分发服务器互操作并提供与远程经典部署的经典架构pump的兼容性。分发服务器(Distribution Service)DS是一种用作网络数据分发代理以支持分布式部署中的传送和处理数据和命令的服务。它是一种高性能应用程序能够同时处理来自多个源TRAIL文件的多个命令和数据流。性能指标服务器(Performance Metrics Service)PMS使用指标服务来收集和存储实例部署性能结果。可以使用其他嵌入式Web应用程序监视性能指标并使用数据调整的部署以进行最大性能。通过性能监控服务查询各类指标并获取JSON格式或经典XML格式响应集成第三方指标工具查看错误日志查看活动进程状态监控系统资源利用率OGG的微服务架构包含上述5个组件此外还有一个Admin Client。Admin Client类似于ggsci的命令行使用程序。可以用它来发出配置控制和监视Oracle Goldengate的完整命令范围。比如可以用于创建修改和删除进程等等。1.2 在经典架构中主要通过几个核心进程协同工作来完成数据同步以OGG 11.2版本经典架构为例进程名称运行位置核心功能Managermgr源端 目标端GoldenGate的总控进程负责启动、监控、重启其他GoldenGate进程管理端口和报告事件。Extract源端数据捕获从源端数据库表或事务日志中捕获数据变化并写入本地Trail文件。Pump源端数据投递将本地的Trail文件通过网络发送到目标端。这是Extract进程的一种特殊形式。Replicat目标端数据应用读取目标端的Trail文件将其解析为SQL语句并应用到目标数据库。Collector目标端数据接收运行在目标端自动接收并组装来自源端Extract或Pump进程的数据生成目标端的Trail文件。此进程通常无需手动配置。在配置和管理OGG 11.2进程时需要注意以下几点·Manager进程是前提在启动Extract或Replicat进程前必须先启动Manager进程。·Pump进程非必需但推荐虽然不配置Pump进程Extract也可以直接发送数据到目标端但强烈建议配置Pump进程。这样可以在网络或目标端故障时将数据暂存在本地Trail文件避免Extract进程因内存耗尽而异常终止提高可靠性。·理解Trail文件Trail文件是OGG专用的二进制格式文件用于持久化存储捕获的数据变更。它采用检查点Checkpoint机制记录进程的读写位置确保故障恢复后能从断点继续保障数据完整性。·Collector进程自动管理Collector进程在目标端自动运行通常无需手动配置。1.3 微服务架构中进程模型发生了显著变化这与经典架构有很大不同以OGG 11.2版本 经典架构和OGG 21.3版本微服务架构为例类别OGG 11.2(经典架构)OGG 21.3(微服务架构)控制/管理Manager进程Service Manager核心数据同步Extract, Pump, ReplicatExtract, Replicat (功能保留配置方式变)网络传输Collector进程Receiver Server, Distribution Server配置与监控GGSCI命令行Administration Server, Performance Metrics Server, AdminClient在21.3的微服务架构中传统的进程被服务代替并通过Web界面进行管理·Service Manager这是整个OGG微服务架构的守护进程和总管家。它负责管理、监控和启动/停止其他所有服务提供了一个统一的服务总览页面。·Administration Server这个服务取代了经典架构中通过GGSCI命令行进行的绝大部分配置和管理工作。通过它的Web界面你可以配置数据库连接凭证、管理跟踪数据、添加检查点表以及创建和监控Extract和Replicat进程。·Distribution Server Receiver Server这两个服务共同承担了经典架构中Pump进程和Collector进程的网络传输职责。1.Distribution Server负责将源端的Trail文件数据投递到目标端。2.Receiver Server负责在目标端接收来自源端的数据。·Performance Metrics Server这是一个强大的实时监控平台。它通过丰富的图表和仪表盘让你能够深入查看各个进程和服务的性能指标例如吞吐量、延迟和资源使用情况。·AdminClient这是一个命令行工具作为GGSCI的替代品用于在无法使用Web界面时执行管理操作。它通过REST API与微服务组件交互。在OGG 21.3微服务架构中可以不显式配置经典的Pump进程因为其功能已被Distribution Service替代1.4 经典架构和微服务架构的部署要求以OGG 11.2经典架构和OGG 21.3微服务架构为例OGG 11.2经典架构通常需要在源端和目标端都部署完整的OGG环境。OGG 21.3微服务架构支持传统的两端部署也引入了更灵活的中心枢纽(Hub)部署模式可以将OGG部署在独立于源端和目标端的第三方服务器上。对比维度OGG 11.2(经典架构)OGG 21.3(微服务架构)部署模式两端部署两端部署 中心枢纽(Hub)部署组件安装两端部署源端和目标端均需安装完整OGG两端部署仍可以像11.2版本一样在源端和目标端分别部署OGG微服务组件。中心枢纽(Hub)部署模式这是一个重要的改进可以将OGG微服务部署在独立于源端和目标端数据库的第三方服务器上。进程运行位置两端部署Manager、Extract/Pump在源端Manager、Replicat在目标端两端部署同OGG 11.2 (经典架构)中心枢纽(Hub)部署模式所有核心进程如Extract、Replicat都运行在这个独立于源端和目标端数据库的第三方服务器上。数据库连接两端部署通过本地数据库客户端两端部署同OGG 11.2 (经典架构)中心枢纽(Hub)部署模式OGG 21.3集成了轻量级客户端工具Instant Client支持远程捕获和投递数据无需在与数据库同主机上部署。网络要求两端部署需开通OGG进程间通信端口两端部署同OGG 11.2 (经典架构)中心枢纽(Hub)部署模式通过配置数据库连接串例如在tnsnames.ora文件中OGG可以连接到源端和目标端数据库进行操作。方案定了数据泵全量➕OGG增量9TB从11g到19c不停机看起来一切尽在掌握但俗话说理想很丰满OGG很骨感在正式动手迁移之前博主先把用OGG 21c微服务架构从Oracle 11g抽取复制到Oracle 19c过程中亲自踩过的5个问题整理出来个个都是真实炸过的雷没有一个是编的只希望各位小伙伴操作时不用再重蹈覆辙二、ogg21c微服务抽取Oracle 11g复制到Oracle 19c发生的OGG问题总汇问题一描述启动抽取进程时报错“OGG-12064 | The authorization information for POST /services/v2/extracts/EXT1_LIU is missing, invalid or not properly formed.”解决办法触发了ogg21c版本抽取和复制oracle11g版本数据库的bug需要给源库打上Patch 20448066补丁并且Patch 20448066补丁是有前置条件的需要打上DB 28729262补丁才行不一定是11.2.0.4.190115 (28729262)这个DB补丁其他DB补丁也是可以的参考mos账号的依赖关系。问题二描述启动抽取进程报错“OGG-02912 Patch 17030189 is required on your Oracle mining database for trail format RELEASE 12.2 or later.”解决办法在 MOS 中文档 Doc ID 2304095.1 对这个错误的描述在 OGG 家目录下存在“prvtlmpg.plb”脚本可以在源oracle11g库执行此脚本解决。版本 12.2 或更高版本的 Oracle 挖掘数据库需要补丁17030189。也就是如果是源库是oracle11g不打相关补丁执行prvtlmpg.plb脚本就可以解决问题。[rootogg21c~]# cd /liu_data/ogg21c/ogg213_ma/lib/sql/legacy ###进入到OGG家目录下[rootogg21clegacy]# ll | grep prvtlmpg.plb然后将prvtlmpg.plb脚本拷贝到oracle11g目录下通过执行SQLprvtlmpg.plb###针对ogg用户执行扩展脚本“Enter Integrated Capture mining user”这里输入ogg专用的ogguser用户名问题三描述抽取进程状态正常但进程的Lag at Chkpt延迟时间延迟非常高有可能几小时有可能1天实际上这个进程并没有问题只是源库可能非常大或者其他原因导致ogg获取全量元结构时非常的慢导致进程的Lag at Chkpt延迟时间延迟非常高。解决办法这个问题主要出现源库数据量非常大表非常多的情况表上千上万个测试环境数据量小表少的情况就延迟几分钟。所以只要进程状态没问题延迟的问题等等即可。同理复制进程也可能会有这个问题。需要注意下需要等到Lag at Chkpt延迟时间延迟接近0秒时再进行数据泵全量导出因为抽取数据可能是延迟接近0秒时才开始进行正常的抽取并不是点启动按钮时的那个时间。此问题触发了Bug 21281961这里参考这两篇文章解决https://blog.csdn.net/JiekeXu/article/details/128024030?ops_request_misc%257B%2522request%255Fid%2522%253A%25220d83fef7210c2df9086a04f1f14d92c7%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_id0d83fef7210c2df9086a04f1f14d92c7biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-4-128024030-null-null.nonecaseutm_termoggspm1018.2226.3001.4450和https://cloud.tencent.com/developer/article/2273547问题四描述抽取进程状态正常并且源库也有数据变动但抽取进程中的“统计信息选择抽取进程点击 操作—详细信息—统计信息”却一直为0。解决办法这个是因为源库和ogg微服务上的时间不一致导致的源库服务器为北京时间但部署ogg微服务的服务器比北京时间慢了2小时因此服务器上的时间都需要确保为北京时间。同理ogg库上的时间也需要确保为北京时间。时间都为北京时间后“统计信息”开始显示有增长。问题五描述抽取进程中的“统计信息选择抽取进程点击 操作—详细信息—统计信息”可以看到很多表都有变动记录但如果指定一个明确清楚有变动的表却查询不到任何变动记录。查看抽取进程EXT_ZY3可以看到此抽取进程会抽取zy用户下所有的表尝试对zy用户下存在的LIUDBYWCS1111表插入数据然后通过web界面查看抽取进程的“统计信息”查询到LIUDBYWCS1111无任何变动记录SQLinsertintoZY.LIUDBYWCS1111values(1231221,liudbywcs01);commit;解决办法web图形化界面可能有显示限制所以通过adminclient命令查看[oracleogg21c~]$ adminclient OGG(未连接)1connecthttp://10.2.1.221:8001 deployment deploy_ogg21c user ogguser password 123456OGG(http://10.2.1.221:8001 deploy_ogg21c) 4 STATS EXTRACT EXT_ZY3, TABLE ZY.LIUDBYWCS1111, TOTAL ###通过命令行就可以看到LIUDBYWCS1111表有过插入的操作的记录开始部署安装Action 三、ogg微服务部署采用中心枢纽(Hub)部署中心枢纽(Hub)部署模式这是一个重要的改进可以将OGG微服务部署在独立于源端和目标端数据库的第三方服务器上。3.1 下载OGG 21c for Oracle进入到软件交付云Go to the Software Delivery Cloud搜索需要下载Oracle GoldenGate 21.3.0.0.0选择在linux上部署的微服务的软件包Oracle GoldenGate 21.3.0.0.0 Microservices for Oracle on Linux x86-64运行这个下载器选择的软件包都会在这个下载器中下载3.2 ogg组件安装3.2.1 关闭防火墙数据库都是在内网如果开启防火墙每次连接都要判断[rootogg21c~]# systemctl stop firewalld.service[rootogg21c~]# systemctl disable firewalld.service[rootogg21c~]# systemctl status firewalld.service3.2.2 添加组和用户dba数据库管理员(OSDBA)组 | 真实应用集群管理(OSRACDBA)组rac组oper数据库操作系统(OSOPER)组操作系统级别也可以管理数据库[rootogg21c~]# groupadd -g 50001 oinstall[rootogg21c~]# groupadd -g 50002 dba[rootogg21c~]# groupadd -g 50003 oper[rootogg21c~]# useradd -g oinstall -G dba,oper oracle[rootogg21c~]# id oracle[rootogg21c~]# passwd oracle3.2.3 准备ogg安装目录[rootogg21c~]# mkdir -p /liu_data/ogg21c/ogg213_ma ###ogg213_ma下安装微服务软件[rootogg21c~]# mkdir -p /liu_data/ogg21c/ogg213_sm ###ogg213_sm下存放服务管理器配置[rootogg21c~]# mkdir -p /liu_data/ogg21c/ogg213_deploy ###ogg213_deploy下为部署相关配置和数据目录[rootogg21c~]# mkdir -p /liu_data/ogg21c/oraInventory ###oraInventory路径[rootogg21c~]# chown -R oracle:oinstall /liu_data/ogg21c3.2.4 设置ogg_home变量[rootogg21c~]# su - oracle[oracleogg21c~]# vi .bash_profileexport OGG_HOME/liu_data/ogg21c/ogg213_ma export PATH$OGG_HOME/bin:$PATH[oracleogg21c~]# source .bash_profile3.2.5 图形化安装微服务软件MAMicroservices Architecture[rootogg21c~]# unzip V1011471-01.zip[rootogg21c~]# chown -R oracle:oinstall fbo_ggs_Linux_x64_Oracle_services_shiphome[rootogg21c~]# su - oracle[oracleogg21c~]# cd fbo_ggs_Linux_x64_Oracle_services_shiphome/[oracleogg21cfbo_ggs_Linux_x64_Oracle_services_shiphome]$ ls-l Disk1/[oracleogg21cfbo_ggs_Linux_x64_Oracle_services_shiphome]$ cd Disk1/使用sourceCRT远程操作linux并调出图形化界面首先打开Xmanager-Passive[oracleogg21cDisk1]# export DISPLAYip:0.0 设置display变量设置的为安装Xmanager的客户端ip希望在那台主机上显示图形化然后授权显示图形化环境变量DISPLAY用来设置将图形显示到何处。例[rootlocalhost ]# export DISPLAY192.168.2.1:0.0[oracleogg21cDisk1]# xhost 授权显示图形化界面[oracleogg21cDisk1]# ./runInstaller①指定软件安装目录②指定oraInventory路径③执行orainstRoot.sh脚本完成安装3.2.6 图形化安装服务管理器SMService Manager[oracleogg21cDisk1]# oggca.sh①服务管理器选项这里的服务管理器相当于经典架构中的mgr管理mgr常用的端口为7809指定服务管理器(Service Manager)的目录/liu_data/ogg21c/ogg213_sm选择“register servier manager as a system servier/daemon将服务管理器注册为系统服务程序/守护进程”设置监听端口为7809②部署详情设置指定“deployment name部署名称”deploy_ogg21c③指定部署目录指定“deployment home部署目录”/liu_data/ogg21c/ogg213_deploy④指定环境变量TNS_ADMIN变量设置成了/liu_data/ogg21c/ogg213_ma/srvm/admin正常应该设置成数据库软件的TNS_ADMIN但上面没有部署数据库软件。所以就找了微服务软件下有admin这个目录的充当⑤设置OGG微服务架构的管理账号用户名ogguser密码自定义⑥指定安全选项无需设置SSL安全认证⑦指定微服务架构中其他组件的端口号Oracle Goldengate MA微服务架构的组成部分有五个主要组成部分1.服务管理器(Service Manager)78092.管理服务器(Administration Service)80013.分发服务器(Distribution Service)80024.接收器服务器(Receiver Service)80035.性能指标服务器(Performance Metrics Service)8004—8005⑧指定OGG复制设置Deafult schema指定为OGG微服务架构的管理账号ogguser⑨执行registerServiceManager.sh脚本完成安装3.3 MAMicroservices Architecture微服务使用和登录网页服务启动项中注册了OracleGoldenGate.service服务进程那么后续可以通过systemctl启动和管理微服务[rootogg21c~]# systemctl status OracleGoldenGate.service系统中查看相关进程[rootogg21c~]# netstat -anlp |grep 7809[rootogg21c~]# ps -ef|grep ServiceManager[rootogg21c~]# ps -ef|grep ogg213登录URL页面服务器IP地址:7809通过页面可以选择停止或启动管理服务(Administration Service端口8001)、分发服务(Distribution Service端口8002)、性能度量服务(Performance Metrics Service端口8004—8005)和接收方服务(Receiver Service端口8003)。还可以停止或重启部署服务此处主要是deploy_ogg21c和ServiceManager相当于经典架构中的mgr管理mgr常用的端口为7809呼已经2万字了✍️。关于微服务架构详解、微服务部署以及那些让人头秃的同步问题就先聊到这里下一篇开始使用数据泵对9TB的实例进行导入导出并配置ogg一系列配置。敬请期待下篇见
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2468067.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!