(一)基础环境配置

  源库 目标库
操作系统版本 CentOS Linux release 7.4 CentOS Linux release 7.4
IP地址 192.168.10.11 192.168.10.12
数据库版本 社区版 5.7.24 社区版 5.7.24
需要同步的数据库 testdb(所有表) testdb_repl
GoldenGate版本 OGG-12.2.0.2 OGG-12.2.0.2

说明:

1.oracle GoldenGate下载地址:https://edelivery.oracle.com/ 免费注册一个账号即可登入,直接搜索“goldengate for non oracle database”,找到想要的版本下载即可。

2.经过测试,使用OGG-11.2.0.1同步数据库会报错:

ERROR   OGG-00146  VAM function VAMRead returned unexpected result: error 600 - VAM Client Report <CAUSE OF FAILURE : Sanity Check Failed for events
WHEN FAILED : While reading log event from binary log
WHERE FAILED : MySQLBinLog Reader Module
CONTEXT OF FAILURE : No Information Available!>.

更换为OGG-12.2.0.2后解决,故本文采用的Ogg版本是12.2.0.2。

(二)MySQL数据库初始信息

  源库 目标库
MySQL安装位置(basedir) /usr/local/mysql /usr/local/mysql
数据存放位置    (datadir) /mysql/data /mysql/data
二进制日志位置 (log_bin) /mysql/binlog /mysql/binlog

(三)MySQL数据库开启二进制日志

要使用ogg抽取数据,必须开启二进制日志。在mysql的配置文件/etc/my.cnf中配置二进制日志,重启数据库生效。

[mysqld]server_id = 1
binlog_format=ROW
log_bin=/mysql/binlog/master-bin
sync_binlog=1
expire_logs_days=1

(四)源端和目标端安装配置GoldenGate(源端和目标端都要执行)

(4.1)源端和目标端创建安装ogg,实际上ogg并不需要安装,解压就可以使用

创建ogg安装路径

[root@masterdb ~]# mkdir /ogg

将安装包拷贝到该路径下解压:

[root@masterdb ogg]# ls
ggs_Linux_x64_MySQL_64bit.tar
[root@masterdb ogg]# tar -xvf ggs_Linux_x64_MySQL_64bit.tar
./
./mysql_checklist.sql
...略
./libicuuc.so.56.1
[root@masterdb ogg]# ls
bcpfmt.tpl              emsclnt                        libggnnzitp.so        mysql.txt
bcrypt.txt              extract                        libggparam.so         notices.txt
cachefiledump           freeBSD.txt                    libggperf.so          oggerr
checkprm                ggcmd                          libggrepo.so          prvtclkm.plb
chkpt_mysql_create.sql  ggMessage.dat                  libicudata.so.56      replicat
convchk                 ggparam.dat                    libicudata.so.56.1    retrace
convprm                 ggsci                          libicui18n.so.56      reverse
db2cntl.tpl             ggs_Linux_x64_MySQL_64bit.tar  libicui18n.so.56.1    server
defgen                  help.txt                       libicuuc.so.56        sqlldr.tpl
demo_mysql_create.sql   keygen                         libicuuc.so.56.1      tcperrs
demo_mysql_insert.sql   lib                            libmysqlclient.so.18  ucharset.h
demo_mysql_load.sql     lib12                          libxerces-c-3.1.so    UserExitExamples
demo_mysql_misc.sql     libantlr3c.so                  logdump               usrdecs.h
dirout                  libdb-6.1.so                   mgr                   zlib.txt
dirwww                  libgglog.so                    mysql_checklist.sql

(4.2)使用ggsci创建ogg相关路径

[root@masterdb ogg]# pwd
/ogg
[root@masterdb ogg]# ./ggsciOracle GoldenGate Command Interpreter for MySQL
Version 12.2.0.2.2 OGGCORE_12.2.0.2.0_PLATFORMS_170630.0419
Linux, x64, 64bit (optimized), MySQL Enterprise on Jun 30 2017 06:32:17
Operating system character set identified as UTF-8.Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved.GGSCI (masterdb) 1> create subdirsCreating subdirectories under current directory /oggParameter files                /ogg/dirprm: created
Report files                   /ogg/dirrpt: created
Checkpoint files               /ogg/dirchk: created
Process status files           /ogg/dirpcs: created
SQL script files               /ogg/dirsql: created
Database definitions files     /ogg/dirdef: created
Extract data files             /ogg/dirdat: created
Temporary files                /ogg/dirtmp: created
Credential store files         /ogg/dircrd: created
Masterkey wallet files         /ogg/dirwlt: created
Dump files                     /ogg/dirdmp: created

