production 서버 dump 하기

hyuckhoon.ko·2021년 7월 22일
1

What I learned in first year

목록 보기
97/146

유저만 수십만명인 서비스에서 mysqldump를 토이 프로젝트에서 하듯이 하면 안 된다.

다행히 같은 고민을 했던 사람이 스택오버플로우에 답변을 공유해줬다.
🌹 핵심은 크게 두 가지다

  • 1️⃣ --single-transaction --quick 을 함께 사용해야 한다는 것
  • 2️⃣ --lock-tables=false 설정을 추가하는 것
    (덤프를 진행하는 동안 배포 DB의 임의의 테이블이 lock이 되면 안 되기 때문)

명령어

mysqldump -h "DB 엔드포인트" -u "DB 유저" -p --single-transaction --quick --lock-tables=false --column-statistics=0 "DB 이름" > "로컬에 저장할 이름".sql

하지만 데이터 양이 많아 dump 시간이 길어질 수 있다.
각 테이블마다 1000개의 row들만 추출하기로 하자.

명령어

mysqldump -h "DB 엔드포인트" -u "DB 유저" -p --single-transaction --opt --where="1 limit 1000" --quick --lock-tables=false --column-statistics=0 "DB 이름" > "로컬에 저장할 이름".sql



⭐️ 참고자료:

1. https://stackoverflow.com/questions/5666784/how-can-i-slow-down-a-mysql-dump-as-to-not-affect-current-load-on-the-server

2. https://dba.stackexchange.com/questions/50664/best-practices-for-backing-up-a-mysql-db

3. https://jay-ji.tistory.com/62

4. https://dba.stackexchange.com/questions/50664/best-practices-for-backing-up-a-mysql-db

5.https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/MySQL.Procedural.Exporting.NonRDSRepl.html

6. https://stackoverflow.com/questions/135835/limiting-the-number-of-records-from-mysqldump

0개의 댓글