iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >GoldenGate从oracle迁移数据到mysql
  • 735
分享到

GoldenGate从oracle迁移数据到mysql

2024-04-02 19:04:59 735人浏览 独家记忆
摘要

  1       软件简介 安装时应该选择最为稳定的安装版本,现在官方发布的版本主要为: oracle G

 

1       软件简介

安装时应该选择最为稳定的安装版本,现在官方发布的版本主要为:

oracle GoldenGate 11.2.1.0.1

对应不同的数据库和版本,有不同的安装介质。下面是根据现网情况使用的两个安装介质:

ogg112101_fbo_ggs_linux_x64_ora10g_64bit.zip

ggs_Linux_x64_Mysql_64bit.tar

Oracle Golden Gate软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库同步。Oracle Golden Gate可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,从而在可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。同时,Oracle Golden Gate可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构。

 

2       整体架构

 

和传统的逻辑复制一样,Oracle GoldenGate实现原理是通过抽取源端的redo log或者arcHive log,然后通过tcp/IP投递到目标端,最后解析还原应用到目标端,使目标端实现同源端数据同步。以下是OracleGoldenGate的技术架构

 


 

Manager进程

Manager进程是GoldenGate的控制进程,运行在源端和目标端上。它主要作用有以下几个方面:启动、监控、重启Goldengate的其他进程,报告错误及事件,分配数据存储空间,发布阀值报告等。

 

Extract进程

 

Extract运行在数据库源端,负责从源端数据表或者日志中捕获数据。

 

Pump进程

 

pump进程运行在数据库源端。其作用是如果源端使用了本地的trail文件,那么pump进程就会把trail以数据块的形式通过TCP/IP协议发送到目标端,这通常也是推荐的方式。pump进程本质是extract进程的一种特殊形式,如果不使用trails文件,那么就是extract进程在抽取完数据以后,直接投递到目标端。

 

Trail文件

 

       为了更有效、更安全的把数据库事务信息从源端投递到目标端。GoldenGate引进trail文件的概念。前面提到extract抽取完数据以后Goldengate会将抽取的事务信息转化为一种GoldenGate专有格式的文件。然后pump负责把源端的trail文件投递到目标端,所以源、目标两端都会存在这种文件。trail文件存在的目的旨在防止单点故障,将事务信息持久化,并且使用checkpoint机制来记录其读写位置,如果故障发生,则数据可以根据checkpoint记录的位置来重传。

 

Replicat进程

 

       Replicat进程,通常我们也把它叫做应用进程。运行在目标端,是数据传递的最后一站,负责读取目标端trail文件中的内容,并将其解析为DML或DDL语句,然后应用到目标数据库中。

 

GGSCI

 

       GGSCI是GoldenGate Software Command Interface 的缩写,它提供了十分丰富的命令来对Goldengate进行各种操作,如创建、修改、监控GoldenGate进程等等

 

灵活的拓扑结构:

GoldenGate从oracle迁移数据到mysql

 

 

2.1   GoldenGate支持列表

Databases

OS and PlatfORMs

Capture:

windows 2000,2003,xp

Oracle

Linux

DB2 UDB

Sun Slolaris

Microsoft SQL Server

HP NonStop

Sybase ASE

HP Ux

Teradata

HP TRU64

Ingres

IBM AIX

Enscribe

IBM z/OS

sql/MP

 

SQL/MX

 

Delivery:

 

All listed above

 

mysql,hp neoview,Netezza

 

And ODBC compatible databases

 

 

 

3       GoldenGate软件安装

3.1 组和用户创建

源端是oracle生产数据库,已经存在oracle和dba,复用该用户和组。

目标端是mysql,已经存在mysql和dba,复用该用户和组。

3.2 GoldenGate安装目录检查

 

 

