美文网首页Oracle ...框架建设收集
在Windows中 基于Oracle GoldenGate (O

在Windows中 基于Oracle GoldenGate (O

作者: fordZrx | 来源:发表于2019-02-02 16:04 被阅读31次
    Oracle GoldenGate Windows平台MySQL->MySQL单向数据同步,试验环境:
    试验环境 源端软件版本 目标端软件版本
    操作系统 Windows 10 64位 Windows 10 64位
    IP地址 172.16.94.15 172.16.94.37
    数据库 mysql-8.0.14 mysql-8.0.13
    数据库账号 project projectTarget
    数据库表 project project_target
    GoldenGate Oracle GoldenGate 12.3.0.1.2 for MySQL on Windows (64bit) (72 MB) Oracle GoldenGate 12.3.0.1.2 for MySQL on Windows (64bit) (72 MB)
    dirdat目录 E:\OGG\oggmsql\dirdat\et D:\OGG\oggmsql\dirdat\et

    一、MySQL环境安装

    参考: https://jingyan.baidu.com/article/642c9d343557e9644b46f743.html

    (1)、开启MySQL二进制日志(源端目标端都要修改):
    • mysql 配置文件 my.ini 中找到 [mysqld] 添加以下内容:

    server-id=1
    log-bin = F:/mysqlbin/binlog.log # 自定义目录,日志保存路径
    log-bin-index = F:/mysqlbin/binlog.index # 自定义目录,日志保存路径

    my.ini文件位置(Windows):https://jingyan.baidu.com/article/7e4409531f75292fc0e2efe7.html

    • 重启mysql服务
    cmd> net stop mysql #停止服务
    cmd> net start mysql #启动服务
    

    参考:https://www.cnblogs.com/jpfss/p/8016283.html

    • 查看数据库当前日志模式
    mysql> show variables like "log_%";
    +----------------------------------------+----------------------------------------+
    | Variable_name                          | Value                                  |
    +----------------------------------------+----------------------------------------+
    | log_bin                                | ON                                     |
    | log_bin_basename                       | F:\mysqlbin\binlog                     |
    | log_bin_index                          | F:\mysqlbin\binlog.index               |
    | log_bin_trust_function_creators        | OFF                                    |
    | log_bin_use_v1_row_events              | OFF                                    |
    | log_error                              | .\SC-201708231409.err                  |
    | log_error_services                     | log_filter_internal; log_sink_internal |
    | log_error_suppression_list             |                                        |
    | log_error_verbosity                    | 2                                      |
    | log_output                             | FILE                                   |
    | log_queries_not_using_indexes          | OFF                                    |
    | log_slave_updates                      | ON                                     |
    | log_slow_admin_statements              | OFF                                    |
    | log_slow_extra                         | OFF                                    |
    | log_slow_slave_statements              | OFF                                    |
    | log_statements_unsafe_for_binlog       | ON                                     |
    | log_throttle_queries_not_using_indexes | 0                                      |
    | log_timestamps                         | UTC                                    |
    +----------------------------------------+----------------------------------------+
    18 rows in set, 1 warning (0.00 sec)
    
    查看二进制日志状态.png
    (2)、创建goldengate管理用户和测试表
    • 源端目标端创建测试表
    # 源端
    SQL> create database project;
    # 测试端
    SQL> create database project_target;
    
    #创建project账号: CREATE USER '用户名'@'host' IDENTIFIED BY '密码';
    mysql> CREATE USER 'project'@'%' IDENTIFIED BY 'project';
    Query OK, 0 rows affected (0.12 sec)
    #给project账号授权: GRANT ALL ON 数据库名.表名 TO '授权的用户'@'host';
    mysql> GRANT ALL ON project.* TO 'project'@'%';
    Query OK, 0 rows affected (0.14 sec)
    
    • 目标端创建projectTarget用户
    #创建projectTarget账号: CREATE USER '用户名'@'host' IDENTIFIED BY '密码';
    mysql> CREATE USER 'projectTarget'@'%' IDENTIFIED BY 'projectTarget';
    Query OK, 0 rows affected (0.12 sec)
    #给projectTarget账号授权: GRANT ALL ON 数据库名.表名 TO '授权的用户'@'host';
    mysql> GRANT ALL ON project_target.* TO 'projectTarget'@'%';
    Query OK, 0 rows affected (0.14 sec)
    

    二、Oracle GoldenGate介绍

    参考: https://www.cnblogs.com/qiumingcheng/p/5435907.html

    三、Oracle GoldenGate安装(源端和目标端)

    安装条件:
    1、以administrator身份登录系统进行安装,只要安装者属于系统的administrator组就行。
    2、安装Microsoft Visual C ++ 2005 SP1 Redistributable Package,这个是必须的。

    安装方法很简单,只需要把压缩包解压后,把文件放到指定文件夹即可,如c:/gg目录。

    (1)、点击下载 Oracle GoldenGate
    ogg下载目录.png
    (2)、解压123012_ggs_Windows_x64_MySQL_64bit

    此版本为绿色版,直接解压到任意目录开始使用

    ogg解压目录.png

    注意:源端与目标端都需要进行安装Oracle GoldenGate

    四、Oracle GoldenGate配置

    ====== 以下为Source(同步的数据源)Oracle GoldenGate配置 ======

    1、Oracle GoldenGate(源端)

    (1)、在源端服务器安装的OGG根目录按住SHift+右键cmd进入OGG根目录的命令面板
    (2)、运行ogg:执行ggsci.exe

    # 运行ogg
    E:\OGG\oggmsql>ggsci.exe
    Oracle GoldenGate Command Interpreter for MySQL
    Version 12.3.0.1.2 OGGCORE_12.3.0.1.0_PLATFORMS_171208.0005
    Windows x64 (optimized), MySQL Enterprise on Dec  8 2017 10:16:57
    Operating system character set identified as GBK.
    
    Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
    
    GGSCI (SC-201708231409) 1>
    
    

    (3)、添加manager进行到windows服务,使之可以随windows开机自行启动

    • 手动指定服务名GGMGR(默认就是GGMGR)。用edit params ./GLOBALS命令(注意./GLOBALS为大写),进入编辑文件
    # 编辑 GLOBALS文件(没有自动创建)
    GGSCI (SC-201708231409) 1> edit params ./GLOBALS
    
    • 输入下面内容:

    MGRSERVNAME GGMGR

    • 保存退出后,用install addservice命令添加服务
    E:\OGG\oggmsql>install addservice
    Service 'GGMGR' created.
    Install program terminated normally.
    

    (4)、输入create subdirs自动创建需要用到的文件夹

    GGSCI (SC-201708231409) 1> create subdirs
    

    主要目录介绍:
    dirchk:存放检查点(Checkpoint)文件
    dirdat:存放Trail与Extract文件,以后详述
    dirdef:通过DEFGEN工具生成的源或目标的数据定义文件
    dirpcs:存放进程状态文件
    dirprm:存放参数文件
    dirrpt:存放进程报告文件
    dirsql:存放SQL脚本文件
    dirtmp:当事务所需要的内存超过已分配内存时,缺省存储于此。

    自动创建后的目录结构.png

    (5)、登录project账号,输入dblogin sourcedb 数据库名@IP地址:端口号 userid 用户名 password 密码 (此处为源端数据库):

    GGSCI (SC-201708231409) 2> dblogin sourcedb project@127.0.0.1:3306 userid project password project
    Successfully logged into database.
    
    GGSCI (SC-201708231409 DBLOGIN as project) 3>
    

    (5)、配置mgr管理进程,输入edit params mgr将会弹出文本编辑器并写入:

    GGSCI (SC-201708231409 DBLOGIN as project) 3> edit params mgr
    

    以下是添加内容:

    port 7809
    dynamicportlist 7840-7939
    autorestart er *, retries 5, waitminutes 3

    (6)、启动mgr进程,输入start mgr

    # 启动mgr进程, start 进程名
    GGSCI (SC-201708231409 DBLOGIN as project) 12> start mgr
    Starting Manager as service ('OGGMGR')...
    Service started.
    # 查看进程状态
    GGSCI (SC-201708231409 DBLOGIN as project) 13> info all
    Program     Status      Group       Lag at Chkpt  Time Since Chkpt
    MANAGER     RUNNING
    # 停止mgr进程, stop 进程名
    GGSCI (SC-201708231409 DBLOGIN as project) 14> stop mgr
    Manager process is required by other GGS processes.
    Are you sure you want to stop it (y/n)?y
    
    Sending STOP request to MANAGER ('OGGMGR') ...
    Request processed.
    Manager stopped.
    

    (7)、配置extract抽取进程,输入edit params eora将会弹出文本编辑器并写入:

    GGSCI (SC-201708231409 DBLOGIN as project) 15> edit params eora
    

    以下是添加内容:

    extract eora
    sourcedb project@127.0.0.1:3306 userid project password project
    TranLogOptions AltLogDest F:\mysqlbin\binlog.index
    exttrail E:\OGG\oggmsql\dirdat\et
    table project.nbarankings2013;

    说明
    sourcedb:源端数据库信息
    TranLogOptions AltLogDest:mysql二进制日志输出地址
    exttrail:源端抽取出来的mysql日志存放地址(自定义),E:\OGG\oggmsql\dirdat\ et文件夹需要自己创建
    table:同步的数据库和表,表名可以使用通配符,如table project.*

    保存后,添加并启动eora进程,输入add extract eora,tranlog,begin nowadd exttrail E:\OGG\oggmsql\dirdat\et,extract eorastart eora

    GGSCI (SC-201708231409 DBLOGIN as project) 16> add extract eora,tranlog,begin now
    GGSCI (SC-201708231409 DBLOGIN as project) 17> add exttrail E:\OGG\oggmsql\dirdat\et,extract eora
    GGSCI (SC-201708231409 DBLOGIN as project) 18> start eora
    

    注意:启动前需要先启动mgr
    否则会报error:
    Sending START request to MANAGER ('OGGMGR') ...
    2019-02-02 14:44:36 ERROR OGG-15146 Manager not currently running.

    从指定日期开始抽取

    (8)、配置pump_so投递进程,输入edit params pump_so将会弹出文本编辑器并写入:

    GGSCI (SC-201708231409 DBLOGIN as project) 19> edit params pump_so
    

    以下是添加内容:

    extract Pump_so
    sourcedb project@127.0.0.1:3306 userid project password project
    rmthost 172.16.94.37,mgrport 7809,compress
    rmttrail D:\OGG\oggmsql\dirdat\et
    table project.nbarankings2013;

    说明
    sourcedb:源端数据库信息
    rmthost :目标端ip地址, ogg端口号
    rmttrail:目标端接收到的mysql日志存放地址(自定义),D:\OGG\oggmsql\dirdat\ et文件夹需要自己创建
    table:同步的数据库和表,表名可以使用通配符,如table project.*

    保存成功后,添加pump_so进程,输入(先不启动pump_so)add extract pump_so,exttrailsource E:\OGG\oggmsql\dirdat\etadd rmttrail D:\OGG\oggmsql\dirdat\et,extract pump_so

    GGSCI (SC-201708231409 DBLOGIN as project) 20> add extract pump_so,exttrailsource E:\OGG\oggmsql\dirdat\et -- 注意`rmttrail`的地址为`源端`服务器的目录
    GGSCI (SC-201708231409 DBLOGIN as project) 21> add rmttrail D:\OGG\oggmsql\dirdat\et,extract pump_so  -- 注意`rmttrail`的地址为`目标端`服务器的目录
    

    (9)、创建表的定义文件(.def)

    GGSCI (SC-201708231409 DBLOGIN as project) 19> edit param defgen
    

    以下是添加内容:

    defsfile E:\OGG\oggmsql\dirdef\gmqdsjsjp.def
    sourcedb project@127.0.0.1:3306 userid project, password project
    table project.*;

    说明
    defsfile:.def存放位置和文件名
    sourcedb:源端数据库信息
    table:需要定义的数据库和表,表名可以使用通配符,如table project.*

    • 生成 .def文件,在ogg安装根目录
    E:\OGG\oggmsql> defgen paramfile ./dirprm/defgen.prm
    
    • 将生成的 gmqdsjsjp.def文件复制到目标端安装目录下 dirdef 文件夹内

    (10)、注意等待目标端安装完成后,启动start pump_so

    • 源端所需要启动的服务有3
    > start mgr
    > start eora
    > start pump_so
    > stop .. //停止服务
    

    << 到此源端的配置就结束了 >>
    ====== End Source(同步的数据源)Oracle GoldenGate配置 ======

    ====== 以下为Target(同步的目标数据库)Oracle GoldenGate配置 ======

    2、Oracle GoldenGate(目标端)

    (1)、在目标端服务器安装的OGG根目录按住SHift+右键cmd进入OGG根目录的命令面板

    (2)、运行ogg:执行ggsci.exe

    # 运行ogg
    D:\OGG\oggmsql>ggsci.exe
    
    Oracle GoldenGate Command Interpreter for MySQL
    Version 12.3.0.1.2 OGGCORE_12.3.0.1.0_PLATFORMS_171208.0005
    Windows x64 (optimized), MySQL Enterprise on Dec  8 2017 10:16:57
    Operating system character set identified as GBK.
    
    Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
    
    GGSCI (DESKTOP-LDTMM0I) 1>
    
    

    (3)、添加manager进行到windows服务,使之可以随windows开机自行启动

    • 手动指定服务名GGMGR(默认就是GGMGR)。用edit params ./GLOBALS命令(注意./GLOBALS为大写),进入编辑文件
    # 编辑 GLOBALS文件(没有自动创建)
    GGSCI (DESKTOP-LDTMM0I) 1> edit params ./GLOBALS
    
    • 输入下面内容:

    MGRSERVNAME OGGMGR

    • 保存退出后,用install addservice命令添加服务
    E:\OGG\oggmsql>install addservice
    Service 'GGMGR' created.
    Install program terminated normally.
    

    (4)、输入create subdirs自动创建需要用到的文件夹

    GGSCI (SC-201708231409) 1> create subdirs
    

    主要目录介绍:
    dirchk:存放检查点(Checkpoint)文件
    dirdat:存放Trail与Extract文件,以后详述
    dirdef:通过DEFGEN工具生成的源或目标的数据定义文件
    dirpcs:存放进程状态文件
    dirprm:存放参数文件
    dirrpt:存放进程报告文件
    dirsql:存放SQL脚本文件
    dirtmp:当事务所需要的内存超过已分配内存时,缺省存储于此。

    (5)、登录projectTarget 账号,输入dblogin sourcedb 数据库名@IP地址:端口号 userid 用户名 password 密码 (此处为目标端数据库):

    GGSCI (DESKTOP-LDTMM0I) 2> dblogin sourcedb project_target@172.16.94.37:3306 userid projectTarget password projectTarget
    Successfully logged into database.
    

    (6)、添加检查点表checkpoint,输入add checkpointtable project_target.checkpoint

    GGSCI (DESKTOP-LDTMM0I DBLOGIN as projectTarget) 3> add checkpointtable project_target.checkpoint
    

    (7)、编辑GLOBAL文件,输入edit params ./GLOBALS将会弹出文本编辑器并写入:

    GGSCI (DESKTOP-LDTMM0I DBLOGIN as projectTarget) 4> edit params ./GLOBALS
    

    以下是添加内容:

    checkpointtable project_target.checkpoint
    ALLOWOUTPUTDIR D:\OGG\oggmsql\dirdat

    (8)、配置mgr管理进程,输入edit params mgr将会弹出文本编辑器并写入:

    GGSCI (DESKTOP-LDTMM0I DBLOGIN as projectTarget) 5> edit params mgr
    

    以下是添加内容:

    port 7809
    dynamicportlist 7840-7939
    autorestart er *, retries 5, waitminutes 3
    purgeoldextracts D:\OGG\oggmsql\dirdat*,usecheckpoints, minkeepdays 2
    ACCESSRULE, PROG 7809, IPADDR 172.16.94.15, ALLOW

    保存成功后,启动mgr管理进程start mgr

    GGSCI (DESKTOP-LDTMM0I DBLOGIN as projectTarget) 6> start mgr
    

    (10)、配置的复制进程,输入edit params repl将会弹出文本编辑器并写入:

    GGSCI (DESKTOP-LDTMM0I DBLOGIN as projectTarget) 7> edit params repl
    

    以下是添加内容:

    replicat repl
    targetdb project_target@127.0.0.1:3306 userid projectTarget password projectTarget
    assumetargetdefs
    reperror default,discard
    discardfile ./dirrpt/repl.dsc,append,megabytes 50
    map project.nbarankings2013, target project_target.nbarankings2013;

    说明
    targetdb:目标端数据库信息
    map:源端需要同步的表
    target:目标端相对应的备份表
    表名可以使用通配符,如MAP project.* , target ggs.*

    保存成功后,添加并且启动复制进程,输入add replicat repl,exttrail D:\OGG\oggmsql\dirdat\et,checkpointtable project_target.checkpointstart repl

    GGSCI (DESKTOP-LDTMM0I DBLOGIN as projectTarget) 8> add replicat repl,exttrail D:\OGG\oggmsql\dirdat\et,checkpointtable project_target.checkpoint
    GGSCI (DESKTOP-LDTMM0I DBLOGIN as projectTarget) 9> start repl
    

    (11) 目标端所需要启动的服务有2个

    > start mgr
    > start repl
    

    << 到此目标端的配置就结束了 >>
    ====== End target(同步的目标数据库)Oracle GoldenGate配置 ======

    四、GoldenGate 测试

    (1)、启动源端start pump_so

    GGSCI (Win10) 1> start pump_so
    

    目标端显示了这个info,如图:

    image.png
    源端的sqlplus.exe输入:
    SQL> INSERT INTO NBArankings2013 (NBATeam, Division, WinPerc, GB, Conference) 
    VALUES ('Brooklyn', 'Atlantic', '0.598', '17', 'East'),
    ('Brooklyn', 'Atlantic', '0.598', '17', 'East');
     已创建 2 行。
    SQL> commit;
    

    然后再去目标端看看效果如何,如图(我插入了2条):


    同步效果.png

    注:可以到安装ogg的根目录中找到ggserr.log文件,查看错误日志。

    五、错误解决方案

    1. 登陆mysql:Client does not support authentication protocol requested by server; consider upgrading MySQL client或者2059 Authentication plugin 'caching_sha2_password'cannot be loaded

    原因:MySQL开发团队已发布MySQL 8.0.4 RC版本,加密方式从原来的mysql_native_password更改为caching_sha2_password,mysql5.7版本之后,默认采用了caching_sha2_password验证方式。

    解决办法:进入mysql命令行,输入以下命令:

    // 1.更改加密方式
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; 
    
    // 2.更改密码
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
    
    // 3.刷新
    mysql> FLUSH PRIVILEGES;
    
    1. 目标端 repl 进程弹出的窗口显示:拒绝访问
      解决办法:cmd使用管理员打开

    六、GoldenGate 相关资料

    相关文章

      网友评论

        本文标题:在Windows中 基于Oracle GoldenGate (O

        本文链接:https://www.haomeiwen.com/subject/hrcssqtx.html