반응형
SELECT 
        T.idx, T.path, T.hash_idx
      , (SELECT MAX(modify_time) FROM proc WHERE hash_idx = T.hash_idx) as hash_lmt
      , (SELECT MAX(modify_time) FROM proc WHERE hash_idx = T.hash_idx AND `path` = T.path) AS modify_time
 FROM (
      SELECT * FROM proc
   ) AS T
GROUP BY T.hash_idx, T.path 
ORDER BY hash_lmt DESC, modify_time DESC;

경로와 해쉬 기준으로 group by 할 경우 단순 조회시 시간 정보가 누락되어 조회가 되었습니다.

그래서 서브쿼리를 이용해서 해당 경로의 최신 시간 정보를 가져오도록 서브 쿼리를 작성하였습니다.

SELECT 
        T.idx, T.group_code, T.path, T.hash_idx
      , (SELECT MAX(modify_time) FROM proc WHERE hash_idx = T.hash_idx) as hash_lmt
      , (SELECT MAX(modify_time) FROM proc WHERE hash_idx = T.hash_idx AND `path` = T.path AND `group_code` = T.group_code) AS modify_time
 FROM (
      SELECT * FROM proc
   ) AS T
GROUP BY T.hash_idx, T.path, T.group_code
ORDER BY hash_lmt DESC, T.group_code desc, modify_time DESC;

해시, 경로, 그룹 기준으로 group by 할 경우도 동일하게 조건을 하나 더 추가해서 누락된 시간정보를 조회하도록 하였습니다.

728x90
반응형

mysqldump를 통해서 특정 기간에 해당하는 데이터를 --w옵션을 사용해서 백업을 하였다. 

그런데 어느 시점 부터 원하는 날짜가 아닌 다른 시간 데로 백업이 된것 이다. 

알고 보니... mysqldump가 timstamp 유형의 필드 데이터를 백업할경우 내부적으로 UTC 시간으로 백업을 하는 것이 었다. 

mysqldump 공식 문서를 찾아보니 ... 이를 해제할 수 있는 옵션이 있어서 해결하게 되었다.

 mysqldump --single-transaction --skip-tz-utc -u$1 -p$2 --no-create-info $3 $4 -w"log_time>$5 AND log_time<$6"

그것은 --skip-tz-utc 라는 옵션이었다. 

--tz-utc=false, --tz-utc=true 혹은 다음과 같은 옵션을 줘도 괸찮다고 한다.

이 옵션을 주었을 경우 DB에 들어간 데이터 시간을 기준으로 dump를 하게 되었다.

https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html

 

MySQL :: MySQL 8.0 Reference Manual :: 4.5.4 mysqldump — A Database Backup Program

4.5.4 mysqldump — A Database Backup Program The mysqldump client utility performs logical backups, producing a set of SQL statements that can be executed to reproduce the original database object definitions and table data. It dumps one or more MySQL da

dev.mysql.com

https://mariadb.com/docs/reference/mdb/cli/mariadb-dump/tz-utc/

 

Open Source Database (RDBMS) for the Enterprise | MariaDB

MariaDB is the leading enterprise open source database with features previously only available in costly proprietary databases. Enterprise grade, wallet friendly.

mariadb.com

위 사이트에 가게 되면 mysqldump의 많은 옵션들이 잘 설명 되어있다.

물론, 영어로 되어있어서 파악하기는 힘들지만 말이다.

728x90
반응형

DBeaver을 사용하게 된 이유는 DB스키마 변화를 한눈에 알아볼 수 있도록 다이어그램 생성 기능을 제공하기 때문입니다. 물론 Mysql Workbench도 제공해주지만, DBeaver는 mysql 뿐만 아니라 다양한 DB 엔진들을 지원한다는 장점을 가지고 있습니다.

1. https://dbeaver.io/download/에 접속

2. 해당 os에 맞는 설치파일 다운로드

os가 windows이므로 다음 설치 파일을 다운 받습니다. 

개인 사용자라면 Community용으로 받으시면 됩니다. 

3. 다운로드가 완료되면 설치파일을 실행합니다. 

4. 원하는 언어를 선택합니다. 

5. 사용 대상을 선택합니다. 저는 모두 사용할 수 있도록 옵션을 선택하였습니다.

6. 다음 단계로 이동하면 설치를 진행합니다.

7. 설치가 완료되면 DBeaver를 실행합니다.

728x90

+ Recent posts