安装Oracle GoldenGate软件前,需要事先确认安装目录属主权限正确,且所在文件系统有足够的空间存放Oracle GoldenGate软件并能支撑日常运维使用。对于存放dirdat数据目录,至少需要100GB以上的空间。对于源库是oracle rac模式,必须设置ogghome的目录的存储能让rac两台主机识别,只是mount在一个任务较轻的节点上,若是该节点出现故障,能及时挂载到另外一个节点上,增加高可用性。

 

检查安装目录所在文件系统空间信息,通过下述命令实现:

df -g /home/ogghome

 

确认安装目录属主权限信息,通过下述命令实现:

ls –ld /home/ogghome

 

3.3 解压安装文件

Oracle GoldenGate软件通过解压缩方式实现安装,

解压缩GoldenGate安装文件,通过下述命令实现:

unzip ggs_*.zip

tar -xvf  ggs_*.tar

 

3.4 GoldenGate软件启动测试

Oracle GoldenGate软件通过ggsci命令启动交互界面,当ggsci启动成功则表名安装过程无误。启动ggsci前务必进入Oracle GoldenGate软件的安装目录。

启动Oracle GoldenGate的ggsci,通过下述命令实现:

cd /home/oracle/ggs/goldengate

./ggsci

Oracle数据库的账号必须设置LD_LIBRARY_PATH环境变量,否则会报错,

LD_LIBRARY_PATH=/oracle/product/10.2/db/lib

3.5 、创建GoldenGate软件子目录

进入安装路径,创建相关目录(源端和目标端都执行),源端使用oracle用户,目标端使用mysql用户:

cd /home/ogghome

./ggsci

GGSCI> create subdirs

下面是日志:

Creating subdirectories under current directory /home/ogghome

Parameter files                /home/ogghome/dirprm: already exists

Report files                   /home/ogghome/dirrpt: created

Checkpoint files               /home/ogghome/dirchk: created

Process status files           /home/ogghome/dirpcs: created

SQL script files               /home/ogghome/dirsql: created

Database definitions files     /home/ogghome/dirdef: created

Extract data files             /home/ogghome/dirdat: created

Temporary files                /home/ogghome/dirtmp: created

Stdout files                   /home/ogghome/dirout: created

 

 

4       GoldenGate部署

4.1 初始化源端数据库

4.1.1             开启归档模式

GoldenGate是基于oracle日志变化的捕获,所以为了完整的捕获到oracle数据库的变化,有必要将归档模式开启。

SQL>      alter system set log_archive_dest_1='location=/arch' scope=both;

  SQL>  shutdown immediate

  SQL>  startup mount

  SQL>  alter database archivelog

  SQL>  alter database open

  SQL>  archive log list

注意,由于上面命令涉及停止数据库应用,应结合业务实际情况进行操作。

4.1.2             开启附加日志

在oracle中我们可以通过rowid来定位某条记录,但是目标端的数据库和源端数据库的数据库可能完全不一样,所以无法通过rowid来确定源端数据库的逻辑变化,这时附件日志supplemental log便登上了表演的舞台。数据库在开启附加日志功能后,对于源端的修改操作,oracle会同时追加能够唯一标示记录的列到redo log。这样目标端数据库就可以知道源端发生了哪些具体的变化。

 

   SQL>       alter database add supplemental log data;

   SQL>       alter system switch logfile;

   SQL>       select supplemental_log_data_min from v$database;

4.1.3             开启强制日志模式

SQL>alter database force logging;

 SQL>SELECT FORCE_LOGGING FROM V$DATABASE;

4.1.4             goldengate创建用户并授权

源端oracle数据库创建账号:

create tablespace data_goldengate datafile '+DG_DATA1' size 10240m autoextend on;

create user goldengate identified by passWord default tablespace data_goldengate temporary tablespace temp;

 

赋予goldengate相关权限(想简单的话,可以赋予DBA权限,若是涉及安全问题,dba权限不能随便赋予)

grant CONNECT,RESOURCE to goldengate;

grant CREATE SESSION,ALTER SESSION to goldengate;

