(一)基础环境配置

  源库 目标库
操作系统版本 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]

# binlog配置
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]# ./ggsci Oracle 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 subdirs Creating subdirectories under current directory /ogg Parameter 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/*,usecheckpoints, minkeepdays 1 GGSCI (masterdb) 2> start mgr
Manager started. GGSCI (masterdb) 3> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING

(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 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 07:27:58 Copyright (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_64
soft limit hard limit
Address Space Size : unlimited unlimited
Heap Size : unlimited unlimited
File Size : unlimited unlimited
CPU Time : unlimited unlimited Process 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/*,usecheckpoints, minkeepdays 1 GGSCI (slavedb) 5> start mgr
Manager started. GGSCI (slavedb) 6> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING

(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 repa

replicat 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 exta Sending START request to MANAGER ...
EXTRACT EXTA starting

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

GGSCI (masterdb) 19> start dmpa

Sending START request to MANAGER ...
EXTRACT DMPA starting

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

GGSCI (slavedb DBLOGIN as ogg) 18> start repa

Sending START request to MANAGER ...
REPLICAT REPA starting

(九)确认同步状态

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

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

源端:

GGSCI (masterdb) 8> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     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 all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
REPLICAT RUNNING REPA 01:14:40 00:00:00

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

源端执行:

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

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

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

【完】

使用GoldenGate完成MySQL到MySQL的同步的更多相关文章

  1. Goldengate完成Mysql到Mysql的数据同步

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

  2. 4.MySQL 主主(m-m) 同步生产库标准同步操作实施流程

    通过MySQL参数配置使用主主前提: 1.表的主键自增. ################################################################# #m1-m ...

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

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

  4. mysql主从数据库不同步的2种解决方法(转)

    今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. show master status; ...

  5. MySQL数据库的主从同步实现及应用

    >>主从同步机制及应用 读写分离(Read/Write Splitting)让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELETE),从数据库处理SELECT查询操作 ...

  6. MySQL 5.5主从同步设置教程

    先修改Master(10.1.123.197)的 my.cnf 配置 在 [mysqld] 中新增以下内容 log-bin=mysql-bin log-bin-index=mysql-bin.inde ...

  7. Mysql 5.6主从同步配置与解决方案

    主库IP:192.168.1.10 从库IP:192.168.1.11 centos的mysql配置文件在:/etc/my.cnf 1.主库配置编辑my.cnf: # 启用二进制日志 log_bin ...

  8. mysql 数据库的主从同步

    1.复制准备 操作系统 centOS 主库(mysql master):  ip为123.56.94.1   port为3306  mysql 版本 5.7.16 从库(mysql slave):   ...

  9. mysql配置为半同步复制

    mysql 半同步插件是由谷歌提供,具体位置/usr/local/mysql/lib/plugin/下,一个是 master用的 semisync_master.so,一个是 slave 用的 sem ...

随机推荐

  1. 010 Ceph RGW对象存储

    一.对象存储 1.1 介绍 通过对象存储,将数据存储为对象,每个对象除了包含数据,还包含数据自身的元数据 对象通过Object ID来检索,无法通过普通文件系统操作来直接访问对象,只能通过API来访问 ...

  2. 从零开始のcocos2dx生活(八)ParticleSystemQuad

    https://learnopengl-cn.github.io/01%20Getting%20started/04%20Hello%20Triangle/#_1 写的真的非常好-最近没时间拜读,只看 ...

  3. $vjudge-$搜索专题题解

    退役了,刷点儿无脑水题$bushi$放松下$QwQ$ 然后先放个链接,,,$QwQ$ $A$ 虽然是英文但并不难$get$题目大意?就说给定一个数独要求解出来,$over$ 昂显然直接$dfs$加剪枝 ...

  4. Flink入门(五)——DataSet Api编程指南

    Apache Flink Apache Flink 是一个兼顾高吞吐.低延迟.高性能的分布式处理框架.在实时计算崛起的今天,Flink正在飞速发展.由于性能的优势和兼顾批处理,流处理的特性,Flink ...

  5. Intellij IDEA 导入eclipse 项目

    HoJe一个会rep的程序猿 . 感谢2019 时间匆匆,一转眼2019要跟我们说再见了.我们怀有太多的期望就难免遭遇失望和挫折.我们遇到了困难,往往不是想办法去解决,而是抱怨这个命运的不公.如果生活 ...

  6. Notepad++中安装json格式化插件

    在线工具固然好,一旦没网就凉凉 Notepad++编辑器中提供了 json 数据格式化显示的插件 安装插件过程如下: 注意: 安装过程需要联网状态 插件安装过程会自动退出程序,等待几秒钟后插件安装完成 ...

  7. GXOI&GZOI

    T1 与或和   2s&&512MB   简明题意:求一个矩阵的所有子序列的 \(and\)和 和\(or\)和: 子矩阵的\(and\)和就是所有值\(and\)起来:\(or\)类 ...

  8. Linux上的Tomcat地址映射,且404错误解决

    问题:现在想要加一个下载文件功能,但是文件地址不在tomcat的webapps下,需要通过地址映射到tomcat下面再通过链接执行下载文件功能. 解决方法有两种: 方法一: 用方法一的前提是不用启动服 ...

  9. Frogger POJ - 2253(求两个石头之间”所有通路中最长边中“的最小边)

    题意 ​ 题目主要说的是,有两只青蛙,在两个石头上,他们之间也有一些石头,一只青蛙要想到达另一只青蛙所在地方,必须跳在石头上.题目中给出了两只青蛙的初始位置,以及剩余石头的位置,问一只青蛙到达另一只青 ...

  10. css文字溢出显示省略号

    1.单行文字溢出显示省略号. overflow: hidden; text-overflow: ellipsis; white-space: nowrap;//文本不换行 2.多行文本溢出显示省略号. ...