(五)源端配置GoldenGate(源端执行)

(5.1)创建数据库用户ogg,该用户用来同步数据

mysql> GRANT ALL PRIVILEGES ON `testdb`.* TO 'ogg'@'%'IDENTIFIED BY 'ogg';

(5.2)配置管理进程mgr

GGSCI (masterdb) 1> edit param mgr
port 7809
dynamicportlist 7840-7939
purgeoldextracts /ogg/dirdat

(5.3)配置捕获进程exta

GGSCI (masterdb) 5> edit param exta
extract exta
sourcedb testdb@192.168.10.11:3306 userid ogg password ogg
exttrail /ogg/dirdat/ea
discardfile  /ogg/dirrpt/exta.dsc,append
TranLogOptions AltLogDest /mysql/binlog/master-bin.index
table testdb.*; GGSCI (masterdb) 10> add extract exta,tranlog,begin now
EXTRACT added.GGSCI (masterdb) 11> add exttrail /ogg/dirdat/ea,extract exta
EXTTRAIL added.

(5.4)配置投递进程dmpa

GGSCI (masterdb) 15> edit param dmpa
extract dmpa
passthru
sourcedb testdb@192.168.10.11:3306 userid ogg password ogg
rmthost  192.168.10.12,mgrport 7809,compress
rmttrail  /ogg/dirdat/da
dynamicresolution
numfiles 3000
table testdb.*; GGSCI (masterdb) 16> add extract dmpa ,exttrailsource /ogg/dirdat/ea
EXTRACT added.GGSCI (masterdb) 17> add rmttrail /ogg/dirdat/da,extract dmpa
RMTTRAIL added.

(5.5)创建表定义文件,传送到目标端

(5.5.1)创建表定义文件

GGSCI (masterdb) 23> edit param defgen
defsfile ./dirdef/testdb.def
sourcedb testdb@192.168.10.11:3306 userid ogg, password ogg
table testdb.*;  GGSCI (masterdb) 26> exit

(5.5.2)生成表定义

[root@masterdb ogg]# ./defgen paramfile ./dirprm/defgen.prm  ***********************************************************************Oracle GoldenGate Table Definition Generator for MySQLVersion 12.2.0.2.2 OGGCORE_12.2.0.2.0_PLATFORMS_170630.0419Linux, x64, 64bit (optimized), MySQL Enterprise on Jun 30 2017 07:27:58Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved.Starting at 2020-02-08 18:15:40
***********************************************************************Operating System Version:
Linux
Version #1 SMP Tue Aug 22 21:09:27 UTC 2017, Release 3.10.0-693.el7.x86_64
Node: masterdb
Machine: x86_64soft limit   hard limit
Address Space Size   :    unlimited    unlimited
Heap Size            :    unlimited    unlimited
File Size            :    unlimited    unlimited
CPU Time             :    unlimited    unlimitedProcess id: 2510***********************************************************************
**            Running with the following parameters                  **
***********************************************************************
defsfile ./dirdef/testdb.def
sourcedb testdb@192.168.10.11:3306 userid ogg, password ***
table testdb.*;
Expanding wildcard table specification testdb.*:Retrieving definition for testdb.test01.
Retrieving definition for testdb.test02.
Retrieving definition for testdb.test03.Definitions generated for 3 tables in ./dirdef/testdb.def.

(5.5.3)传送到目标端

[root@masterdb ogg]# scp /ogg/dirdef/testdb.def 192.168.10.12:/ogg/dirdef/
root@192.168.10.12's password:
testdb.def                            100% 1785     1.9MB/s   00:00

(六)目标端配置GoldenGate(目标端执行)

(6.1)创建数据库用户ogg,该用户用来同步数据

mysql> GRANT ALL PRIVILEGES ON `testdb_repl`.* TO 'ogg'@'%'IDENTIFIED BY 'ogg';

(6.2)配置管理进程mgr

GGSCI (slavedb) 3> edit param mgr
port 7809
dynamicportlist 7840-7939
purgeoldextracts /ogg/dirdat

(6.3)配置检查表

