본문 바로가기

Database

(32)
binary log file position based replication 개요 데이터베이스 변경분을 binarylog에 event로 기록한다. inndb 기준, 1개의 event는 1개의 transaction 이다. slave는 master의 binarylog를 읽고 slave의 로컬 데이터베이스에서 binarylog의 event를 실행한다. 각 slave는 모든 binarycontents를 받는다. 또한 binarylog에서 어떤 구문을 수행할지에 대해서는 slave에서 결정한다. slave의 i/o thread는 로컬에 binary log를 저장하며 relay log 라고 한다. slave의 sql thread는 relay log 의 내용중에서 약속된 event 만 실행한다. event를 특정해서 적용하는것은 불가능 하며 특정 데이터베이스 및 테이블을 선정하는것은 가능하다..
SYSBENCH 를 이용하여 RDS MySQL, RDS Aurora, GCP Cloud SQL MySQL OLTP 테스트 2차 개요 1차 테스트에서 rds-mysql 이 탈락하고 아래와 같은 이유로 2차 테스트를 진행함 transaction 성능은 aurora 가 좋지만 bulk insert 에서 aurora가 gcp 보다 느린 이유는? aurora 의 disk 성능이 타 서비스와 비교해서 동등한가? 확인가능 한가? 테스트 내용 sysbench 의 oltp_read_write 시나리오는 dml 이 혼합된 형태인데 위 transaction 이 select 에 포함되어 있는지 등이 불명확하며 wirte 의 구성도 delete1:update:2:insert1 로 되어 있기 때문에 transaction 수치와 bulk-insert 수치를 동등하게 비교할 수 없다. 따라서 insert, update, select, delete 로 시나리..
SYSBENCH 를 이용하여 RDS MySQL, RDS Aurora, GCP Cloud SQL MySQL OLTP 테스트 개요 RDS Aurora vs RDS MySQL vs Cloud SQL MySQL 를 sysbench 를 이용하여 성능을 측정한다. hardware 는 8core ram 64GB spec 으로 별도의 client 를 통해 ( 각 cloud vm instance ) 테스트하였다. client 는 sysbench 의 옵션을 이용하여 1, 8, 16, 32, 64, 128 까지 늘려가며 수행했으며 테스트 시나리오는 sysbench 에 정의된 'oltp_read_write.lua' 와 'bulk_insert.lua' 를 사용했다. oltp_read_write test script f [ "$#" -ne 4 ]; then echo "Usage : sysbench.sh " exit 255 fi HOST=10.92...
keepalived를 이용한 mysql failover 개요 위 그림에서 SQLNode1, SQLNode2 에 keepalived 를 설치한다. keepalived 에는 다음과 같은 동작을 기대한다. SQLNode1 과 SQLNode2 의 mysql daemon 의 health check 를 한다. SQLNode1 (master) 의 health check 실패시 VIP 로 들어오는 요청을 SQLNode2(backup) 로 보낸다. SQLNode2(backup) 으로 요청이 들어 오는 경우 다시 VIP 로 redirect 한다. 스케줄링에 의해 backup 쪽으로 요청이 오면 이것을 master 로 돌리기 위해 master 에만 전달하는게 안되는거 같음( 옵션확인 필요) 설치 yum 을 이용하여 keepalived 패키지를 설치한다. [root@sql1 ~]..
ProxySQL 을 이용한 read / write split 및 failover 구성 ProxySQL 를 이용한 failover 예상 아키텍쳐 전체 아키텍쳐 HAProxy 를 이용한 read / write split 및 failover proxysql 아키텍쳐 3개의 layer 는 모두 동일한 설정을 가진다. 상호 데이터를 이동할 수 있으며 쿼리 형태로 제공된다. RUNTIME 운영중에 사용되는 설정들 proxysql이 기동중일때 사용되는 layer MEMORY 기동시 disk 로 부터 초기화되는 layer 로 운영 중 변경 내용이 저장되는 layer 다 runtime 으로 옮겨야 운영에 적용되며 disk 에 저장해야 영구적용된다. DISK persistent 를 위해 저장용도로만 사용된다. CONFIG config 파일에 설정을 기록하여 proxysql 기동시에 적용할 수 있다. pro..
NDB DataNode Directory Files 나중을 위해 있는 자료를 정리함. 근데 표 사이즈는... 쩝 datadir desc ndb_[node_id]_out.log data node log 파일 ndb_[node_id]_signal.log data node 로 부터 발생하거나 data node 로 보내진 signal log 파일, SendSignalID 파라미터가 enabled 일때만 ndb_[node_id].pid data node pid 파일 ndb_[node_id]_fs data node 용 directory (data file, undo datafile, checkpoint datafile, LCP 0 하나의 locl checkpoint 당 숫자이름의 디렉터리가 생성된다. T[table_id]F[fragment_number].data "..
MySQL NDB Cluster 설치 shell> useradd -m chlee0.설치 기준 기능 검증시 노드 장애 테스트 편의를 위해서 virtual box에 설치한다. linux OS는 centos(7로 한다.) HA 테스트를 위해서 data 노드 2개, sql 노드 2개, management 노드 1개를 설치한다. 가상머신간에 통신이 가능한 구성으로 설치한다. https://technote.kr/213 NAT network 방식으로 먼저 해보고 가상머신에 IP 할당이 필요하다면 인프라팀에 요청한다 1.설치 준비 1.1 사용자 생성하기 mysql 데몬을 실행하는 unix 계정을 생성한다. 일반적으로 root 혹은 mysql 을 계정을 사용하지만 여기서는 chlee 계정을 사용하여 생성한다. shell> useradd -m chlee1.2..
Oracle GoldenGate, Oracle Database 설정 Source Database 설정 supplemental log data 생성하기 -- SUPPLEMENTAL LOG ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE) COLUMNS; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA ( ALL ) COLUMNS; 반대로 삭제하고 싶을때 ALTER DATABASE DROP SUPPLEMENTAL LOG DATA (ALL) COLUMNS; ALTER DATABASE DROP SUPPLE..