ogg mysql_ogg12 mysql to oracle 单向同步

环境:

192.168.91.137 (Mysql) —> 192.168.91.138 ( Oracle )

版本:

操作系统:centOS 6.5

Mysql: 5.7.17

Oracle: 11.2.0.4

goldengate:

12.2.0.1 for oracle

12.2.0.1 for mysql

一、源端安装配置【Mysql】

1、vim /etc/profile

export MYSQL_HOME=/usr/local/mysql

export PATH=$PATH:$MYSQL_HOME/bin

source /etc/profile

2、添加一个mysql组

groupadd -g 1000 mysql

passwd mysql

3、添加一个用户

useradd -u 1000 -g mysql mysql

passwd mysql

4、解压缩下载的包

cd /usr/local/

tar -xzvf /usr/local/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

tar -xzvf /usr/local/mysql-test-5.7.17-linux-glibc2.5-x86_64.tar.gz

5、然后 mv 解压后的包,重命名mysql

mv mysql-5.7.17-linux-glibc2.5-x86_64 mysql

6、进入mysql包中, 给这个包授权 给mysql

chown -R mysql:mysql /usr/local/mysql

chmod -R 755 /usr/local/mysql

7、进入mysql文件名  basedir 为mysql 的路径, datadir 为mysql的 data 包,里面存放着mysql自己的包, 如user

[root@ogg1 local]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

2017-04-07T02:50:57.483315Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

2017-04-07T02:51:00.090256Z 0 [Warning] InnoDB: New log files created, LSN=45790

2017-04-07T02:51:00.505229Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.

2017-04-07T02:51:00.708487Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 08775cba-1b3d-11e7-8520-000c29439f01.

2017-04-07T02:51:00.733003Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.

2017-04-07T02:51:00.735871Z 1 [Note] A temporary password is generated for root@localhost: EdgZSS;6=hqD

注:此处需要注意记录生成的临时密码,如上文:

8、安装SSL

[root@ogg1 local]# /usr/local/mysql/bin/mysql_ssl_rsa_setup  --datadir=/usr/local/mysql/data

Generating a 2048 bit RSA private key

.......................................................................................+++

...............................................+++

writing new private key to 'ca-key.pem'

-----

Generating a 2048 bit RSA private key

....................................+++

.........+++

writing new private key to 'server-key.pem'

-----

Generating a 2048 bit RSA private key

................................................................................................................................................................+++

..............................................................................+++

writing new private key to 'client-key.pem'

9、进入support-files,拷贝参数文件

[root@ogg1 local]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

[root@ogg1 local]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

10、修改配置文件中的内容

[root@ogg1 local]# vim /etc/init.d/mysql

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

[root@ogg1 local]# vim /etc/my.cnf

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

port=3306

socket=/tmp/mysql.sock

character-set-server=utf8

log_timestamps=system

user=mysql

binlog_format=row

server-id=1

log-bin=mysql-bin

注:如果vim /etc/my.cnf 只配置 log-bin=mysql-bin,没配置server-id=1。会报如下错误

Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/data/ogg1.pid).

11、启动mysql

[root@ogg1 local]# /usr/local/mysql/bin/mysqld_safe --user=mysql &

12、另开个窗口,输入临时密码:EdgZSS;6=hqD (见第七步操作最后)

[root@ogg1 ~]# mysql -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 3

Server version: 5.7.17

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

13、修改密码

mysql> set password=password('manager2017');

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

14、查看设置的参数是否生效:

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000001 |      154 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

mysql> show variables like '%log_bin%';

+---------------------------------+---------------------------------------+

| Variable_name                   | Value                                 |

+---------------------------------+---------------------------------------+

| log_bin                         | ON                                    |

| log_bin_basename                | /usr/local/mysql/data/mysql-bin       |

| log_bin_index                   | /usr/local/mysql/data/mysql-bin.index |

| log_bin_trust_function_creators | OFF                                   |

| log_bin_use_v1_row_events       | OFF                                   |

| sql_log_bin                     | ON                                    |

+---------------------------------+---------------------------------------+

6 rows in set (0.01 sec)

mysql> show variables like '%binlog%';

+-----------------------------------------+----------------------+

| Variable_name                           | Value                |

+-----------------------------------------+----------------------+

| binlog_cache_size                       | 32768                |

| binlog_checksum                         | CRC32                |

| binlog_direct_non_transactional_updates | OFF                  |

| binlog_error_action                     | ABORT_SERVER         |

| binlog_format                           | ROW                  |

| binlog_group_commit_sync_delay          | 0                    |

| binlog_group_commit_sync_no_delay_count | 0                    |