GGSCI (slavedb) 9> dblogin sourcedb testdb_repl@192.168.10.12:3306 userid ogg password ogg
Successfully logged into database.GGSCI (slavedb DBLOGIN as ogg) 10> add checkpointtable testdb_repl.checkpoint  Successfully created checkpoint table testdb_repl.checkpoint.GGSCI (slavedb DBLOGIN as ogg) 11> edit params ./GLOBALS
checkpointtable testdb_repl.checkpoint

(6.4)配置应用进程repa

GGSCI (slavedb DBLOGIN as ogg) 13> edit params repareplicat repa
targetdb testdb_repl@192.168.10.12:3306 userid ogg password ogg
handlecollisions
sourcedefs /ogg/dirdef/testdb.def
discardfile /ogg/dirrpt/repa.dsc,purge
map testdb.*, target testdb_repl.*;
 

GGSCI (slavedb DBLOGIN as ogg) 16> add replicat repa,exttrail /ogg/dirdat/da,checkpointtable testdb_repl.checkpoint
REPLICAT added.

(七)导入初始化数据

将源库需要同步的表导出,然后导入到目标数据库

[root@masterdb ~]# mysqldump -uroot -p123456 -h192.168.10.11  --single-transaction --flush-logs --master-data=2 testdb  > testdb.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.[root@masterdb ~]# ls
anaconda-ks.cfg  testdb.sql  wgetlog-02-05-20-22:27.log  wgetlog-02-05-20-22:28.log  wget.sh[root@masterdb ~]# scp testdb.sql root@192.168.10.12:/root
root@192.168.10.12's password:
testdb.sql                                                                                100%   15MB  68.9MB/s   00:00

[root@slavedb ~]# mysql -uroot -p123456 testdb_repl < testdb.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

(八)开启ogg同步进程

(8.1)源端开启捕获进程(源端执行)

由于数据库数据一直在变化,所以对于导出的testdb.sql文件,我们需要记录二进制日志文件的log_file和log_pos

[root@slavedb ~]# cat testdb.sql |grep "CHANGE MASTER TO MASTER_LOG_FILE"
-- CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000005', MASTER_LOG_POS=154;

然后从导出时的binlog开始抽取

GGSCI (masterdb) 5> alter extract exta,vam,lognum 5,logpos 154
EXTRACT altered.GGSCI (masterdb) 6> start extaSending START request to MANAGER ...
EXTRACT EXTA starting

(8.2)开启投递进程(源端执行)

GGSCI (masterdb) 19> start dmpaSending START request to MANAGER ...
EXTRACT DMPA starting

(8.3)开启应用进程(目标端执行)

GGSCI (slavedb DBLOGIN as ogg) 18> start repaSending START request to MANAGER ...
REPLICAT REPA starting

(九)确认同步状态

(9.1)使用info all查看进程是否运行正常

所有进程状态为“running”代表正常

源端:

GGSCI (masterdb) 8> info allProgram     Status      Group       Lag at Chkpt  Time Since ChkptMANAGER     RUNNING
EXTRACT     RUNNING     DMPA        00:00:00      00:00:08
EXTRACT     RUNNING     EXTA        00:00:00      00:00:04

目标端:

GGSCI (slavedb DBLOGIN as ogg) 23> info allProgram     Status      Group       Lag at Chkpt  Time Since ChkptMANAGER     RUNNING
REPLICAT    RUNNING     REPA        01:14:40      00:00:00

(9.2)源端手动插入数据,查看目标端是否同步

源端执行:

insert into test03 values(1,'a');

目标端查看数据是否同步过来:

mysql> use testdb_repl ;
Database changedmysql> select * from test03;
+-----+------+
| id3 | name |
+-----+------+
|   1 | a    |
+-----+------+
1 row in set (0.04 sec)

【完】

