1. 程式人生 > >Oracle GoldenGate 之 SqlServer資料同步到Mysql資料庫

Oracle GoldenGate 之 SqlServer資料同步到Mysql資料庫

專案描述:

將SqlSever 2008 R2中的資料實時或定時的同步到Mysql 5.6資料庫中。
OS DATABASE
來源資料庫 Window 2008 MS SQL 2008 R2
目標資料庫 Linux  MySQL 5.6


實施方案:

如何初始化資料?

Navicat  Premium--可以很方便的將MSSQL SERVER中的資料結構和資料初始化到Mysql資料庫中。

如何實現實時同步?

方案1:SyncNavigator--實現MSSQL SERVER和Mysql資料庫之間的資料同步(可選在排程時間和機制)。 方案2:Oracle Goldengate--靈活的實現MSSQL SERVER和Mysql資料庫之間的資料同步。

兩種方案的利弊?

方案1:,配置簡單,但是對於目標端表中已經存在資料的情況處理麻煩(無法建立同步欄位,這個欄位是軟體同步程序需要的) 方案2,配置複雜,效率高。

使用OGG來實現MSSQL SERVER和MYSQL之間的資料同步

OGG 軟體:

V34020-01
Oracle GoldenGate V11.2.1.0.2 for SQL Server on Windows (64bit)
V32399-01
Oracle GoldenGate V11.2.1.0.1 for MySQL 5.x on Linux x86-64)

源端MSSQL SERVER配置

安裝OGG

C:\OGG>ggsci

Oracle GoldenGate Command Interpreter for SQL Server
Version 11.2.1.0.2 OGGCORE_11.2.1.0.2T3_PLATFORMS_120724.2205
Windows x64 (optimized), Microsoft SQL Server on Jul 25 2012 03:04:52

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



GGSCI (WIN-UGCMTTOTKE7) 1> create subdirs

Creating subdirectories under current directory C:\OGG

Parameter files                C:\OGG\dirprm: already exists
Report files                   C:\OGG\dirrpt: created
Checkpoint files               C:\OGG\dirchk: created
Process status files           C:\OGG\dirpcs: created
SQL script files               C:\OGG\dirsql: created
Database definitions files     C:\OGG\dirdef: created
Extract data files             C:\OGG\dirdat: created
Temporary files                C:\OGG\dirtmp: created
Stdout files                   C:\OGG\dirout: created

GGSCI (WIN-UGCMTTOTKE7) 2>exit
退出後,切換到OGG目錄下
C:\OGG>INSTALL ADDSERVICE
Service 'GGSMGR' created.

Install program terminated normally.
C:\OGG>

配置ODBC資料來源

Microsoft SQL Server ODBC 驅動程式版本 06.01.7601


資料來源名稱: oa_test
資料來源描述: 
伺服器: WIN-UGCMTTOTKE7
資料庫: (Default)
語言: (Default)
翻譯字元資料: Yes
日誌長執行查詢: No
日誌驅動程式統計: No
使用區域設定: No
預定義的語句選項: 在斷開時刪除臨時儲存過程
使用故障轉移伺服器: No
使用 ANSI 引用的識別符號: Yes
使用 ANSI 的空值,填充和警告: Yes
資料加密: No

配置OGG抽取程序

GGSCI (WIN-UGCMTTOTKE7) 8> dblogin sourcedb oa_test,userid yunwei,password "********"

2014-07-21 14:39:28  INFO    OGG-03036  Database character set identified as windows-936. Locale: zh_Hans_CN

2014-07-21 14:39:28  INFO    OGG-03037  Session character set identified as GBK.
Successfully logged into database.
GGSCI (WIN-UGCMTTOTKE7) 12> add trandata dbo.TEmployees


2014-07-21 14:43:51  WARNING OGG-01483  The key for table [oa_test.dbo.TEmployees] contains one or more variable length
columns.  These columns may not have their pre-images written to the transaction log during updates. <span style="color:#ffff99;"> Please use KEYCOLS</span>
 to specify a key for Oracle GoldenGate to use on this table.


Logging of supplemental log data is enabled for table dbo.TEmployees


GGSCI (WIN-UGCMTTOTKE7) 13> add trandata dbo.TRecords


2014-07-21 14:46:04  WARNING OGG-01483  The key for table [oa_test.dbo.TRecords] contains one or more variable length co
lumns.  These columns may not have their pre-images written to the transaction log during updates.  Please use KEYCOLS to specify a key for Oracle GoldenGate to use on this table.


Logging of supplemental log data is enabled for table dbo.TRecords


