Skip to content
> giho's blog
Go back

~/posts/dba-automation-with-just

just로 DBA 반복 작업 자동화하기

· 2 min read
-- contents

DBA 일은 “그 명령 뭐였더라”의 연속이다. mysqlsh 덤프 옵션, grants 뽑는 절차, 특정 스키마만 내보내기… 매번 히스토리를 뒤지는 대신 just로 레시피화해두면 팀 누구나 같은 방식으로 실행할 수 있다.

왜 just인가

Makefile과 비슷하지만 셸 스크립트를 쓰기 훨씬 편하고, 프롬프트 입력과 기본값을 자연스럽게 다룰 수 있다. 레포에 justfile 하나 두면 그게 곧 팀의 실행 표준이 된다.

just            # 레시피 목록
just mysql-dump # 특정 레시피 실행

예시: 스키마 선택 덤프

mysqlsh 유틸리티 덤프는 빠르지만 옵션이 많다. 자주 쓰는 형태를 레시피로 고정하고, 덤프할 스키마는 실행 시 입력받게 한다.

# justfile
host := "localhost"

# 특정 스키마만 mysqlsh로 덤프
mysqlsh-dump-data schema:
    mysqlsh --uri {{host}} -- util dump-schemas '["{{schema}}"]' \
        --outputUrl=/backup/{{schema}} \
        --threads=4 --compression=zstd

# 스키마를 안 정하면 프롬프트로 물어보기
dump:
    #!/usr/bin/env bash
    read -p "schema: " s
    just mysqlsh-dump-data "$s"
Tip

스키마 선택을 “스킵”하고 전체를 덤프하면 사고가 나기 쉽다. 명시적으로 대상을 받도록 만들어 두면 실수로 전량 덤프하는 일을 줄인다.

예시: 전체 유저 · grants 백업

계정 마이그레이션이나 재해 복구를 위해 모든 유저의 grants를 뽑아둔다. pt-show-grants가 있으면 간단하고, 없으면 information_schema로 생성한다.

# 모든 유저 grants 덤프 (pt-show-grants)
dump-grants host user out="grants.sql":
    pt-show-grants --host {{host}} --user {{user}} --ask-pass > {{out}}
# pt-toolkit 없이: SHOW GRANTS 를 동적으로 생성
dump-grants-native host user:
    mysql -h {{host}} -u {{user}} -p -N -e \
      "SELECT CONCAT('SHOW GRANTS FOR ', QUOTE(user), '@', QUOTE(host), ';') \
       FROM mysql.user" \
    | mysql -h {{host}} -u {{user}} -p -N | sed 's/$/;/'

얻는 것

DBA의 반복 작업일수록 레시피로 남겨두면, 나중의 나와 팀 모두가 편해진다.



-- related


Previous Post
테스트 데이터 생성과 PII 마스킹 전략
Next Post
AI로 데이터베이스에 안전하게 접근하기
giho=#searchesc