mysql 70

[MySQL] mysql-client login-path 설정

개요 MySQL Client로 접속할 때 접속 정보를 지정해야 하는데 매번 접속 정보를 입력하는 건 번거로운 일이다. 특히 -p 옵션을 사용해 비밀번호를 입력한다면 민감 정보가 불필요하게 노출될 수 있다. 이러한 문제를 해결하기 위해 MySQL 접속 정보를 저장하는 mysql_config_editor을 사용할 수 있는데, 이 글에서는 mysql_config_editor를 이용해 mysql에 하는 방법을 적어둔다. 기존 접속 방법 2022.12.12 - [MySQL] 접속 명령어 기본적으로 mysql 클라이언트를 이용하면 다음과 같은 정보를 지정하여 접속한다. mysql -u -p -h -P 3306 mysql_config_editor 사용 mysql_config_editor은 mysql-client를 사..

Database 2023.10.02

[AWS] RDS MySQL - binlog 기반 인스턴스 간 복제

개요 RDS 백업 등을 위한 복제 방법은 여러 가지가 존재하는데, 이 글에서는 RDS 인스턴스 설정 변경 및 교체가 필요해 binlog 기반으로 서로 다른 RDS 간 복제 설정을 해보려고 한다. 진행 방식은 크게 다음과 같다. 1. 원본 인스턴스 binlog 사용 여부 확인 및 보존 기간 설정 2. 읽기 전용 복제본에서 복제 시작점 확인 3. 복제 인스턴스에서 원본 인스턴스 복제 설정 및 시작 binlog 기반 복제를 사용하면 교차 계정/교차 리전 간 복제, on-prem과 AWS 간 복제, mysql과 aurora 간의 복제 등등을 수행할 수 있다. 원본 인스턴스 설정 복제할 원본 인스턴스가 binlog를 사용하고 있는지 확인하고, 외부 인스턴스가 binlog를 사용할 수 있도록 관련 설정을 변경한다...

AWS 2023.09.29

[AWS] RDS - You are not using binary logging

개요 바이너리 로그에는 테이블 생성 작업이나 테이블 데이터 변경과 같은 데이터베이스 변경을 설명하는 이벤트가 포함된다. RDS 복제 등의 작업을 하고자 바이너리 로그를 확인하려고 했더니, 다음과 같이 수행되지 않았다. 바이너리 로그 파일 확인 SHOW BINARY LOGS; -- 또는 SHOW MASTER LOGS; 실행 결과 어떻게 하면 binlog를 활성화할 수 있을까? 확인해 본다. 해결 찾아보니 AWS RDS는 biglog 활성화 방식을 자동 백업의 활성화 여부로 제한하고 있는 것 같다. 공식 문서에 따르면 자동 백업 기능은 MySQL에 대해 바이너리 로깅을 설정할지 아니면 해제할지를 결정한다고 한다. 백업 기능을 활성화해 보고 정말 binlog이 확인되는지 살펴본다. 백업 기능 활성화 1. 작업..

AWS 2023.09.28

[MySQL] SHOW GRANTS - 계정 권한 확인

개요 Airflow와 같은 서비스의 버전을 업그레이드하다 보면 서비스가 사용하는 RDB의 스키마가 변경되는 경우가 있어 DB에 대한 DDL (CREATE, ALTER, DROP, TRUNCATE) 권한이 필요할 수 있다. 현재 DB 계정에게 부여된 권한을 확인해본다. 사용자 조회 권한을 확인할 사용자를 확인한다. SELECT host, user FROM mysql.user; | host | user | | --------- | ---------------- | | localhost | mysql.infoschema | | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | | localhost | test | test@lo..

Database 2023.09.19

[MySQL] NOT NULL 날짜 데이터 조회 시 NULL로 보이는 경우

현상 다음과 같이 정의된 테이블이 있다고 하자. CREATE TABLE test ( id int NOT NULL, diagnosis_date datetime NOT NULL DEFAULT current_timestamp, PRIMARY KEY (id, diagnosis_date) ); 스키마에 의하면 diagnosis_date가 NOT NULL인데 데이터를 조회하면 아래와 같이 NULL로 세팅된 데이터가 존재했다. SELECT diagnosis_date FROM test WHERE diagnosis_date IS NULL; 원인 사용하고 있는 Tool이 유효하지 않은 날짜 데이터를 처리하는 방식에 의한 결과일 수 있다. 이런 경우 mysql client를 이용하면 좀더 명확하게 확인할 수 있다. mysq..