使用GoldenGate完成MySQL到MySQL的同步相关推荐

  1. goldengate for mysql_GoldenGate for mysql to mysql:单向同步

    GoldenGate for mysql to mysql:单向同步 GoldenGate用于在各种企业系统间以亚秒级速度复制和集成事务数据,是同类最佳的.易于部署的产品.GoldenGate 可以灵 ...

  2. mysql goldengate_Goldengate完成Mysql到Mysql的数据同步

    文档参考地址:http://blog.csdn.net/u010587433/article/details/49305019 需求: 使用Goldengate完成Mysql到Mysql的数据同步,源 ...

  3. MySQL到Elasticsearch实时同步构建数据检索服务的选型与思考

    前言 本文具体探讨 MySQL 数据实时同步到 Elasticsearch (以下简称 ES ) 技术方案和思考,同时使用一定篇幅介绍一些前置知识,从理论到实践,让读者更好的理解这块内容和相关问题.包 ...

  4. mysql不同实例数据同步_两台Mysql数据库数据同步实现实例

    做开发的时候要做Mysql的数据库同步,两台安装一样的系统,都是FreeBSD5.4,安装了Apache 2.0.55和PHP 4.4.0,Mysql的版本是4.1.15,都是目前最新的版本. 1. ...

  5. mysql主从复制,半同步,主主复制架构的实现

    mysql的数据同步功能,不仅在一定程度上提供数据库查询时的负载均衡,而且为实现数据库的冗灾.备份.恢复.负载均衡等都是有极大帮助.而数据的同步功能可以通过主从复制来实现,而主从复制是异步进行的,并且 ...

  6. linux怎么配置mysql数据库服务器_linux下指定mysql数据库服务器主从同步的配置实例...

    一. 概念:① 数据库同步  (主从同步 --- 主数据库写的同时 往从服务器写数据) ② 数据库同步  (主主同步 --- 两台数据库服务器互相写数据) 二. 举例数据库服务器(A) 主数据库   ...

  7. MySQL数据库导入或者同步大量数据时数据丢失解决方案

    MySQL数据库导入或者同步大量数据时数据丢失解决方案 参考文章: (1)MySQL数据库导入或者同步大量数据时数据丢失解决方案 (2)https://www.cnblogs.com/miss-li/ ...

  8. MYSQL管理之主从同步管理

    原文地址:MYSQL管理之主从同步管理 作者:飞鸿无痕 MYSQL管理之主从同步管理 MYSQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的管理也就显得非常重 ...

  9. windows mysql主主配置_基于docker MySQL数据库主主同步配置(windows上)

    安装docker部分 坑点 docker拉镜像速度过慢 点击docker图标,点击邮件看到setting,setting界面上点击docker engine,配置如图所示 还有两个备用的镜像地址 &q ...

  10. Kettle-开源的ETL工具集-实现SqlServer到Mysql表的数据同步并部署在Windows服务器上

    场景 kettle 中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后 以一种指定的格式流出.是一款由纯Java编写的ETL工具,绿色无需安装,数据抽取高效稳定(数据迁移工具). ...

最新文章

  1. Vue底层实现原理概述
  2. android AVD运行chrome,contentshell,chromeshell失败解决方法
  3. jquery上传图片
  4. 代码编译delphi条件编译
  5. 在IntelliJ IDEA中使用git
  6. Android开发经验之在图片上随意点击移动文字
  7. python开发测试岗_作为测试开发岗的面试官,我都是怎么选人的?
  8. openfeign调用 HttpServletRequest作为参数 报错..
  9. 级差公排php如何_什么是专业级差?专业级差怎么安排专业?
  10. 弹性计算平台技术:云服务器“安全”“稳定”“弹性”的基石
  11. 织梦html权限设置,详细的Dede织梦目录权限安全设置教程
  12. 存储过程 insert
  13. java中几种常见字符集与乱码介绍
  14. php 遍历文件夹并压成zip_php ZipArchive实现多文件打包下载实例
  15. Python入门--创建类的对象
  16. # 每天阅读一个 npm 模块(7)- delegates
  17. 选择语句详解(C++)
  18. 提高计算机CPU运行速度,提高cpu运行速度的方法
  19. 用大白话聊聊分布式系统
  20. czy的后宫5 召集妹子

热门文章

  1. Focal Loss 安装与使用 TensorFlow2.x版本
  2. 起步 —— 种一棵树最好的时间是十年前
  3. mysql 常见问题处理_mysql常见问题处理
  4. cout, endl的使用
  5. 【资源分享】云计算 CRM 等网上搜集资料
  6. 推广软件开发分析规范
  7. qq无法启动此程序计算机中丢失dll,Win7系统打开QQ提示丢失DLL文件怎么办
  8. 码农的自我修养之从需求分析到软件设计
  9. mysql数据库行列矩阵调换位置(行与列调换)
  10. 蓝桥杯pcf8591读和写