GGSCI (WIN-UGCMTTOTKE7) 14> edit params oa
編輯如下內容:
defsfile c:\ogg\dirdef\oa.def
sourcedb oa_test,userid yunwei,password "******"
table dbo.TEmployees;
table dbo.TRecords;
執行生成表結構定義檔案
C:\OGG>defgen paramfile c:\ogg\dirprm\oa.prm
將新生成的def檔案拷貝到目標端! 檢視mssql資料庫處於完全恢復模式。
GGSCI (WIN-UGCMTTOTKE7) 3> edit param mgr
填寫如下內容:
port 7809
GGSCI (WIN-UGCMTTOTKE7) 5> start mgr

Starting Manager as service ('GGSMGR')...
Service started.
GGSCI (WIN-UGCMTTOTKE7) 8> info all

Program     Status      Group       Lag at Chkpt  Time Since C
MANAGER     RUNNING

GGSCI (WIN-UGCMTTOTKE7) 9> add extract emssql,tranlog,begin now
EXTRACT added.

GGSCI (WIN-UGCMTTOTKE7) 10> add rmttrail ./dirdat/ms,extract emssql
RMTTRAIL added.
GGSCI (WIN-UGCMTTOTKE7) 11> edit params emssql

編輯內容如下: EXTRACT EMSSQL
SOURCEDB oa_test,userid yunwei,password "******"
TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT
RMTHOST 192.168.2.34, MGRPORT 7809
RMTTRAIL ./dirdat/ms
TABLE dbo.TEmployees;
TABLE dbo.TRecords; 執行全庫備份。然後啟動程序。並且 trunc. log on chkpt要設定為false

目標端MYSQL配置:

安裝:

可參考mysql版本的OGG安裝步驟,大同小異

配置複製程序:

GGSCI (localhost.localdomain) 2> dblogin sourcedb [email protected]:3306,userid root,password xxxx
Successfully logged into database.
GGSCI (localhost.localdomain) 3> add replicat rmysql,exttrail ./dirdat/ms,nodbcheckpoint
REPLICAT added.

GGSCI (localhost.localdomain) 4> edit params rmysql

填寫如下內容: replicat rmysql
TARGETDB [email protected]:3306,userid root,password xxx
assumetargetdefs
sourcedefs ./dirdef/oa.def
reperror default,discard
discardfile ./dirrpt/rmysql.dsc,append,megabytes 100
MAP dbo.TEmployees,TARGET oa.temployees,keycols(Employee_ID);
MAP dbo.TRecords,TARGET oa.trecords,keycols(Record_ID),colmap(usedefaults,RinOut=inOut);

至此!配置完成。 接下來就是進行insert update delete測試。

小插曲:

Sql  server表中的bit資料型別在抓換到mysql中時為bool(tinyint)型別,這時候ogg會報錯,提示型別不匹配。需要手動將mysql中的相關型別設定為char(1)就OK了。


相關推薦

Oracle GoldenGate SqlServer資料同步Mysql資料庫

專案描述: 將SqlSever 2008 R2中的資料實時或定時的同步到Mysql 5.6資料庫中。 OS DATABASE 來源資料庫 Window 2008 MS SQL 2008 R2 目標資料庫 Linux  MySQL 5.6 實施方案: 如何初始化資料?

Oracle GoldenGate --異構平臺同步MysqlOracle

Oracle GoldenGate 異構平臺同步(Mysql到Oracle) 如圖所示:源端採用Mysql庫,目標端採用Oracle庫 一、OGG安裝配置(源端) 1、OGG下載 [[email protected] ogg_ms]$ u

SODBASE實時大資料基礎(一):實時同步Mysql資料庫到Kafka

在實際大資料工作中,常常有實時監測資料庫變化或實時同步資料到大資料儲存,解決大資料實時分析的需求。同時,增量同步資料庫資料相比全量查詢也減少了網路頻寬消耗。本文以Mysql的bin-log到Kafka為例,使用Canal Server,通過SODBASE引擎不用寫程式就可以

[jjzhu學java]solr4.9同步mysql資料

Solr是一個高效能,採用Java5開發,基於Lucene的全文搜尋伺服器。同時對其進行了擴充套件,提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件並對查詢效能進行了優化,並且提供了一個完善的功能管理介面,是一款非常優秀的全文搜尋引擎。       

oracle資料庫表結構和資料遷移mysql資料庫

採用的是Navicat 11.2.7版本客戶端工具自帶的資料傳輸功能 1、首先在Navicat中配置有關oracle資料庫的規則檔案,也就是配置oracle 的oci.dll檔案,配置路徑截圖如下: 2、在Navicat中配置oracle資料庫連結,也就是資料來源. 3

用盡洪荒力整理的Mysql資料庫32條軍規(轉)

