KEMBAR78
Tungsten 을활용한 MySQL / Hadoop 동기화 | PDF
Data Sync
2017.01.14 DB Tech팀 전동희
AGENDA
01
1. Mysql to PDA ( ETL)
2. Mysql to Hadoop ( CDC )
3. Mysql to Kafka ( Maxwell, Canal)
4. Mysql to AWS-Redshift (DMS)
1. Mysql to PDA (ETL)
02
• PDA
1. Mysql to PDA (ETL)
03
• Data sync
1. Mysql to PDA (ETL)
03
• ETL job
1. Mysql to PDA (ETL)
04
data sync time
ETL Disadvantages.
• 동기화 해야할 테이블에 Update컬럼 필요.
• delete된 데이터를 찾기 어려움.
• 데이터 변경시 꼭 update 변경
1. Mysql to PDA (ETL)
05
Future Direction
DQ 구축
• 프로그램에서 소프트 delete 로 진행.
• PDA 와 Mysql 데이터 정합성 체크.
• 주기적으로 삭제된 데이터 클린징작업.
2. Mysql to Hadoop ( CDC )
06
Tungsten Replicator
• Data source로 부터 변경된 Data를 Capture하여 Target system에 전송 및 적용
하는 기능을 CDC(Change Data Capture) 라고 하며, 'Tungsten replicator'는 CDC
솔루션 중에 하나.
2. Mysql to Hadoop ( CDC)
07
Tungsten Replicator Status
tungsten@tungst-mdb-prod02-mp tungsten-replicator]$ trepctl -service beta status
Processing status command...
NAME VALUE
---- -----
appliedLastEventId : mysql-bin.000018:0000000243151388;-1 /적용된 bin-log filename & position 정보
appliedLastSeqno : 1397760 /적용된 THL log의 시퀀스 번호
appliedLatency : 1.004 /지연시간
autoRecoveryEnabled : false
autoRecoveryTotal : 0
channels : 1
clusterName : beta /클러스터이름
currentEventId : NONE
currentTimeMillis : 1406271486322
dataServerHost : 10.10.10.80
extensions :
host : 10.10.10.80
latestEpochNumber : 490494 /master와 slave간의 동기화가 잘 되고 있다면 같은 번호를 가지고 있지만,
번호가 틀려지게 되는 data누락으로 인식하고 offline으로 상태값이 변경된다.
masterConnectUri : thl://10.10.52.181:2112/
masterListenUri : thl://10.10.10.80:2113/
maximumStoredSeqNo : 1397760 /적용된 THL log의 시퀀스 번호
resourcePrecedence : 99
rmiPort : 10000
role : slave
seqnoType : java.lang.Long
serviceName : beta
serviceType : local
simpleServiceName : beta
siteName : default
sourceId : 10.10.10.80
state : ONLINE /tungsten replicator의 status값
timeInStateSeconds : 20162.482
transitioningTo :
Finished status command...
2. Mysql to Hadoop ( CDC)
08
Mysql to HDFS 구성도
2. Mysql to Hadoop ( CDC) 09
tungsten csv file list
tungsten csv file contents
2. Mysql to Hadoop ( CDC)
10
Hbase
3.Mysql to Kafka ( Maxwell)
11
Maxwell(http://maxwells-daemon.io/)
• zendesk의 오픈소스
• kafka에 json형식의 데이터 적제.
• 메타정보 동기화 필요 없음. DDL문제점 해결.
• 동기화 대상 DB 로그 포맷을 row-base로 설정.
• ACL에 replication client, replication slave 권한 부여.
• mysqlbinlog-connector-java 를 사용함.
The REPLICATION CLIENT privilege enables the use of SHOW MASTER STATUS and
SHOW SLAVE STATUS. In MySQL 5.6.6 and later, it also enables the use of the
SHOW BINARY LOGS statement.
The REPLICATION SLAVE privilege should be granted to accounts that are used by slave
servers to connect to the current server as their master. Without this privilege,
the slave cannot request updates that have been made to databases on the master server.
3.Mysql to Kafka ( Maxwell)
11
mysql> insert into test.e set m = 4.2341, c = now(3)
, comment = 'I am a creature of light.';
{
"database":"test",
"table":"e",
"type":"insert",
"ts":1477053217,
"xid":23396,
"commit":true,
"position":"master.000006:800911",
"server_id":23042,
"thread_id":108,
"data":{
"id":1,
"m":4.2341,
"c":"2016-10-21 05:33:37.523000",
"comment":"I am a creature of light."
}
}
mysql> update test.e set m = 5.444, c = now(3)
where id = 1;
{
"database":"test",
"table":"e",
"type":"update",
"ts":1477053234,
...
"data":{
"id":1,
"m":5.444,
"c":"2016-10-21 05:33:54.631000",
"comment":"I am a creature of light."
},
"old":{
"m":4.2341,
"c":"2016-10-21 05:33:37.523000"
}
}
4. Mysql to AWS-Redshift (DMS)
11
What is Redshift?
• AWS 의 대용량 분석시스템.
• Compute Node.
• 데이터 보유
• 데이터 처리
• shared nothing.
• Leader Node.
• 커넥션 처리
• SQL 해석
• 실행계획 수립
• 코드 컴파일 등.
4. Mysql to AWS-Redshift (DMS)
11
Redshift 데이터 로드 .
• Loading data from AWS S3 into Redshift
COPY [redshift_table_nm]
FROM '[s3 sam file name]'
CREDENTIALS 'aws_access_key_id=[YOUR-ACCESS-KEY];aws_secret_access_key=[YOUR-SECRET-KEY]'
/*
-- OPTIONS
*/
4. Mysql to AWS-Redshift (DMS)
11
What is DMS .
• AWS 의 Migrationservice.
• ETL , CDC .
Q&A
11
Q & A
11
감사합니다

Tungsten 을활용한 MySQL / Hadoop 동기화

  • 1.
    Data Sync 2017.01.14 DBTech팀 전동희
  • 2.
    AGENDA 01 1. Mysql toPDA ( ETL) 2. Mysql to Hadoop ( CDC ) 3. Mysql to Kafka ( Maxwell, Canal) 4. Mysql to AWS-Redshift (DMS)
  • 3.
    1. Mysql toPDA (ETL) 02 • PDA
  • 4.
    1. Mysql toPDA (ETL) 03 • Data sync
  • 5.
    1. Mysql toPDA (ETL) 03 • ETL job
  • 6.
    1. Mysql toPDA (ETL) 04 data sync time ETL Disadvantages. • 동기화 해야할 테이블에 Update컬럼 필요. • delete된 데이터를 찾기 어려움. • 데이터 변경시 꼭 update 변경
  • 7.
    1. Mysql toPDA (ETL) 05 Future Direction DQ 구축 • 프로그램에서 소프트 delete 로 진행. • PDA 와 Mysql 데이터 정합성 체크. • 주기적으로 삭제된 데이터 클린징작업.
  • 8.
    2. Mysql toHadoop ( CDC ) 06 Tungsten Replicator • Data source로 부터 변경된 Data를 Capture하여 Target system에 전송 및 적용 하는 기능을 CDC(Change Data Capture) 라고 하며, 'Tungsten replicator'는 CDC 솔루션 중에 하나.
  • 9.
    2. Mysql toHadoop ( CDC) 07 Tungsten Replicator Status tungsten@tungst-mdb-prod02-mp tungsten-replicator]$ trepctl -service beta status Processing status command... NAME VALUE ---- ----- appliedLastEventId : mysql-bin.000018:0000000243151388;-1 /적용된 bin-log filename & position 정보 appliedLastSeqno : 1397760 /적용된 THL log의 시퀀스 번호 appliedLatency : 1.004 /지연시간 autoRecoveryEnabled : false autoRecoveryTotal : 0 channels : 1 clusterName : beta /클러스터이름 currentEventId : NONE currentTimeMillis : 1406271486322 dataServerHost : 10.10.10.80 extensions : host : 10.10.10.80 latestEpochNumber : 490494 /master와 slave간의 동기화가 잘 되고 있다면 같은 번호를 가지고 있지만, 번호가 틀려지게 되는 data누락으로 인식하고 offline으로 상태값이 변경된다. masterConnectUri : thl://10.10.52.181:2112/ masterListenUri : thl://10.10.10.80:2113/ maximumStoredSeqNo : 1397760 /적용된 THL log의 시퀀스 번호 resourcePrecedence : 99 rmiPort : 10000 role : slave seqnoType : java.lang.Long serviceName : beta serviceType : local simpleServiceName : beta siteName : default sourceId : 10.10.10.80 state : ONLINE /tungsten replicator의 status값 timeInStateSeconds : 20162.482 transitioningTo : Finished status command...
  • 10.
    2. Mysql toHadoop ( CDC) 08 Mysql to HDFS 구성도
  • 11.
    2. Mysql toHadoop ( CDC) 09 tungsten csv file list tungsten csv file contents
  • 12.
    2. Mysql toHadoop ( CDC) 10 Hbase
  • 13.
    3.Mysql to Kafka( Maxwell) 11 Maxwell(http://maxwells-daemon.io/) • zendesk의 오픈소스 • kafka에 json형식의 데이터 적제. • 메타정보 동기화 필요 없음. DDL문제점 해결. • 동기화 대상 DB 로그 포맷을 row-base로 설정. • ACL에 replication client, replication slave 권한 부여. • mysqlbinlog-connector-java 를 사용함. The REPLICATION CLIENT privilege enables the use of SHOW MASTER STATUS and SHOW SLAVE STATUS. In MySQL 5.6.6 and later, it also enables the use of the SHOW BINARY LOGS statement. The REPLICATION SLAVE privilege should be granted to accounts that are used by slave servers to connect to the current server as their master. Without this privilege, the slave cannot request updates that have been made to databases on the master server.
  • 14.
    3.Mysql to Kafka( Maxwell) 11 mysql> insert into test.e set m = 4.2341, c = now(3) , comment = 'I am a creature of light.'; { "database":"test", "table":"e", "type":"insert", "ts":1477053217, "xid":23396, "commit":true, "position":"master.000006:800911", "server_id":23042, "thread_id":108, "data":{ "id":1, "m":4.2341, "c":"2016-10-21 05:33:37.523000", "comment":"I am a creature of light." } } mysql> update test.e set m = 5.444, c = now(3) where id = 1; { "database":"test", "table":"e", "type":"update", "ts":1477053234, ... "data":{ "id":1, "m":5.444, "c":"2016-10-21 05:33:54.631000", "comment":"I am a creature of light." }, "old":{ "m":4.2341, "c":"2016-10-21 05:33:37.523000" } }
  • 15.
    4. Mysql toAWS-Redshift (DMS) 11 What is Redshift? • AWS 의 대용량 분석시스템. • Compute Node. • 데이터 보유 • 데이터 처리 • shared nothing. • Leader Node. • 커넥션 처리 • SQL 해석 • 실행계획 수립 • 코드 컴파일 등.
  • 16.
    4. Mysql toAWS-Redshift (DMS) 11 Redshift 데이터 로드 . • Loading data from AWS S3 into Redshift COPY [redshift_table_nm] FROM '[s3 sam file name]' CREDENTIALS 'aws_access_key_id=[YOUR-ACCESS-KEY];aws_secret_access_key=[YOUR-SECRET-KEY]' /* -- OPTIONS */
  • 17.
    4. Mysql toAWS-Redshift (DMS) 11 What is DMS . • AWS 의 Migrationservice. • ETL , CDC .
  • 18.
  • 19.