grant SELECT ANY DICTIONARY,SELECT ANY TABLE to goldengate;

grant CREATE TABLE,ALTER ANY TABLE to goldengate;

grant unlimited tablespace to goldengate;

 

目标端mysql创建账号,赋予dba权限:

grant ALL PRIVILEGES on *.* to goldengate@'%';

grant ALL PRIVILEGES on *.* to goldengate@'localhost';

 

update mysql.user set password=password('password') where user='goldengate';

4.1.5             对需要同步的表确认是否开启表级附加日志

./ggsci

GGSCI (localhost.localdomain) 1> dblogin userid goldengate password password

Successfully logged into database.

 

GGSCI (localhost.localdomain) 2> info trandata xianyezhao.CALENDAR_DETAIL

Logging of supplemental redo log data is disabled for table XIANYEZHAO.CALENDAR_DETAIL.

 

GGSCI (localhost.localdomain) 3> add trandata xianyezhao.CALENDAR_DETAIL

Logging of supplemental redo data enabled for table XIANYEZHAO.CALENDAR_DETAIL.

 

 

GGSCI (localhost.localdomain) 4> info trandata  XIANYEZHAO.CALENDAR_DETAIL

Logging of supplemental redo log data is enabled for table XIANYEZHAO.CALENDAR_DETAIL.

Columns supplementally logged for table XIANYEZHAO.CALENDAR_DETAIL: SEQNO.

 

4.2 配置ASM访问方式

由于oracle redo 日志文件在ASM存储上,goldengate软件需要访问ASM

配置asm实例的tns连接字符串,由于监听状态是BLOCKED,必须添加(UR=A)才能通过ogg远程登录asm实例。下面是官方详细说明:

ASM instances appear with a blocked status from the 'lsnrctl services'command (see below). To remotely access a 'blocked service' you need toadd (UR=A) to the tns connect string (plus you will need a password filefor the asm instance).

Tnsnames.ora entry:----

下面是监听状态,使用lsnrctl status查看:

Service "+ASM" has 1 instance(s).

  Instance "+ASM2", status BLOCKED, has 1 handler(s) for this service...

下面是具体的tns连接字符串:

ASM = 

 (DESCRIPTION = 

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.219.6)(PORT = 1521)) 

    (CONNECT_DATA = 

      (SERVER = DEDICATED) 

      (SERVICE_NAME = +ASM)

      (INSTANCE_NAME = +ASM2) 

      (UR=A)

    ) 

  )

 

4.3 配置NFS文件系统

由于归档是使用文件系统,需要使用nfs文件模式,把另外一个节点的归档挂载到本地。

a.开启nfs服务:

service nfs start

查看nfs状态:

service nfs status

b.开启nfs权限:

编辑权限列表:

vi /etc/exports

/archivelog1    *(rw)

更新权限:

exportfs –a

c.创建/archivelog1,更改权限为oracle和dba,

chown oracle:dba /archivelog1

使用root用户mount上:

mount 192.168.219.3:/archivelog1 /archivelog1

4.4 在源端和目标端配置MGR

ggsci>     EDIT  PARAMS  MGR

PORT   7809

PURGEOLDEXTRACTS  ./dirdat,USECHECKPOINTS

 

ggsci>     START   MGR

ggsci>    INFO      MGR

4.5 创建Extract: ext_cal

4.5.1             增加extract

add extract ext_cal, tranlog, begin now, THREADS 2

EXTRACT added.

4.5.2             设定exttrail

add exttrail ./dirdat/ca, extract ext_cal, megabytes 100

EXTTRAIL added.

4.5.3             配置extract

下面******替换成密码:

edit params ext_cal

EXTRACT ext_cal                                                          

SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")                                                    

SETENV (ORACLE_SID="g139bak2")                                                 

userid goldengate, password password

TRANLOGOPTIONS ASMUSER sys@asm,ASMPASSWORD ******