用盡洪荒之力整理的Mysql資料庫32條軍規(轉) 今天上午吐血整理了Oracle SQL效能優化的40條軍規,其中很多規則也是適用於Mysql的,結果今晚發現這一篇文章——用盡洪荒之力整理的Mysql資料庫32條軍規,和我的竟有異曲同工之妙,當然不同的是這是由具有12年Java開發經驗的老

利用Python將Excel表中的資料匯入Mysql資料庫

 python操作Excel 需要匯入xlrd包,可以通過pip install xlrd 一鍵安裝。 #coding=utf-8 ''' python 將指定目錄下的excel檔案匯入到資料庫中 ''' # 引入資料庫包 import pymysql # 引入操作excel包

Shell_mysql命令以及將資料匯入Mysql資料庫

連線MYSQL資料庫 mysql -h${db_ip} -u${db_user} -p${db_pawd} -P${db_port} -D${db_name} -s -e "${sql}"   db_ip:主機地址   db_user :資料庫使用者名稱   db_pwd:密碼   db

利用pandas的to_sql將資料插入MySQL資料庫和所踩過的坑

前言 最近做一個Django web的專案要把爬取的一些資料存入MySQL中,資料儲存為csv格式,想到pandas中有to_sql這個方法,就採用它了 準備:連線MySQL資料庫所需的第三方包pymysql、sqlalchemy(pip安裝即可) 實現 from sql

如何將datagridview中修改的資料同步資料庫

C#WINFORM問題DATAGRIDVIEW中COMBOBOX選項改變觸發事件用哪個方法C#WINFORM問題DATAGRIDVIEW中COMBOBOX選項改變觸發事件用哪個方法C#WINFORM問題DATAGRIDVIEW中COMBOBOX選項改變觸發事件用哪個方法C#W

將scrapy爬蟲框架爬取到的資料存入mysql資料庫

使用scrapy爬取網站資料,是一個目前來說比較主流的一個爬蟲框架,也非常簡單。 1、建立好專案之後現在settings.py裡面把ROBOTSTXT_OBEY的值改為False,不然的話會預設遵循robots協議,你將爬取不到任何資料。 2、在爬蟲檔案裡開始寫

python中CSV檔案資料存入mysql資料庫

使用pandas讀取檔案 自定義函式新增資料 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/10/20 10:32 # @Author : deli Guo # @Site :

如何使用SQLyog將大量資料匯入mysql資料庫

之前是通過SQLyog將excel檔案儲存為csv檔案,然後匯入mysql資料庫,不過由於資料量大,建表語句寫的很麻煩(先copy Excel橫表的第一行(屬性那一行),然後轉置,到txt檔案,寫建表語句,加逗號),昨天用一天的時間琢磨這個問題,在前輩的指點下,發現這個能匯

MySQL—— 使用Hibernate連線MySQL資料庫MySQL連線超時斷開的問題

最近讓人頭疼的一個問題,就是伺服器在不確定的時間點會出現關於資料庫連線的Exception,大致的Exception如下: org.hibernate.util.JDBCExceptionReporter - SQL Error:0, SQLState: 08S01 o

kettlemongodb資料同步

需求: 1.源資料庫新增一條記錄,目標庫同時新增一條記錄; 2.源資料庫修改一條記錄,目標庫同時修改該條記錄; 示例用到三個Kettle元件   下面詳細說下每個元件的配置 Source: 本示例連線的是Mongodb資料庫,四個欄位,ID預設為主鍵,_

資料mysql資料庫

Ctrl + C excel資料來源 Ctrl + V 貼上到資料庫表中 1、新建一個臨時表 2、貼上資料到臨時表中 注意:複製貼上方法,必須保證貼上的excel裡面資料列和資料庫表中的欄位個數相同,否則報錯 編寫sql,使兩個表的資料同步 INSE

Python3將excel中的資料匯入mysql資料庫

import pymysql # xlrd 為 python 中讀取 excel 的庫,支援.xls 和 .xlsx 檔案 # import xlrd # openpyxl 庫支援 .xlsx 檔案的讀寫 from openpyxl.reader.excel import

python3中將資料存入Mysql資料庫

  近期自己練習爬取知乎評論資料,本來打算將資料存入ES,但是因為ES我之前也從來沒有接觸過,所以決定現將資料存入到Mysql資料庫中,網上有很多帖子,但是很多都是適用於python2.x版本,python3中沒有mysqldb,需要使用pymysql,使用如下語句來連結資料

網頁資料儲存mysql資料庫過程問題及解決

#coding:utf-8 from bs4 import BeautifulSoup import pymysql import sqlite3 import sys import importlib importlib.reload(sys) html = """ &l

Nodejs指令碼實現從mongo資料庫遷移資料mysql資料庫

weibo.jsvar mongoose = require('mongoose'); var connection = mongoose.createConnection('mongodb://12