| binlog_gtid_simple_recovery             | ON                   |

| binlog_max_flush_queue_time             | 0                    |

| binlog_order_commits                    | ON                   |

| binlog_row_image                        | FULL                 |

| binlog_rows_query_log_events            | OFF                  |

| binlog_stmt_cache_size                  | 32768                |

| innodb_api_enable_binlog                | OFF                  |

| innodb_locks_unsafe_for_binlog          | OFF                  |

| log_statements_unsafe_for_binlog        | ON                   |

| max_binlog_cache_size                   | 18446744073709547520 |

| max_binlog_size                         | 1073741824           |

| max_binlog_stmt_cache_size              | 18446744073709547520 |

| sync_binlog                             | 1                    |

+-----------------------------------------+----------------------+

20 rows in set (0.01 sec)

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

mysql> create database test;

Query OK, 1 row affected (0.07 sec)

mysql> create table t1 (name char(10));

Query OK, 0 rows affected (0.13 sec)

mysql> show table status from test like 't1';

+-------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+

| Name  | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation       | Checksum | Create_options | Comment |

+-------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+

| t1    | InnoDB |      10 | Dynamic    |    0 |              0 |       16384 |               0 |            0 |         0 |           NULL | 2017-04-07 14:56:21 | NULL        | NULL       | utf8_general_ci |     NULL |                |         |

+-------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+

1 row in set (0.00 sec)

二、安装mysql版本的goldengate

下载相应的OGG软件。http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html

源端用mysql用户安装gg:

1、设置环境变量

vi .bash_profile

export GG_HOME=/home/mysql/ggs

export MYSQL_HOME=/usr/local/mysql

export LD_LIBRARY_PATH=$MYSQL_HOME/lib:/usr/lib:/usr/local/lib

export PATH=$GG_HOME:$PATH

source ~/.bash_profile

[mysql@ogg1]$ unzip ggs_Linux_x64_MySQL_64bit.zip

[mysql@ogg1]$ mkdir -p ./ggs

[mysql@ogg1]$ tar -xvf ggs_Linux_x64_MySQL_64bit.tar -C ./ggs

[mysql@ogg1]$ cd ./ggs

2、配置gg参数

[mysql@ogg1 ggs]$ ./ggsci

Oracle GoldenGate Command Interpreter for MySQL

Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401

Linux, x64, 64bit (optimized), MySQL Enterprise on Dec 11 2015 16:23:51

Operating system character set identified as UTF-8.

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

GGSCI (ogg1) 1> create subdirs

Creating subdirectories under current directory /home/mysql/ggs

Parameter files                /home/mysql/ggs/dirprm: created

Report files                   /home/mysql/ggs/dirrpt: created

Checkpoint files               /home/mysql/ggs/dirchk: created

Process status files           /home/mysql/ggs/dirpcs: created

SQL script files               /home/mysql/ggs/dirsql: created

Database definitions files     /home/mysql/ggs/dirdef: created

Extract data files             /home/mysql/ggs/dirdat: created

Temporary files                /home/mysql/ggs/dirtmp: created

Credential store files         /home/mysql/ggs/dircrd: created

Masterkey wallet files         /home/mysql/ggs/dirwlt: created

Dump files                     /home/mysql/ggs/dirdmp: created

GGSCI (ogg1) 2> edit params mgr

GGSCI (ogg1) 3> view params mgr

PORT 7809

autorestart extract *,waitminutes 2,resetminutes 5

GGSCI (ogg1) 4> start mgr

Manager started.

GGSCI (ogg1) 5> info mgr

Manager is running (IP port ogg1.7809, Process ID 11623).

3、配置extract进程

GGSCI (ogg1) 6> edit params extr01

GGSCI (ogg1) 7> view params extr01

extract extr01

setenv (MYSQL_HOME="/usr/local/mysql")

tranlogoptions altlogdest /usr/local/mysql/data/mysql-bin.index

sourcedb test@localhost:3306,userid root,password manager2017

exttrail ./dirdat/e2

dynamicresolution

gettruncates

table test.t1;

GGSCI (ogg1) 8> add extract extr01,tranlog,begin now

EXTRACT added.

GGSCI (ogg1) 9> add exttrail ./dirdat/e2,extract extr01

EXTTRAIL added.

4、配置推送进程

GGSCI (ogg1) 10> edit params pump01

GGSCI (ogg1) 11> view params pump01

extract pump01

rmthost 192.168.91.138,mgrport 7809

rmttrail /u01/app/goldengate/dirdat/e2

passthru

gettruncates

table test.t1;

GGSCI (ogg1) 12> add extract pump01,exttrailsource ./dirdat/e2

