Aurora PostgreSQL의 DB connector 설정(with AWS JDBC Wrapper, pgdriver)
·
AWS
AWS JDBC Wrapper 란?AWS에서 제공하는 AWS JDBC driver는 현재 deprecated되고 AWS wrapper로 대체되었다. AWS wrapper는 기존의 JDBC driver를 한 번 감싼 형태로, 편의성을 위해 여러 플러그인을 제공하는 DB connector이다.이 중 DB 운영에 가장 유용하게 쓰일만한 플러그인은 단연 fast-failover 와 read/write splitting 플러그인이다.fast-failover: failover 발생 시 connection error 없이 빠른 failover가 가능read/write splitting: 하나의 접속스트링만으로도 reader/writer 전환 가능https://github.com/aws/aws-advanced-jdbc..
Aurora MySQL 3 Online DDL 버그
·
MySQL
writer에서 in-place DDL 수행시 reader에서 해당 테이블을 인식하지 못하는 버그가 발견되었다. 관련 DDL: add column, drop column (offline ddl이나 instant ddl, add index는 해당 없음) 테스트 버전: Aurora MySQL 3.02.2 1. add column after # session 1(Writer) mysql> alter table test add col3 varchar(10) not null after col2; Query OK, 0 rows affected (7.35 sec) Records: 0 Duplicates: 0 Warinings: 0 # session 2(Writer)에서 processlist 확인 altering ta..
[GTID] 복제 환경 GTID 틀어졌을 때 해결하기
·
MySQL
복제 환경에서 GTID가 간혹 가다 틀어지는 경우가 있다. GTID가 틀어지는 원인 다양한 원인이 존재하나, 대부분은 sql_log_bin=ON 상태에서 DBA의 변경 작업(DML, DDL)으로 인해 발생한다. slave의 sql_log_bin 상태가 "ON"이면 트랜잭션에도 master 서버로부터 넘어오는 GTID set과 별개로 GTID가 부여되면서 두 서버간의 GTID set이 달라지게 되는 것 GTID가 틀어졌을 때의 문제점 failover시 문제 발생 달라진 데이터에 대해 master로부터 DML이 넘어오는 경우 replication 자체가 깨질 위험 있음 해결 방법 기본적으로 GTID 맞추는 작업은 1. 데이터 정합성 맞추기 → 2. GTID 맞추기의 과정이며, 1. 데이터 정합성 맞추기 단계..
IP 주소와 서브넷(Subnet)
·
카테고리 없음
IP 주소란? 각각의 host를 구분하여 컴퓨터가 주고받는 데이터를 정확하게 송,수신하기 위한 주소. IPv4: 3자리 숫자 4마디로 표기되는 방식. ex)123.123.123.123 (32bit) IPv6: IPv4로 할당할 수 있는 주소가 초과되어 등장한 주소 체계로, 모바일 IP를 포함한다. ex)2001:0db8:0dad:0010:0000:0000:0000:0100 (128bit) IPv4 클래스 분류 IP 주소는 대역에 따라 A,B,C 등의 클래스로 나누어지고, IP클래스에 의해 분리되는 Network ID와 host ID로 분리된다. 진하게 표시한 부분이 각 클래스에서의 Network ID이다. 클래스 이진 표현 십진 표현 0000 0000.00000000.00000000.00000000 0...
[MacOS] MySQL 8.0 Debug 환경 Xcode로 만들기
·
MySQL
MySQL 소스코드를 봐야 할 때가 있는데, 변수명이 친절하게 써져 있는 편은 아니라 디버깅 과정이 필요하다. 맥에서 기본으로 제공하는 Xcode를 이용하여 디버깅 환경을 구축하면 편하게 쓸 수 있다. 우석님께서 잘 정리해 두셔서 그대로 차용하면서 중간중간 에러가 나는 부분 주석을 달아두었다. 설치환경 macOS Monterey 12.1 1. open SSL 설치 1) 소스 다운로드 https://www.openssl.org/source/ 2) build & install * 참고로 build 하고 전역으로 install 할 예정이라 경로는 아무데나 해도 된다. $ ./config ※ /usr/bin/ path 로 기본 설치되지만, 원하는 경로가 있다면 --prefix option 을 붙여주면 된다. $..
Character set & Collation
·
MySQL
default_collation_for_utf8mb4 MySQL 8.0부터 생긴 변수로, utf8mb4의 default collation을 설정할 수 있다. utf8mb4_0900_ai_ci: uft8mb4_unicode_ci의 상위버전으로, ai(accent insensitive) & ci(case insensitive). 공백을 다른 문자로 구분(NO PAD) utf8mb4_general_ci: padding을 포함한 동일 문자가 들어간 string은 동일한 문자열로 봄(PAD SPACE) ※ unicode_ci VS general_ci unicode_ci: collation set으로 general_ci와 동일하게 검색시에 대소문자 구분과 전각/반각문자, 이모티콘 구분도 하지 않음 => 고유값을 비..
InnoDB flush method
·
MySQL
mysql에서 데이터 flush를 하는 기본 순서는 1. 버퍼 풀 or log buffer에 있는 내용을 flush하면 2. mySQL 안의 버퍼에 있던 내용을 메모리 상의 OS cache로 이동(write) 3. OS cache 안의 내용을 디스크상의 데이터 파일로 이동(flush) 인데, innodb storage engine에서는 innodb_flush_method 변수를 통해 flush 방법을 설정할 수 있다. fsync: default로 설정되어 있는 방법. 버퍼 풀과 로그 버퍼 모두 OS cache를 이용하고, fsync()를 통해 OS cache에서 디스크로 데이터를 이동한다. O_DSYNC: 로그 버퍼에서 write를 할 때(2번 단계) 자동적으로 데이터 파일에 fsync()까지 한 번에 ..
[Collation] UTF8 charset & collation 비교
·
MySQL
UTF8 VS UTF8MB4 영어 등 서구권 언어: 1글자당 1byte 한글 등 아시아권 언어: 1글자당 2byte UTF-8: 1글자당 1~3byte(가변적) utf8mb4: 가변 4byte utf-8 charset 다국어를 지원하기 위해 1~3 가변바이트 charset utf-8이 주로 사용되어왔다. 그러나 emoji 등 새로 개발된 언어는 글자당 4바이트를 차지하므로, 해당 charset으로 설정되어있는 경우 글자가 깨지는 현상이 발생한다. 따라서 mySQL 5.5 이후 버전부터는 utf8mb4 charset을 지원하면서 최대 4바이트까지 문자를 저장할 수 있도록 하고 있다😄 검색이나 로그인 등 다양한 경우에서 대소문자 구분 여부는 중요하다. 예를 들어, 회원가입 시 비밀번호 설정 부분에서는 대/소..
erin.yoon
'분류 전체보기' 카테고리의 글 목록