五、 配置挖掘、传输进程
配置挖掘进程
# ./ggsci
dblogin sourcedb testdb@192.168.14.51:3306,userid odc,password odc
add extract ext_my,tranlog,begin now
add exttrail ./dirdat/my,extract ext_my
edit param ext_my
extract ext_my
setenv (MYSQL_HOME="/mysql/app/")
tranlogoptions altlogdest "/mysql/product/data/mysql-bin.index"
sourcedb testdb@192.168.14.51:3306,userid odc,password odc
exttrail ./dirdat/my
gettruncates
table testdb.*;
配置传输进程
# ./ggsci
dblogin sourcedb testdb@localhost:3306,userid odc,password odc
add extract dmp_my,exttrailsource ./dirdat/my
add rmttrail ./dirdat/my,extract dmp_my
edit param dmp_my
extract dmp_my
rmthost 192.168.14.52,mgrport 7809
rmttrail ./dirdat/my
passthru
gettruncates
table testdb.*;
我们稍后目标端安装完软件再启动。
六、 目标端安装软件
目标端软件的安装方法与 四、源端安装软件 完全一致。
七、 配置应用进程
配置应用进程
dblogin sourcedb testdb@192.168.14.52:3306,userid odc,password odc
add replicat rep_my exttrail ./dirdat/my checkpointtable ogg.ggs_checkpoint
edit param rep_my
replicat rep_my
targetdb testdb@192.168.14.52:3306,userid odc,password odc
--HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/my.dsc,append,megabytes 50
map testdb.*, target testdb.*;
八、 初始化数据
导出testdb
mysqldump -uroot -pmysql --single-transaction --master-data=2 -E -R --databases testdb > testdb.sql
导入testdb
# mysql -uroot -pmysql
mysql> source /tmp/testdb.sql
找到二进制日志点位
# more testdb.sql |grep MASTER_LOG_FILE
-- CHANGE MASTER TO MASTER_LOG_FILE=' mysql-bin.000003', MASTER_LOG_POS= 810;
启动进程
alter extract ext_my,lognum 3,logpos 810
启动挖掘进程
# ./ggsci
start ext_my
如果启动时报错:
2022-04-22T16:49:09.680+0800 WARNING OGG-00769 Oracle GoldenGate Capture for MySQL, ext_my.prm: MySQL Login failed: . SQL error (2002). Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).
2022-04-22T16:49:09.680+0800 ERROR OGG-00770 Oracle GoldenGate Capture for MySQL, ext_my.prm: Failed to connect to MySQL database engine for HOST localhost, DATABASE testdb, USER odc, PORT 3306.
则创建一个软连接,再次启动即可
# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
启动传输进程
# ./ggsci
start dmp_my
启动应用进程
# ./ggsci
start rep_my
至此,MySQL to MySQL 的同步就实施完成了。
九、 注意事项
更改二进制日志位置
修改MySQL 配置文件中的log-bin 变量来修改二进制日志位置可能会导致二进制日志索引文件中有两个不同的路径,这将会导致OGG 异常。
1. 所以更改二进制日志位置需要以下步骤:
2. 停止任何新的DML 操作。
3. 让Extract 完成所有现有二进制日志的处理。
4. 停止Extract 组。
5. 停止MySQL 数据库。
6. 修改log-bin 参数。
7. 启动MySQL 数据库。
8. 使用flush master 或者reset master 从二进制日志索引文件中清除旧的日志条目。
9. 启动Extract 。
配置双向复制
在双向复制中,源系统和目标系统上都有Extract 和Replicat 进程,为了支持这种配置,每个Extract 必须能够过滤本地Replicat 应用的事务,以便它们不会被重新捕获。此外,必须设置AUTO_INCREMENT 列( 主键自增长) ,以便每个系统上的值之前没有冲突。
1. 要在双向复制中过滤掉Replicat 操作,请在每个MySQL 数据库上执行以下步骤:
l 为每个Replicat 配置使用检查点表。Replicat 在每个事务结束时会对该表进行检查点。
l 在Extract 参数文件中使用TRANLOGOPTIONS 的FLITERTABLE 选项指定检查点表的名称。Extract 进程将忽略以对指定检查点表的操作结束的事务。
2. 编辑MySQL 配置文件设置auto_increment_increment 和auto_increment_offset 参数以避免双向操作引起的差异,假设有两个服务器ServerA 和ServerB:
l ServerA:
auto_increment_increment = 2
auto_increment_offset = 1
自增长值为:1,3,5,7,9
l ServerB:
auto_increment_increment = 2
auto_increment_offset = 2
自增长值为:2,4,6,8,10
参数解释:
auto_increment_offset: 自增长字段起始值
auto_increment_increment: 每次自增长值
远程捕获
1. 向OGG 远程捕获用户授予访问权限
mysql > CREATE USER 'username'@'host' IDENTIFIED BY 'Password';
mysql > GRANT ALL PRIVILEGES ON *.* TO 'username'@'host’ WITH GRANT OPTION;
mysql > FLUSH PRIVILEGES;
2. 远程MySQL 服务器的server_id 值应该大于0
mysql > show variables like 'server_id';
如果server_id 的值为0 ,修改my.cnf 以设置server_id 的值大于0.
