惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Spread Privacy
Spread Privacy
H
Hacker News: Front Page
PCI Perspectives
PCI Perspectives
Webroot Blog
Webroot Blog
罗磊的独立博客
H
Heimdal Security Blog
TaoSecurity Blog
TaoSecurity Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
Last Week in AI
Last Week in AI
美团技术团队
Help Net Security
Help Net Security
The Hacker News
The Hacker News
C
Cisco Blogs
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
The Register - Security
The Register - Security
IT之家
IT之家
WordPress大学
WordPress大学
Jina AI
Jina AI
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Help Net Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
NISL@THU
NISL@THU
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
Scott Helme
Scott Helme
V
Vulnerabilities – Threatpost
B
Blog
T
Tenable Blog
博客园 - 三生石上(FineUI控件)
T
The Exploit Database - CXSecurity.com
S
Security Affairs
小众软件
小众软件
Hacker News: Ask HN
Hacker News: Ask HN
Security Latest
Security Latest
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
W
WeLiveSecurity
A
Arctic Wolf
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence

博客园 - margiex

OGG的一些常用网址 ogg初始化抽取的快速配置方法一: 将存量数据落地为标准trail 利用GoldenGate 21实现mysql8远程DDL同步 GoldenGate 21c发布 OGG配置文件中参数化的运用 GoldenGate基于中间队列文件的初始化 一次linux中毒,挖矿病毒 goldengate新版本中查看日志读取点 ogg同步Oracle数据库用户验证 Oracle GoldenGate现在支持从 PostgreSQL 捕获数据 GoldenGate 2020.7 发布新特性 - 19.1.0.0.200714 GoldenGate如何修改抽取进程的读取点? 使用AutoHotKey提升工作效率 InnoDB和NDB,MySQL群集和InnoDB群集之间有什么区别? GoldenGate 19.1实时文本文件加载攻略 windows 10 excel 打开超连接提示 组织策略阻止... 验证ogg同步数据库表无主键表且目标表包含隐藏字段 配置ogg从Oracle到PostgreSQL的同步复制json数据 pi
GoldenGate在MySQL 集群中的应用
margiex · 2020-08-24 · via 博客园 - margiex

简介

MySQL Cluster 是由MySQL官方提供的一个集群平台,由一组计算机构成,适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。

MySQL NDB cluster主要由三种类型的服务组成:

  • NDB Management Server:管理服务器主要用于管理cluster中的其他类型节点(Data Node和SQL Node),通过它可以配置Node信息,启动和停止Node。
  • SQL Node:在MySQL Cluster中,一个SQL Node就是一个使用NDB引擎的MySQL server进程,用于供外部应用提供集群数据的访问入口。
  • Data Node:用于存储集群数据;系统会尽量将数据放在内存中。

MySQL Cluster集群 的架构如下:

clip_image002

针对MySQL集群,可以使用Oracle GoldenGate进行数据的实时抽取和投递。本文就MySQL Cluster的安装及GoldenGate抽取配置进行简单说明。

GoldenGate建议部署架构

clip_image004

以上架构中,OGG部署在NFS存储上,任何一个SQL节点可以启动OGG,并在本节点当掉之后,从其它的SQL节点也可以继续运行OGG,从而确保OGG在MySQL集群中的高可用。本测试中,为了简化步骤,直接将OGG部署到SQL Node1上,未实现OGG的高可用。

配置步骤简要说明

  • 安装MySQL集群
    • 安装管理节点
    • 安装数据节点
    • 安装sql节点
  • OGG安装及配置
  • 测试增量数据捕获

安装MySQL NDB Cluster

测试环境:

Mgm-server:mgt, 192.168.164.10

Sql node 1: sql1, 192.168.164.11

Sql node 2: sql2, 192.168.164.12

Data node1: data1, 192.168.164.21

Data node2: data2, 192.168.164.22

每个节点先关闭防火墙:

# systemctl disable firewalld

并根据上面的主机名和IP配置/etc/hosts。

下载MySQL NDB Cluster:https://dev.mysql.com/downloads/cluster/

clip_image006

所有节点使用同一份安装介质。

安装管理节点

# tar -xvf mysql-cluster-gpl-7.5.16-linux-glibc2.12-x86_64.tar.gz

# mv mysql-cluster-gpl-7.5.16-linux-glibc2.12-x86_64 /usr/local/mysql

# cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin

# mkdir /data/mysql-cluster

# vi /data/mysql-cluster/config.ini

config.ini 的配置:

[ndbd default]

NoOfReplicas=1

DataMemory=512M

IndexMemory=18M

[ndb_mgmd]

Nodeid=1

HostName=mgt