EXTRACT added.

GGSCI (ogg1) 13> add rmttrail /u01/app/goldengate/dirdat/e2,extract pump01

RMTTRAIL added.

5、配置defgen (异构数据库需要):

GGSCI (ogg1) 14> edit params defgen

GGSCI (ogg1) 15> view params defgen

defsfile /home/mysql/ggs/dirdef/defgen.prm

sourcedb test@localhost:3306, userid root,password manager2017

table test.t1;

[mysql@ogg1 ggs]$ ./defgen  paramfile ./dirprm/defgen.prm

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

Oracle GoldenGate Table Definition Generator for MySQL

Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401

Linux, x64, 64bit (optimized), MySQL Enterprise on Dec 11 2015 17:21:39

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

Starting at 2017-04-07 15:28:50

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

Operating System Version:

Linux

Version #1 SMP Fri Nov 22 03:15:09 UTC 2013, Release 2.6.32-431.el6.x86_64

Node: ogg1

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: 11704

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

**            Running with the following parameters                  **

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

defsfile /home/mysql/ggs/dirdef/defgen.prm

sourcedb test@localhost:3306, userid root,password ***

table test.t1;

Retrieving definition for test.t1.

Definitions generated for 1 table in /home/mysql/ggs/dirdef/defgen.prm.

三、安装配置目标端GG【Oracle】

1、安装oracle数据库软件实例,此处略过。

2、安装OGG软件

下载相应的OGG软件。http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html

[root@ogg2 ~]# su - root

[root@ogg2 ~]# mkdir -p /u01/app/goldengate

[root@ogg2 ~]# chown -R oracle:oinstall /u01/app/goldengate

[root@ogg2 ~]# su - oracle

[oracle@ogg2 ~]$ ll unzip fbo_ggs_Linux_x64_shiphome.zip

[oracle@ogg2 ~]$ cd /home/oracle/fbo_ggs_Linux_x64_shiphome/Disk1

[oracle@ogg2 Disk1]$ sed -i "s/INSTALL_OPTION=/INSTALL_OPTION=ORA11g/" /home/oracle/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp

[oracle@ogg2 Disk1]$ sed -i "s|SOFTWARE_LOCATION=|SOFTWARE_LOCATION=/u01/app/goldengate|" /home/oracle/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp

[oracle@ogg2 Disk1]$ sed -i "s/START_MANAGER=/START_MANAGER=false/" /home/oracle/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp

[oracle@ogg2 Disk1]$ ./runInstaller -silent -responseFile /home/oracle/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp

3、配置环境变量

3.1 配置oracle用户的环境变量

[oracle@ogg2 Disk1]$ vi ~/.bash_profile

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1

export ORACLE_SID=burton

export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin:$ORACLE_HOME/jdk/bin

export PATH=$ORACLE_HOME/bin:/usr/sbin:$GG_HOME:$PATH

export TNS_ADMIN=$ORACLE_HOME/network/admin

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib

export GG_HOME=/u01/app/goldengate

umask 022

3.2 修改数据库参数

[oracle@ogg2 Disk1]$ source  ~/.bash_profile

[oracle@ogg2 Disk1]$ mkdir -p /u01/app/archivelog

[oracle@ogg2 Disk1]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Apr 7 15:36:30 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> alter system set log_archive_dest_1='LOCATION=/u01/app/archivelog' scope=spfile;

System altered.

SQL> alter system set log_archive_format='burton_%t_%s_%r.arc' scope=spfile;

System altered.

SQL> shutdown immediate

SQL> startup mount

SQL> alter database archivelog;

SQL> alter database open;

SQL> archive log list;

SQL> alter database add supplemental log data;

SQL> select supplemental_log_data_min from v$database;

SUPPLEME

--------

YES

SQL> alter database force logging;

SQL> create tablespace tbs_ogg datafile '/u01/app/oracle/oradata/burton/tbs_ogg.dat' size 200M autoextend on next 5M;

Tablespace created.

SQL> create user ogg identified by ogg default tablespace tbs_ogg temporary tablespace temp account unlock;

User created.

SQL> alter system set enable_goldengate_replication = true scope=both;

System altered.

SQL> alter user ogg quota unlimited on tbs_ogg;

User altered.

SQL> grant connect,resource,dba to ogg;

Grant succeeded.

SQL> grant execute on utl_file to ogg;

Grant succeeded.

3.3 创建测试用户

SQL> create tablespace TESTTBS01 datafile '/u01/app/oracle/oradata/burton/testtbs01.dat' size 100M autoextend on next 5M;

Tablespace created.

