+ DataBase25 [MySQL] binlog 조회 / 삭제 / 보관 기간 설정 MySQL을 사용하다 보면 Binlog(바이너리 로그)가 디스크에 백업이 된다. 디스크의 용량이 크다면 크게 상관없겠지만, 디스크 용량이 적거나 아니면 백업되는 Binlog 사이즈가 큰 경우 결국 MySQL이 원활하기 구동될 수 있도록 디스크 관리를 해줘야 한다. 이때 Binlog(바이너리 로그)가 불필요하게 너무 많이 쌓이게 되면 삭제를 진행해줘야 한다. 이번에는 Binlog(바이너리 로그)에 대해서 조회 방법, 삭제 방법, 보관 기간 설정하는 부분을 알아보도록 하자. 그럼 먼저 Binlog(바이너리 로그)가 무엇인지 알아보자. 1. Binlog(바이너리 로그)란? 바이너리 로그는 MySQL 3.23.14 Version부터 도입되었으며, Create, Drop과 같은 DDL문과 Insert, Updat.. 2021. 12. 26. [MySQL(MariaDB)] FORMAT 문법 사용 하기(숫자 자리수 나타내기) MySQL을 사용하여 개발을 하는 경우 특정 숫자나 Count 값에 대해서 출력을 하는 경우가 있다. 이때 데이터를 가지고 온 상태에서 Code(코드)상에서 숫자에 대해서 3자리마다 콤마를 설정 혹은 처리 할 수 있으나, 그것보다는 Query(쿼리) 구문을 통해서 숫자에 3자리에 콤마를 바로 설정하여 출력을 하는 편이 간결하고 가독성도 좋다.(물론 이해하기에도 더 쉽다) MySQL에서는 FORMAT 이라는 Function(함수)을 제공하고 있으며, 해당 Function은 "MySQL 4.0 이상"부터 사용이 가능하다. 그럼 어떻게 사용하는 간단히 알아보도록 하자. 1. FORMAT문 사용 방법 FORMAT문은 매우 쉽게 사용할 수 있다. 사용할 Column(컬럼) 앞에 FORMAT문을 넣어서 사용하면 끝.. 2021. 5. 24. [MySQL] CASE 문법 사용 하기 MySQL을 사용하다 보면 Query(쿼리) 구문에서 Switch(스위치) 문 혹은 IF문과 같이 조건문을 사용하여 결과값을 내야 하는 경우가 있다. 물론 이런 거 없이 Query 하여 나온 결과를 가져와 Code(코드)상에서 처리할 수 도 있으나 그것보다는 Query로 나온 결과값을 바로 사용하는 편이 훨씬 간결하고 가독성도 좋다.(물론 이해하기에도 더 쉽다) MySQL에서는 CASE라는 Function(함수)을 제공하고 있으며, 해당 Function은 "MySQL 4.0 이상"부터 사용이 가능하다. CASE 문은 조건을 통과하고 첫 번째 조건이 충족되면 값을 반환한다. 조건에 따라 True(참)이면 읽기를 중지하고 결과를 반환하고, 조건이 True(참)가 아니면 ELSE 절의 값을 반환한다. ELSE.. 2021. 1. 22. [MySQL/MariaDB] 데이터베이스별 / 테이블별 용량 확인 하기 MySQL/MariaDB을 사용하다 보면 현재 데이터베이스(Database) 혹은 테이블(Table)에 용량(Size)을 확인해야 하는 경우가 있다. DB(디비)가 올라가있는 시스템의 디스크 용량이 모자라거나, 아니면 백업(Backup) 혹은 마이그레이션(Migration) 할때 용량을 알아야 그에 맞게 대응을 할 수 있다. 2016/10/16 - [DataBase/MySQL(MariaDB)] - [MySQL] 데이터베이스 백업 하기(DataBase Dump) 그럼 데이터베이스 혹은 테이블별 용량을 확인하는 방법을 알아보도록 하자. 1. 데이터베이스(Database)별 용량 확인 2020/01/08 - [DataBase/MySQL(MariaDB)] - [MySQL] Concat 함수를 이용한 컬럼 합치기.. 2021. 1. 8. [MySQL] sql_mode=only_full_group_by 에러 해결 방법 여러 서비스의 MySQL을 사용하다 보면 MySQL Version(버전)을 이동하면서 사용하게 된다. 이때 5.6 Version / 5.7 Version 도 같이 사용되는 경우가 있거나, 혹은 서비스 데이터베이스(DB)가 5.6에서 5.7 Version으로 업데이트(Update) 하여 서비스하는 경우도 있다. 근데 동일 GROUP BY 사용하는 Query(쿼리)를 5.6 Version에서는 정상적으로 실행 및 결괏값을 가지고 오나, 5.7 Version에서는 아래와 같은 에러(Error) 메시지가 발생되는 경우가 있다. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column XXX which is no.. 2020. 12. 22. [Info] PPAS vs PostgreSQL 차이점은? 간혹 PostgreSQL 말고 PPAS(피파스)라고 부르는 DBMS가 있다. PPAS도 역시 PostgreSQL을 사용하고 있는데 부르는 명칭이 다른 이유를 간단히 알아보도록 하자. 1. PostgreSQL란? PostgreSQL은 EnterpriseDB사에서 제공하는 커뮤니티 버전(무료)으로 배포되는 ORDBMS(객체-관계형 데이테 베이스)이다. 오픈 소스이며, 현재 많은 사람들이 사용하고 있다. PostgreSQL 커뮤니티 버전으로는 다른 관계형 데이터베이스 시스템과 달리, 연산자, 복합 자료형, 집계 함수, 자료형 변환자, 확장 기능 등 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 있는 기능을 SQL 차원에서 제공한다. PostgreSQL - 위키백과, 우리 모두의 백과사전 위키백과, 우리 .. 2020. 11. 24. [SQL] DDL / DML / DCL 이란? 관계형 데이터베이스(RDBMS)인 여러 가지 데이터베이스(DataBase)를 사용을 위해서는 반드시 SQL(Structered Query Language)을 사용해야 한다. 그중 SQL 문법에는 3가지의 종류가 있다. 1. DDL(데이터 정의 언어 : Data Definition Language) 데이터베이스의 구조를 정의하는 명령어의 모음 CREATE - 새로운 데이터베이스 관계 (테이블), VIEW, 인덱스, 저장 프로시저 만들기 DROP - 이미 존재하는 데이터베이스 관계(테이블), 뷰, 인덱스, 저장 프로시저를 제거한다. ALTER - 이미 존재하는 데이터베이스 개체에 대한 변경, RENAME의 역할을 한다. TRUNCATE - 관계 (테이블)에서 데이터를 돌이킬 수 없는 제거 2. DML(데이터.. 2020. 11. 14. [MySQL] 데이터베이스(스키마) 조회 / 생성 / 삭제 하기(Database(Schema) show / create / drop) MySQL 데이터베이스(스키마) 조회, 생성 및 삭제 방법을 알아 보도록 하자. 우선 첫번째로 당연히 MySQL이 설치 되어 있어야 하며 설치 방법은 아래 내용을 통해서 알아보도록 하자. [DataBase/MySQL] - [MySQL] CentOS 8 Mysql Install 하기 1. 데이터베이스 조회 일단 본인이 생성을 하려고 하는 데이터베이스가 존재 하는지 먼저 조회를 해보도록 하자. 아래 명령어를 통해서 조회를 해보자. # Database(Schema) 조회 mysql> show databases; 2. 데이터베이스 생성 데이터베이스가 존재하지 않는 경우 새롭게 생성하여 사용할 수 있다. # Database(Schema) 생성 mysql> create database DB명 default char.. 2020. 9. 12. [PostgreSQL] CentOS 8 PostgreSQL Install 하기 CentOS 8 시스템에 PostgreSQL을 설치해보도록 하자. 1. yum 명령어를 통해서 패키지 설치 $ yum install postgresql postgresql-server postgresql-devel postgresql-contrib postgresql-docs [root@localhost ~]# yum install postgresql postgresql-server postgresql-devel postgresql-contrib postgresql-docs 마지막 메타 데이터 만료 확인 : 0:00:06 전에 2020년 06월 20일 (토) 오후 01시 53분 32초. Dependencies resolved. ===========================================.. 2020. 6. 20. [MySQL] CentOS 8 Mysql Install 하기 CentOS 8 시스템에 Mysql을 설치해보도록 하자. 1. yum 명령어를 통해 "mysql-server" 설치 [root@localhost ~]$ yum install mysql-server CentOS-8 - AppStream 8.4 kB/s | 4.3 kB 00:00 CentOS-8 - Base 7.3 kB/s | 3.9 kB 00:00 CentOS-8 - Extras 2.5 kB/s | 1.5 kB 00:00 Dependencies resolved. ====================================================================================================== Package Arch Version Repository Siz.. 2020. 6. 13. [MySQL] Mysql ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 해결 하기 MySQL을 처음 설치 후 신규 계정을 등록을 하려고 할때, "ERROR 1819 (HY000): Your password does not satisfy the current policy requirements" 와 같은 에러가 발생하는 경우가 있다. mysql> CREATE USER 'test'@'%' IDENTIFIED BY '12test34'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements mysql> select Host, User from user; +-----------+------------------+ | Host | User | +-----------+------------------+ .. 2020. 6. 13. [PostgreSQL] 테이블 Index Rebuild - 테이블 안에 모든 Index Rebuild REINDEX TABLE 테이블명; - Index 명 지정 Rebuild REINDEX INDEX INDEX이름 - Database 에 모든 INDEX Rebuild REINDEX DATABASE Database이름 * Rebuild 를 하고 나서 디스크 사이즈가 변경 없을 경우 postgresql 의 경우 index rebuild 가 진행되어도 디스크의 사용량은 변화가 없음. postgresql.conf 에 vacuum 설정이 안되어 있으면 아래와 같이 명령어를 사용하면 디스크 사용량이 변화되는 것을 볼 수 있음. 기본 vacuum 은 off 로 설정됨. VACUUM 테이블명 2020. 4. 9. [MySQL] Concat 함수를 이용한 컬럼 합치기 간혹 컬럼에 있는 데이터를 합쳐 하나의 컬럼으로 만들어 사용하는 경우가 있다. 이런 경우 Concat 이라는 함수를 이용하여 해당 내용을 처리 할 수 있다. 아래 예제를 살펴 보면 쉽게 이해 할 수 있다. # 사용법 CONCAT(컬럼1, 컬럼2...) # 예제 1. 문자열 $ SELECT CONCAT('Hello', '|', 'Good Morning', '!') as hello; Hello|Good Morning! 2. 컬럼 Table 내용 idx | type | desc 1 | hello | 영어 2 | 안녕하세요 | 한국 3 | bonjour | 프랑스 $ SELECT CONCAT(type, '|', desc) as hello; hello|영어 안녕하세요|한국 bonjour|프랑스 2020. 1. 8. [PostgreSQL] Port(포트) 변경 방법 PostgreSQL을 설치하고 나면 postgresql.conf 파일을 통해서 기본 Port가 아닌 원하는 Port로 설정할 수 있다. 기본적으로 5432 Port를 사용하고 있으나, 해당 부분은 외부에 오픈되어있는 경우 쉽게 공격 대상이 될 수 있음에 따라, Port를 변경하여 사용하는 편은 추천한다. 해당 파일을 열어 #port = 5432로 주석으로 설정되어 있으며, 해당 부분의 주석을 변경 후 원하는 Port 번호로 설정한 후 서비스 재시작을 해주면 Port가 변경된다. # 파일 위치(시스템 마다 틀릴 수 있음) $ cat /var/lib/pgsql/data/postgresql.conf # 설정 완료 후 Postgresql 재시작 $ systemctl restart postgresql # 재기동 .. 2019. 12. 19. [PostgreSQL] 원격 접속(Remote) 허용 하는 방법 PostgreSQL을 설치하고 나면 postgresql.conf 파일을 통해서 원격 접속 허용을 설정할 수 있다. 물론 DB 설치 Localhost에서 사용하는 경우 특별히 설정할 필요 없으나, 대부분 DB서는 독립적으로 운영함에 따라, 아래와 같이 수정하여 사용한다. 해당 파일을 열어 listen_addresses = 'localhost' 로 설정 되어있으며, 해당 부분을 listen_addresses = '*' 으로 수정시 원격 접속이 가능하다. listen_addresses = '*' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost'; use '*' for all 2019. 12. 19. [PostgreSQL] pg_hba.conf 설명 설정 방법 pg_hba.conf에서 IPv4 설정부분을 찾아 다음과 같이 수정 # TYPE DATABASE USER ADDRESS METHOD host all all 192.168.2.2/32 md5 #localhost 패스워드 접근 local all all peer 용어 설명 type 접근자의 위치와 통신의 암호화 관련 설정. local : Unix domain socket (내부 프로세스간 tcp또는 udp 프로토콜을 이용한 통신)을 이용한 연결. host : tcp/ip 이용한 연결. postgres.conf에서 listen_address 설정이 선행되어야 한다. hostssl : 오직 ssl을 이용한 tcp/ip 연결. hostnossl : 오직 ssl을 사용하지 않는 tcp/ip 연결. data.. 2019. 8. 12. [PostgreSQL] 재기동 없이 Config Reload 개인 테스트 버전은 10 기준으로 한다. 쿼리(Query)를 활용한 Reload shell>> su - postgres shell>> psql psql >> select pg_reload_conf() 명령어(Command)를 활용한 Reload shell>> pg_ctl reload -D Datbasae경로 Database(데이터베이스) 경로의 경우 postgresql.conf 의 위치 경로를 지정하면 된다. 기본경로 : /var/lib/pgsql/10/data 2019. 8. 12. [MySQL] Union Query(유니온 쿼리)를 이용한 결과값 합치기(Sum) 쿼리(Query)문을 이용하여 각각 Count를 출력하여 Code상에서 합(sum)을 할 수도 있으나, Union 사용하여 Count 값만 가지와서 Sum을 할 수 있다. 이때 아래와 같이 사용함으로 결과값에 대한 Sum을 하여 사용 할 수 있다. # tb_user Count query> SELECT COUNT(*) as CNT FROM tb_user 10 # tb_admin Count query> SELECT COUNT(*) as CNT FROM tb_admin 3 # 두 테이블 합친 Count query> SELECT SUM(cnt) FROM ( SELECT COUNT(*) as CNT FROM tb_user UNION ALL SELECT COUNT(*) as CNT FROM tb_admin ) ad.. 2019. 8. 7. [MySQL/MariaDB] Table Lock(테이블 락) 확인 및 해제 하기 MySQL/MariaDB을 사용하다보면 실수 혹은 어떠한 이유로 인해 Table(테이블)에 Lock(락)이 발생하는 경우가 있다. 이때, Lock이 발생한 Table 확인 및 Lock 해제를 할 수 있다. 우선 간략하게 확인 및 해제에 대해서 확인해 보자. 1. Lock Table 확인 SQL> SHOW FULL PROCESSLIST; Id User Host db Command Time State 507390 dev 127.0.0.1:60635 dev Query 1000 Waiting for table metadata lock 위와 같이 State 컬럼에 "Waiting for table metadata lock" 으로 인해 해당 Table에 대해서 쿼리가 진행되지 않음을 확인 가능 하다. 2. Lock.. 2019. 7. 24. [MySQL] unsigned 의미 MySQL에서 컬럼 생성시 데이터형이 int를 사용하는 경우가 많다. int형을 사용하는 경우 대부분 음수는 거의 사용하지 않는다. int형의 범위는 -2147483648 ~ 2147483647 이다. 기본적으로는 ID 컬럼(Column)을 사용할때 많이 사용하고 있으며, unsigned를 설정시 int형의 범위는 0 ~ 4294967295 로 변경된다. 이와 같이 특별히 음수를 사용하는 경우가 아니라면 unsigned를 설정하여 사용하자 CREATE TABLE `tb_lists` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, ... 이하 생략 ... 2018. 1. 6. 728x90 300x250 이전 1 2 다음