EXTTRAIL ./dirdat/ca    

TRANLOGOPTIONS LOGRETENTION DISABLED

TRANLOGOPTIONS BUFSIZE 2048000

tranlogoptions altarchivedlogformat threadid 1 g139bak_%S_%T_%R.log

tranlogoptions altarchivedlogformat threadid 2 g139bak_%S_%T_%R.log

tranlogoptions altarchivelogdest instance g139bak1 /archivelog1/g139bak_archivelog, altarchivelogdest instance g139bak2 /archivelog2/g139bak_archivelog

 

--DDL INCLUDE mapped

--DDLOPTIONS ADDTRANDATA

 

DISCARDFILE ./dirrpt/ext_cal.dsc,APPEND,MEGABYTES 1000

DISCARDROLLOVER AT 6:00

 

REPORTROLLOVER AT 6:00

REPORTCOUNT EVERY 1 HOURS,RATE

 

TRANLOGOPTIONS ALTARCHIVELOGDEST /archivelog2

 

FETCHOPTIONS MISSINGROW ABEND

STATOPTIONS REPORTFETCH

 

WARNLONGTRANS 1H,CHECKINTERVAL 10m

 

DYNAMICRESOLUTION        

TABLE XIANYEZHAO.CALENDAR_DETAIL;

TABLE XIANYEZHAO.CALENDAR_INFO;

 

 

下面是查看内容:

GGSCI (gb139bak02) 5> view report ext_cal

 

 

4.6 创建投送进程: dp_cal

4.6.1             增加extract

add extract dp_cal, exttrailsource ./dirdat/ca

4.6.2             设定extract投递rmttrail

add rmttrail ./dirdat/ca, extract dp_cal

4.6.3             配置extract

edit params dp_cal

 

EXTRACT dp_cal

passthru

DYNAMICRESOLUTION

RMTHOST 192.168.219.35, MGRPORT 7809, COMPRESS

RMTTRAIL ./dirdat/ca

TABLE XIANYEZHAO.CALENDAR_DETAIL;

TABLE XIANYEZHAO.CALENDAR_INFO;

 

由于没有配置目标端的mgr进程,7809没有打开,网络报错,导致进程挂掉。

GGSCI (localhost.localdomain) 48> view report dp_cal

GGSCI (gb139bak02) 65> view report dp_cal

 

 

4.7 创建定义文件

在源端编辑defgen文件

su - oracle

cd ./dirprm

$ vi cal.prm

DEFSFILE /home/ogghome/dirdef/cal.def

USERID goldengate PASSWORD password

TABLE XIANYEZHAO.CALENDAR_DETAIL;

TABLE XIANYEZHAO.CALENDAR_INFO;

 

 

 

通过执行defgen命令生成定义文件

/home/ogghome/defgen PARAMFILE /home/ogghome/dirprm/cal.prm

 

***********************************************************************

        Oracle GoldenGate Table Definition Generator for Oracle

      Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230

   Linux, x64, 64bit (optimized), Oracle 10g on Apr 23 2012 05:09:39

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.

                    Starting at 2014-06-09 15:24:08

***********************************************************************

Operating System Version:

Linux

Version #1 SMP Thu Sep 5 21:21:44 EDT 2013, Release 2.6.18-371.el5

node: gb139bak02

Machine: x86_64

                         soft limit   hard limit

Address Space Size   :    unlimited    unlimited

Heap Size            :    unlimited    unlimited

File Size            :    unlimited    unlimited

CPU Time             :    unlimited    unlimited

Process id: 2014

***********************************************************************

**            Running with the following parameters                  **

***********************************************************************

DEFSFILE /home/ogghome/dirdef/cal.def

USERID goldengate PASSWORD ********

TABLE XIANYEZHAO.CALENDAR_DETAIL;

Retrieving definition for XIANYEZHAO.CALENDAR_DETAIL

