Nifi를 활용하여 RDB Table 복제 2
2020. 3. 31. 22:54ㆍNifi
목표 : 현재 Nifi클러스터는 120~126번 IP를 사용하고 있고, 외부 데이터베이스 (150번 서버 MariaDB)에서 복수의 테이블을 또 다른 외부 데이터베이스 (162번 서버 MariaDB)로 Shell Script(Creation하는 Shell은 180번 서버에 존재 creation하는 shell을 콜하는 Shell이 Nifi Cluster전체에 존재) 를 활용하여 복제
전제 조건
1.Nifi Cluster의 /etc/hosts 파일에 에대한 150,162,180번서버 정보가 있어야한다. 또한 위 서버는 서로 네트워크 통신이 서로 가능해야 한다.
2.Nifi 클러스터 모든 노드에 JDBC 드라이버가 설치 되어 있어야 합니다.
#1 List tables (Source 테이블들 조회)
Source table : 150번 서버의 test02의 student_tb, student_tb1두 개의 테이블
#1-1 Database Connection Pooling Service
#2 UpdateAttribute
#3 ExecuteSQL
#4 ExecuteStreamCommand
#4-1 /nifi/execute.sh (Nifi 전체 클러스터 내에 위치)
#!/bin/bash
sshpass -p root ssh -o StrictHostKeyChecking=no root@10.200.100.180 "sh /download/test02.sh"
*sshpass를 통하여 password 입력 없이 180번 서버 접속후 Test02.sh를 실행 (해당 쉘파일은 Nifi 클러스터 전체에 동일한 디렉토리에 있어야한다.pscp를 이용하여 배포)
#4-2 /download/test02.sh (180번 서버에 위치)
#!/bin/bash
mysql -h 10..162 -u test02 -ptest02 -e "create database test02 DEFAULT CHARACTER SET utf8;"
mysql -h 10..162 -u test02 -ptest02 test02 -e "CREATE TABLE student_tb ( sno int(11) NOT NULL, name char(10) DEFAULT NULL, det char(20) DEFAULT NULL, addr char(80) DEFAULT NULL, tel char(20) DEFAULT NULL, PRIMARY KEY (sno) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;"
mysql -h 10..162 -u test02 -ptest02 test02 -e "CREATE TABLE student_tb1 ( sno int(11) NOT NULL, PRIMARY KEY (sno) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;"
#5 PutDatabaseRecord
#6 실행 확인
데이터가 섞이지 않고 각 각의 테이블의 레코드 값들이 올바르게 들어간 것을 확인할 수 있다.
'Nifi' 카테고리의 다른 글
Nifi를 통하여 AWS RedShift Connection 및 load data (2) | 2020.04.06 |
---|---|
NIFI Rest API를 활용한 Processor 호출 및 Properties 변경 (1) | 2020.04.04 |
Nifi를 활용하여 R-DB Table 복제 1 (0) | 2020.03.31 |
Nifi를 활용한 실시간 로그파일 Depth 별 수집 및 HDFS, AWS S3 저장 (2) | 2020.03.28 |
<Linux Centos7환경 Nifi 설치> (1) | 2020.03.23 |