Database 2023.07.31

[MySQL] 일반 사용자 비밀번호 변경

개요 DBA로부터 애플리케이션 서비스용 MySQL 계정을 발급받았는데 초기 비밀번호가 임의로 생성한 비밀번호인지 기억하기 힘든 조합으로 되어있다. 비밀번호를 변경해서 사용해도 된다고 하니 직접 변경을 해보려고 한다. MySQL 버전은 8.0.32이다. SET PASSWORD SET PASSWORD문은 MySQL 사용자 계정에 암호를 할당한다. 암호는 명시적으로 지정하거나 MySQL에 의해 임의로 생성할 수 있다. 비밀번호를 변경할 때 REPLACE절을 사용해 현재 암호를 확인하거나 RETAIN절로 보조 암호를 관리할 수 도 있다. SET PASSWORD [FOR user] auth_option [REPLACE 'current_auth_string'] [RETAIN CURRENT PASSWORD] auth..

Database 2023.07.25

[MySQL] DB 내 모든 테이블 ROW 수 확인하기

개요 단일 테이블에 대한 ROW 수는 특정 테이블에 count 함수를 실행하여 간단하게 구할 수 있다. SELECT COUNT(*) FROM table_name; 실행 결과 | count(1) | | -------- | | 2 | 그렇다면 데이터베이스 내 모든 테이블을 대상으로 행 수를 얻을 때는 어떻게 해야 할까? 방법을 적어둔다. 예시 DB 아래의 DDL로 생성한 예시 데이터베이스를 이용해 테스트해본다. CREATE TABLE test ( id INT ); INSERT INTO test (id) VALUES (1); INSERT INTO test (id) VALUES (2); CREATE TABLE IF NOT EXISTS `docs` ( `id` int(6) unsigned NOT NULL, `re..

Database 2023.06.08

[MySQL] 실행 중인 프로세스 kill

개요 RDS burstbalance가 0으로 떨어져서 원인 파악을 확인하는 과정에서 장시간 실행 중인 것으로 의심되는 쿼리가 있었다. 확인해 보고 정리하고자 한다. 실행 프로세스 확인 현재 실행 중인 프로세스의 목록과 상태를 확인한다. SHOW processlist; -- 전체 쿼리 보기 SHOW FULL processlist; 참고 : 2021.11.08 - [MySQL/MariaDB] 프로세스 목록 확인 의심하고 있던 쿼리가 실행 중인 상태인 것을 확인할 수 있었다. 프로세스 종료 실행 프로세스를 종료시키는 방법은 리눅스 프로세스 종료와 비슷하게 kill 명령어를 사용한다. kill -- 예시 kill 16644247 프로세스가 정상적으로 종료됐는지 확인한다. 참고 문서 https://hosim.ti..

Database 2023.04.24

[MySQL] CHECK TABLE - 테이블 상태 확인

CHECK TABLE View DDL에서 존재하지 않는 테이블을 참조하는 등의 문제를 가진 테이블이 있는지 확인한다. 확인할 테이블에 대한 권한이 있어야 CHECK 명령을 수행할 시 있다. 개발자보다는 DBA가 주로 사용하는 명령어지만, DB 업그레이드 사전 작업 중 확인 요청이 와서 정리한다. SQL CHECK TABLE tbl_name [, tbl_name] ... [option] ... option: { FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED } 옵션은 다음과 같다. FOR UPGRADE : 테이블이 현재 MySQL 버전과 호환되는지 확인한다. QUICK : 잘못된 링크를 확인하기 위한 행 스캔 금지 FAST : 적절히 CLOSE 되지 ..

Database 2023.04.03

[MySQL] View 목록 확인

개요 2021.09.17 - [MySQL] View에서 View의 개념과 생성, 삭제, 수정 방법은 정리했었다. 정작 목록을 확인하는 방법을 적어두지 않아 정리한다. 1. SHOW FULL TABLES SHOW FULL TABLES IN WHERE table_type LIKE 'VIEW'; FULL 키워드를 붙이지 않으면 table_type 컬럼이 없어 조회되지 않는다. 2. SELECT ~ FROM information_schema SHOW FULL TABLES 명령과 달리 모든 데이터베이스 내에 존재하는 View 목록을 확인할 수 있다. SELECT table_schema, table_name, table_type FROM information_schema.TABLES WHERE table_type ..

Database 2023.04.02
1 2 3 4 5 6 7