tungsten安装mysql到oracle复制

来源:互联网 发布:淘宝支付不了钱怎么办 编辑:程序博客网 时间:2024/05/16 08:08
以root用户登录
关闭防火墙
添加用户tungsten
[root@host180 ~]# useradd -g oinstall tungsten
[root@host180 ~]# passwd tungsten

修改文件/etc/security/limits.conf文件,添加如下内容
tungsten    -    nofile     65535
tungsten    -    npc        65535

以tungsten用户登录
生成ssh公钥
[tungsten@host180 ~]$ ssh-keygen -t rsa

将本机免密
[tungsten@host180 .ssh]$ cat id_rsa.pub >> authorized_keys

执行远程主机免密
[tungsten@host180 .ssh]$ cat ~/.ssh/id_rsa.pub | ssh tungsten@host222 'cat - >> ~/.ssh/authorized_keys'
测试远程主机免密
[tungsten@host180 .ssh]$ ssh host222
在远程主机上操作如下命令
[tungsten@host222 ~]$ cat ~/.ssh/id_rsa.pub | ssh tungsten@host180 'cat - >> ~/.ssh/authorized_keys' 


修改文件/home/tungsten/.bash_profile,添加oracle环境配置
export TMP=/tmp
export ORACLE_HOSTNAME=localhost.localdomain
export ORACLE_UNQNAME=ORCL
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=ORCL
PATH=/usr/sbin:$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
alias cdob='cd $ORACLE_BASE'
alias cdoh='cd $ORACLE_HOME'
alias tns='cd $ORACLE_HOME/network/admin'
alias envo='env | grep ORACLE'
umask 022


切换oracle用户启动oracle监听、服务
以sysdba身份登录oracle
[oracle@host180 tungsten]$ sqlplus / as sysdba

创建mydemo表空间
create tablespace mydemo datafile '/u01/app/oracle/oradata/ORCL/mydemo.dbf' size 200m autoextend on extent management local segment space management auto;

创建用户test,对应mysql要复制的test库
SQL> CREATE USER test IDENTIFIED BY 123456 DEFAULT TABLESPACE MYDEMO QUOTA UNLIMITED ON MYDEMO;
为用户授权
SQL> grant connect to test;  
SQL> grant all privileges to test;

创建tungsten用户
SQL> create user tungsten identified by 123456 default tablespace mydemo quota unlimited on mydemo;

为tungsten用户授权
SQL> grant connect to tungsten;
SQL> grant all privileges to tungsten;


切换至tungsten用户,执行命令
[tungsten@host180 ~]$ sqlplus / as sysdba

创建tungsten_mysql2oracle用户,mysql2oracle为replicator服务名
SQL> create user tungsten_mysql2oracle identified by 123456 default tablespace mydemo quota unlimited on mydemo;

为用户授权
SQL> grant connect to tungsten_mysql2oracle;
SQL> grant all privileges to tungsten_mysql2oracle;


进入目录/home/tungsten/tungsten-soft/tungsten-replicator-5.0.0/tungsten-replicator,执行命令
[tungsten@host180 tungsten-replicator]$ ./bin/ddlscan -user tungsten -url 'jdbc:mysql:thin://host222:3306/test' \
>  -pass tungsten -template ddl-mysql-oracle.vm -db test > test.ddl

生成test.ddl文件后执行命令
[tungsten@host180 tungsten-replicator]$ cat test.ddl | sqlplus sys/Admin123456 as sysdba

安装mysql-master,进入目录/home/tungsten/tungsten-soft/tungsten-replicator-5.0.0,执行命令
./tools/tpm install mysql2oracle \
--info \
--master=host222 \
--install-directory=/home/tungsten/continuent \
--replication-user=tungsten \
--replication-password=tungsten \
--enable-heterogeneous-master=true \
--skip-validation-check=MySQLMyISAMCheck \
--start-and-report

拷贝orcle的jdbc jar包到tungsten中,进入目录/u01/app/oracle/product/11.2.0/db_1/jdbc/lib,执行命令
[tungsten@host180 lib]$ cp ojdbc6.jar /home/tungsten/tungsten-soft/tungsten-replicator-5.0.0/tungsten-replicator/lib/ojdbc6.jar

设置oracle监听
netca
删除原有监听,重新创建一个TCP的ORCL监听,修改文件/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=host180)(PORT=1521))):主要是HOST
拷贝/home/tungsten/tungsten-soft/tungsten-replicator-5.0.0/tungsten-replicator/samples/conf/appliers/oracle.tpl至
/home/tungsten/tungsten-soft/tungsten-replicator-5.0.0/tungsten-replicator/samples/conf/extractors目录


安装oracle-slave,执行命令
./tools/tpm install mysql2oracle \
--info \
--topology=master-slave \
--members=host180 \
--master=host222 \
--datasource-type=oracle \
--datasource-oracle-service=ORCL \
--datasource-user=tungsten_mysql2oracle\
--datasource-password=123456 \
--install-directory=/home/tungsten/continuent \
--enable-heterogenous-slave=true \
--svc-applier-filters=dropstatementdata \
--skip-validation-check=InstallerMasterSlaveChec\
--start

如果需要过滤mysql端不必同步的库,则需要添加命令:
./tools/tpm update mysql2oracle \
--repl-svc-applier-filters=replicate \
--property=replicator.filter.replicate.ignore=test11,test22 



注意:mysql同步到oracle时可能产生乱码,这是因为oracle在linux上安装完成之后需要修改oracle字符集为UTF8,如果已经为UTF8的话可以不用修改

查看字符集

select * from nls_database_parameters;

其中字段‘NLS_CHARACTERSET’表示当前数据库实例的字符集;

修改步骤:

sqlplus / as sysdba登录客户端执行如下命令

SQL> shutdown immediate;

SQL> startup mount;

SQL> alter system enable restricted session;

SQL> alter system set job_queue_processes=0;

SQL> alter database open;

SQL> alter database character set internal_use AL32UTF8(或者是UTF8);

SQL> shutdown immediate;

SQL> startup

SQL>alter system disable restricted session;

 

再次查看修改好了

SQL>  select * from nls_database_parameters;


同时需要修改用户环境变量.bash_profile文件:
添加或修改
export NLS_LANG=AMERICAN_AMERICA.UTF8

0 0
原创粉丝点击