Docker를 사용하여 mysqldump 실행

개시하다


실습 첫날에 저는 먼저 데이터베이스 정보를 받는 API의 로컬 환경을 구축했습니다.Docker에api를 올리는 것은 좋지만 이후 데이터베이스 복제는 힘들어요.그때 가장 몰랐던 것은 mysqldump의 지령이었다.이것을 단번에 이해하기 위해 매끄럽게 정리했다.

이른바 mysqldump

mysqldump는 데이터베이스 백업을 위한 명령입니다.원래 데이터를 재현하는 SQL 문을 생성할 수 있습니다.참고로 mysqldump "mysql"만 설치하면 터미널에서 사용할 수 있습니다.

터미널에서 확인


〜 % mysqldump        
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

_________________________________
_________________________________		      
____helpオプションでさらに詳しく_____
_________________________________
_________________________________

〜 % mysqldump --help

mysqldump  Ver 10.13 Distrib 5.6.51, for osx10.16 (x86_64)
Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf 
The following groups are read: mysqldump client
The following options may be given as the first argument:
--print-defaults        Print the program argument list and exit.
--no-defaults           Don't read default options from any option file,
                        except for login file.
--defaults-file=#       Only read default options from the given file #.
--defaults-extra-file=# Read this file after the global files are read.
--defaults-group-suffix=#
                        Also read groups with concat(group, suffix)
--login-path=#          Read this path from the login file.
  -A, --all-databases Dump all the databases. This will be same as --databases
                      with all databases selected.
  -Y, --all-tablespaces 
                      Dump all the tablespaces.
_________________________________
_________________________________		      
______以降もオプションがズラリ_______
_________________________________
_________________________________

편리한 옵션


옵션 이름
과업
--single-transaction
서버에서 데이터를 덤프하기 전에 BEGIN SQL 문을 보냅니다.
--quick
표의 모든 기록을 메모리에 버퍼링하지 않고 한 줄 한 줄 덤프하다
탁자를 크게 펼칠 때'--single-transsaction'과'--quick'을 동시에 사용하는 것이 효과적이다.마치

주제의 Docker+mysqldump


Docker에서 mysqldump를 실행하기 위해 다음 명령을 사용했습니다.
docker exec -it 〜.mysql mysql -u -p 〜〜
이 때 mysql 편집 권한을 사용자에게 양도할 수 없습니다.
그래서 작전이 바뀌었다.Docker에 직접 들어가서 명령줄을 입력하면 머리의 docker exec -it 〜.mysql가 사라집니다.

Docker 외부에서


docker exec -it 〜.mysql mysqldump -u -p 〜〜

Docker에서


mysqldump -u -p 〜〜

이렇게 하면 mysql의 사용자 권한을 복잡하게 하지 않고 mysqldump를 통과할 수 있다.


Summary Of The Day(SOTD)


이후 mysqldump 이외의 mysql 명령을 실행했지만 문제 없이 통과했습니다.
mysql의 사용자 전환과 권한 전환이 Docker 등 용기 안팎에서 순조롭지 않을 때 안에서 밖으로 쌍방의 방법이 좋다는 것을 알았습니다.오늘의 공부.

References


https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_single-transaction
https://style.potepan.com/articles/18092.html