DataDir=/data/mysql-cluster

[ndbd]

Nodeid=11

HostName=data1

DataDir=/data/mysql/db_file

[ndbd]

Nodeid=12

HostName=data2

DataDir=/data/mysql/db_file

[mysqld]

Nodeid=21

HostName=sql1

[mysqld]

Nodeid=22

HostName=sql2

初始化管理节点:

#/usr/local/bin/ndb_mgmd -f /data/mysql-cluster/config.ini –initial

安装Data node和SQL node

以下步骤data和sql节点操作一样。

新增mysql用户和组,并安装软件

#groupadd mysql

#useradd -g mysql -s /bin/false mysql

# tar -xvf mysql-cluster-gpl-7.5.16-linux-glibc2.12-x86_64.tar.gz

# mv mysql-cluster-gpl-7.5.16-linux-glibc2.12-x86_64 /usr/local/mysql

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

# mkdir -p /data/mysql/db_file

# mkdir -p /data/mysql/log

# mkdir -p /data/mysql/log_bin

# chown -R mysql:mysql /data/mysql

针对data node

编辑/etc/my.cnf

[mysqld]

Ndbcluster

ndb-connectstring=mgt

[mysql_cluster]

ndb-connectstring=mgt

启动进程

[root@data1 ~]# /usr/local/mysql/bin/ndbd

2020-04-14 21:48:09 [ndbd] INFO -- Angel connected to 'mgt:1186'

2020-04-14 21:48:09 [ndbd] INFO -- Angel allocated nodeid: 11

针对sql node

编辑/etc/my.cnf

[mysqld]

basedir=/usr/local/mysql/

datadir=/data/mysql/db_file

socket=/usr/local/mysql/mysql.sock

log-error=/data/mysql/log/sqlnode.err

ndbcluster

ndb-connectstring=mgt

default_storage_engine=ndbcluster # Define default Storage Engine used by MySQL

#以下参数用于OGG解析日志时使用

server-id=1

skip-slave-start=true

log-bin=/data/mysql/log_bin/log-bin.bin

log-bin-index=/data/mysql/log_bin/log-bin.index

binlog_format=ROW

[mysql_cluster]

ndb-connectstring=mgt

[client]

socket=/usr/local/mysql/mysql.sock

初始化 MySQL:

/usr/local/mysql/bin/mysqld –initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/db_file

注意:初始化数据库会在日志文件中出现数据库的root密码,后面登录mysql时会用到。

启动MySQL节点:

# /etc/init.d/mysql.server start

登录mysql并修改root的密码为”root”,(略过)

在管理节点上查看所有节点的状态

clip_image007

至此,MySQL NDB Cluster安装完成。

创建测试库表

mysql>create database testdb;

mysql>create table testdb.tb1(id int primary key, name varchar(50)) engine=ndb;

mysql>create table testdb.tb2(id int , name2 varchar(50)) engine=ndb;

OGG安装及配置

GoldenGate现在可以远程抽取和投递到MySQL数据库,理论上不需要安装到MySQL节点上。在本示例中,我们将OGG部署到sql node1上。

OGG安装

下载OGG for mysql :

https://www.oracle.com/middleware/technologies/goldengate-downloads.html

clip_image009

安装OGG

# unzip 191003_ggs_Linux_x64_MySQL_64bit.zip

# tar –xvf ggs_Linux_x64_MySQL_64bit.tar –C /data/share/ogg

# cd /data/share/ogg

[root@localhost ogg]# ./ggsci

GGSCI 1>create subdirs

GGSCI 2>dblogin sourcedb test@localhost:3306,userid root,password root

OGG配置

配置MGR进程:

GGSCI 3> edit param mgr

port 7809

配置extract进程:

GGSCI 4> add extract ex1,tranlog,begin now

GGSCI 5> add exttrail ./dirdat/es,extract ex1

GGSCI 5> edit param ex1

extract ex1

setenv(MYSQL_UNIX_PORT=/usr/local/mysql/mysql.sock)

sourcedb testdb,userid root,PASSWORD root

exttrail ./dirdat/es

tranlogoptions altlogdest /data/mysql/log_bin/log-bin.index

gettruncates

TABLE testdb.*;

增量数据捕获测试

在其中一个节点上操作数据

clip_image011

在OGG中查看捕获情况

clip_image013

可以看到,OGG可以顺利的捕获到MySQL集群中的增量数据。

小结

通过本文的验证,可以看到,Oracle GoldenGate可以按普通MySQL一样的部署方式,捕获MySQL集群的增量数据或从其它数据源将数据写入到MySQL集群,从而利用MySQL集群带来的分布式性能和高可用特性。