TABLE XIANYEZHAO.CALENDAR_INFO;

Retrieving definition for XIANYEZHAO.CALENDAR_INFO

Definitions generated for 2 tables in /home/ogghome/dirdef/cal.def

 

 

把生成的def文件传输到mysql端

[oracle@localhost dirdef]$ sftp mysql@192.168.61.131

Connecting to 192.168.61.131...

mysql@192.168.61.131's password:

sftp> cd /home/ogghome/dirdef

sftp> !ls

sftp> put cal.def

Uploading cal.def to /home/ogghome/dirdef/cal.def

cal.def                                                                                         100% 1001     1.0KB/s   00:00

修改mysql端定义文件的权限

chown mysql:dba /home/ogghome/dirdef/cal.def

chmod 755 /home/ogghome/dirdef/cal.def

4.8 初始化数据

 

4.8.1             Oracle到oracle导出方式

1、查看系统改变号:

col current_scn for 999999999999999999999999999999

select current_scn from v$database;

--1138506

 

2、导出导入数据:

set linesize 133

col directory_path format a50

select * from dba_directories;

SYS                            DATA_PUMP_DIR                  /opt/oracle/app/admin/test/dpdump/

 

expdp \'/ as sysdba \' DIRECTORY=DATA_PUMP_DIR DUMPFILE=t3.dmp LOGFILE=t3.log TABLES=test.t3 FLASHBACK_SCN=1138506

 

impdp \'/ as sysdba \' DIRECTORY=DATA_PUMP_DIR DUMPFILE=t3.dmp LOGFILE=t3_imp.log TABLES=test.t3 REMAP_TABLESPACE=DATA_TEST:DATA_TEST

--REMAP_SCHEMA=TEST:TEST

 

您可能感兴趣的文档:

--结束END--

本文标题: GoldenGate从oracle迁移数据到mysql

