programing

도커 MariaDB/Mysql 덤프

kingscode 2022. 10. 19. 21:19
반응형

도커 MariaDB/Mysql 덤프

https://hub.docker.com/_/mariadb/에서 실행 중인 컨테이너에서 mysqldump를 사용하려면 어떻게 해야 합니까?

유용한 문서나 데이터를 찾을 수 없습니다.

데이터베이스를 백업 및 복원하는 모든 방법.

다음은 콘티너 실행 명령어입니다.

docker run --name myaapp-mariadb -v /databases/maria:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mariadb:10

다음과 같이 mariadb 서버 컨테이너를 작성했다고 가정하면 다음과 같습니다.

docker run --name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:latest

그런 다음 다른 클라이언트 컨테이너에서 액세스합니다.

docker run -it --link some-mariadb:mysql \
   --rm mariadb:latest \
   sh -c 'exec mysqldump -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD" database_name' > database_name_dump.sql

mysql 공식 이미지 페이지에는 더 유용한 사용 팁이 많이 있습니다.

인정된 답변은 모든 의미에서 받아들여지고 정확합니다.또한 데이터베이스를 외부 볼륨에 매핑한 경우에 해당됩니다.

예를 들어, 컨테이너가 다음 명령을 사용하여 작성된 경우

docker run --name mysqldb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -v /dir_path_on_your_machine/mysql-data:/var/lib/mysql -d mariadb:latest

그러면 cmd 라인 또는 터미널에서 다음 명령을 실행할 수 있습니다.

docker exec mysqldb mysqldump --user=root --password=password dbname > /dir_path_on_your_machine/mysql-data/dump/db.sql

그러나 위의 명령을 사용하여 작성된 덤프는 저장 프로시저, 함수 및 이벤트를 덤프하지 않습니다.그러기 위해서는 추가 파라미터가 필요합니다.

--triggers          Dump triggers for each dumped table.
--routines          Dump stored routines (functions and procedures).
--events            Dump events.

따라서 원하는 결과를 얻기 위해 위의 매개 변수를 포함하도록 명령을 수정할 수 있습니다.

update 명령어 예시

docker exec mysqldb mysqldump --routines --triggers --user=root --password=password dbname > /dir_path_on_your_machine/mysql-data/dump/db1.sql

Import 관련 에러가 발생했을 경우는, 이 에러가 도움이 되는지를 확인해 주세요.

언급URL : https://stackoverflow.com/questions/32610787/docker-mariadb-mysql-dump

반응형