SQL> create user test identified by test2017 default tablespace TESTTBS01 temporary tablespace temp;

User created.

SQL> grant connect,resource,select_catalog_role to test;

Grant succeeded.

SQL> conn test/test2017

Connected.

SQL> create table t1 (name char(10));

Table created.

4、OGG配置:

4.1 配置GG必要的路径和配置mgr参数

[oracle@ogg2 ~]$ cd $GG_HOME

[oracle@ogg2 goldengate]$ ./ggsci

Oracle GoldenGate Command Interpreter for Oracle

Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401_FBO

Linux, x64, 64bit (optimized), Oracle 11g on Dec 12 2015 00:54:38

Operating system character set identified as UTF-8.

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

GGSCI (ogg2) 1> create subdirs

Creating subdirectories under current directory /u01/app/goldengate

Parameter files                /u01/app/goldengate/dirprm: created

Report files                   /u01/app/goldengate/dirrpt: created

Checkpoint files               /u01/app/goldengate/dirchk: created

Process status files           /u01/app/goldengate/dirpcs: created

SQL script files               /u01/app/goldengate/dirsql: created

Database definitions files     /u01/app/goldengate/dirdef: created

Extract data files             /u01/app/goldengate/dirdat: created

Temporary files                /u01/app/goldengate/dirtmp: created

Credential store files         /u01/app/goldengate/dircrd: created

Masterkey wallet files         /u01/app/goldengate/dirwlt: created

Dump files                     /u01/app/goldengate/dirdmp: created

GGSCI (ogg2) 2> edit params mgr

GGSCI (ogg2) 3> view params mgr

PORT 7809

autorestart extract *,waitminutes 2,resetminutes 5

ACCESSRULE, PROG REPLICAT, IPADDR 192.168.91.137, ALLOW       // 只在目标端配置,IP地址是对端IP

GGSCI (ogg2) 4> start mgr

4.2 配置GLOBALS:

GGSCI (ogg2) 5> edit params ./GLOBALS

GGSCI (ogg2) 6> view params ./GLOBALS

ggschema ogg

checkpointtable ogg.checkpoint

GGSCI (ogg2) 7> dblogin userid ogg, password ogg

Successfully logged into database.

GGSCI (ogg2) 8> add trandata test.t1

GGSCI (ogg2 as ogg@burton) 9> add checkpointtable ogg.checkpoint

Successfully created checkpoint table ogg.checkpoint.

GGSCI (ogg2 as ogg@burton) 10> edit params repl01

GGSCI (ogg2 as ogg@burton) 11> view params repl01

replicat repl01

sourcedefs /u01/app/goldengate/dirdef/defgen.prm

userid ogg,password ogg

reperror default,discard

discardfile /u01/app/goldengate/dirrpt/repl01.dsc,append,megabytes 50

dynamicresolution

map test.t1, target test.t1;

GGSCI (ogg2 as ogg@burton) 12> dblogin userid ogg,password ogg

Successfully logged into database.

GGSCI (ogg2 as ogg@burton) 13> add replicat repl01,exttrail /u01/app/goldengate/dirdat/e2,checkpointtable ogg.checkpoint

REPLICAT added.

四、启动OGG

1、源端:

拷贝defgen.prm到目标端:

[mysql@mysql2 ggs]$ scp -r /home/mysql/ggs/dirdef/defgen.prm oracle@192.168.91.138:/u01/app/goldengate/dirdef/

2、启动extract和pump进程

GGSCI (ogg1) 1> start extract extr01

Sending START request to MANAGER ...

EXTRACT EXTR01 starting

GGSCI (ogg1) 2> start extract pump01

Sending START request to MANAGER ...

EXTRACT PUMP01 starting

GGSCI (ogg1) 3> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING

EXTRACT     RUNNING     EXTR01      00:00:00      00:00:06

EXTRACT     RUNNING     PUMP01      00:00:00      00:00:01

3、目标端

GGSCI (ogg2) 1> start replicat repl01

Sending START request to MANAGER ...

REPLICAT REPL01 starting

GGSCI (ogg2) 2> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING

REPLICAT    RUNNING     REPL01      00:00:00      00:00:04

五、验证数据

1、源端

[root@ogg1 Desktop]# mysql -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 6

Server version: 5.7.17-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use test

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> insert into t1 values ('abcd');

Query OK, 1 row affected (0.00 sec)

2、目标端

[oracle@ogg2 ~]$ sqlplus test/test2017

SQL*Plus: Release 11.2.0.4.0 Production on Mon Apr 10 10:19:36 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select * from t1;

NAME

----------

abcd

注:异构数据库只支持DML操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值