本文链接: https://www.lsjlt.com/news/47940.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • GoldenGate从oracle迁移数据到mysql
      1       软件简介 安装时应该选择最为稳定的安装版本,现在官方发布的版本主要为: Oracle G...
    99+
    2022-10-18
  • 从oracle数据库迁移到mysql数据库
    如果使用应用容器注意mysql.jar包版本冲突。(例如weblogic容器自带mysql,但是版本比较低,建议使用自己应用下的mysql.jar包)to_date ---->> date_fo...
    99+
    2022-10-18
  • 使用ogg(goldengate)方案将Oracle迁移到MySQL
    下面讲讲关于使用ogg(goldengate)方案将Oracle迁移到MySQL,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完使用ogg(goldengate)方案将Oracl...
    99+
    2022-10-18
  • 怎么从MySQL迁移到Oracle
    这篇文章主要讲解了“怎么从MySQL迁移到Oracle”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么从MySQL迁移到Oracle”吧! 1. 自动增...
    99+
    2022-10-19
  • GoldenGate架构下oracle与oracle数据迁移
    GoldenGate架构下的oracle与oracle数据迁移1:确定数据库版本下载相应的GG软件、开启归档模式、修改归档文件格式、添加附加日志、创建安装目    录、解压软件、设置变量...
    99+
    2022-10-18
  • oracle迁移到mysql分库分表方案之——ogg(goldengate)
    之前文章主要介绍了oracle 迁移到mysql,主要是原表原结构迁移,但是实际运维中会发现,到mysql以后需要分库和分表的拆分操作,这个时候,用ogg来做,也是很强大好用的。主要结合ogg的2个参数 参...
    99+
    2022-10-18
  • 怎样从Oracle到GaussDB的数据迁移
    今天就跟大家聊聊有关怎样从Oracle到GaussDB的数据迁移,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 一、背景最近某省运营商O域...
    99+
    2022-10-19
  • 数据库迁移系列之--Oracle迁移到Mysql
    敬请期待......
    99+
    2017-12-07
    数据库迁移系列之--Oracle迁移到Mysql
  • 从Oracle用goldengate抽取数据到kafka
    Goldengate到kafka配置详解 环境介绍: 源端数据库版本 源端OGG版本 ...
    99+
    2022-10-18
  • 如何将数据从 Oracle 迁移到 MySQL:分步指南
    数据迁移在各种业务场景中发挥着至关重要的作用。当您的公司将其服务从本地迁移到云端时,数据迁移就会介入,将数据从旧位置传输到新位置。另一种常见的做法可能是更换或升级服务器或存储设备。在这种情况下,数据迁移可确保数据的顺利高效传输,最大限度地减...
    99+
    2023-08-31
    oracle mysql 数据库
  • Django数据怎么从sqlite迁移数据到MySQL
    Django数据怎么从sqlite迁移数据到MySQL,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。昨天快速搭建了一套自己的知识库。感觉一下子有了很多的事情要做...
    99+
    2023-06-04
  • Oracle XTTS跨平台数据库迁移(从Unix迁移数据库到Linux)_Oracle数据库迁移项
     Oracle数据库迁移教程04 Oracle XTTS跨平台数据库迁移实战(真正超越OCP/OCM的项目实战系列教程)本套风哥Oracle教程学习内容1.Oracle XTTS技术基础知识2.Oracle...
    99+
    2022-10-18
  • oracle上的数据怎么迁移到到mysql
    这篇文章主要介绍“oracle上的数据怎么迁移到到mysql”,在日常操作中,相信很多人在oracle上的数据怎么迁移到到mysql问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-18
  • 从MySQL迁移到Oracle数据库的详细步骤和方法
    系列文章目录 文章目录 系列文章目录前言一、备份MySQL数据库二、安装Oracle数据库三、数据转换四、导出MySQL数据五、导入数据到Oracle六、重新创建索引和约束七、测试和验证八、...
    99+
    2023-09-24
    数据库 mysql oracle
  • Oracle数据迁移MySQL
    前言: 现今,Oracle数据迁移MySQL的需求已经越来越普遍,主要的迁移场景大致可以分为三类,第一类是涉及小表以及少量表的一次性迁移,无需进行增量同步,第二类是涉及大表以及多表的一次性迁移,第三类是涉及增量实时同步,而对于数据的迁移方法...
    99+
    2023-09-26
    oracle mysql 数据库 运维 dba
  • 【数据库迁移系列】从MySQL到openGauss的数据库对象迁移实践
    在之前这一篇中我们分享过使用chameleon工具完成MySQL到openGauss的全量数据复制、实时在线复制。9.30新发布的openGauss 3.1.0版本 ,工具的全量迁移和增量迁移的性能不但有了全面提升,而且支持数据库对象视图、...
    99+
    2023-08-17
    数据库 mysql bash 云原生
  • 怎么从AIX将数据库迁移到Linux Oracle中
    本篇内容主要讲解“怎么从AIX将数据库迁移到Linux Oracle中”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么从AIX将数据库迁移到Linux Ora...
    99+
    2022-10-19
  • 从MySQL到Redis的简单数据库迁移方法
    从mysql搬一个大表到redis中,你会发现在提取、转换或是载入一行数据时,速度慢的让你难以忍受。这里我就要告诉一个让你解脱的小技巧。使用“管道输出”的方式把mysql命令行产生的内容直接传递给redi...
    99+
    2022-06-04
    简单 数据库 方法
  • 将数据从MySQL迁到Oracle需要注意什么
    这篇文章主要介绍“将数据从MySQL迁到Oracle需要注意什么”,在日常操作中,相信很多人在将数据从MySQL迁到Oracle需要注意什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2022-10-18
  • 记一次从oracle到hive的历史数据迁移(一)
    介绍一下具体场景    需要从现有在用的oracle中将历史数据迁移出来并导入到hive中,存在几个问题:1、现有oracle数据库在使用无法整个库导出,数据库服务器...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作