docker MySQL은 매일 자동 백업을 실현합니다!
이 글은 주로 docker MySQL 데이터베이스를 백업하고 복원하는 방법과 매일 자동 백업을 구현하는 방법을 소개합니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!
Docker MySQL 데이터베이스 백업 및 복원, 일일 예약 자동 백업
One: 백업
Docker mysql 보기
ubuntu@ubuntu:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a30ead8a26fc mysql:8.0.27 "docker-entrypoint.s…" 10 seconds ago Up 7 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
방법 1:
단계별, 정기 백업, 컨테이너 입력 및 mysqldump 사용 백업합니다. [추천 학습: docker 비디오 튜토리얼]
sudo docker exec -it mysql /bin/bash #进入mysql容器 mysqldump -uroot -p123456 --all-databases > emp_`date +%F`.sql #在容器中备份所有数据库,并以日期命名 exit #退出容器 sudo docker cp mysql:emp_2022-03-17.sql /var/backup/ #将容器中的备份文件,复制到本地备份文件夹中
은 다음과 같이 표시됩니다:
ubuntu@ubuntu:~$ sudo docker exec -it mysql /bin/bash root@a30ead8a26fc:/# mysqldump -uroot -p123456 --all-databases > emp_`date +%F`.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. root@a30ead8a26fc:/# exit exit ubuntu@ubuntu:~$ sudo docker cp mysql:emp_2022-03-17.sql /var/backup/ ubuntu@ubuntu:~$ ll /var/backup/ total 11492 drwxrwxrwx 2 root root 4096 Mar 17 15:45 ./ drwxr-xr-x 14 root root 4096 Mar 14 17:49 ../ -rw-r--r-- 1 root root 3915599 Mar 17 15:42 emp_2022-03-17.sql
방법 2:
한 단계, 여기에 두 가지 가능한 명령이 있습니다
1): (권장, 복원은 문제 없습니다)
sudo docker exec mysql(容器名) sh -c 'exec mysqldump --all-databases -uroot -p123456 --all-databases' > /var/backup/music_`date +%F`.sql
2) : (권장하지 않습니다. 복원에 문제가 있습니다.)
인터넷에 있는 백업 방법은 대부분 이렇지만, 복원에 문제가 있는 경우는 5.7 버전을 사용하시면 됩니다.
sudo docker exec -it mysql(容器名) mysqldump -uroot -p123456 --all-databases > /var/backup/music_`date +%F`.sql
참고: 버전 때문일 수 있습니다(제 버전은 8.0입니다). 이런 종류의 백업에는 문제가 없지만 복원에는 문제가 있습니다. 오류는 다음과 같이 보고됩니다.
ubuntu@ubuntu:~$ sudo mysql -uroot -p < emp_2022-03-15.sql Enter password: ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqldump: [Warning] Using a password on the command line interface can be insec' at line 1
데이터베이스에 들어가서 명령 소스를 사용하여 복원할 수도 있지만 오류가 계속 표시되지만 무시되므로 결국 데이터 복구가 불완전해집니다. 이 모든 것은 권장되지 않습니다.
둘: 복원
1): 컨테이너가 아닌 곳에서 복원
1: 복원을 위한 직접 명령
mysql -uroot -p123456 < /var/backup/emp_2022-03-15.sql
2: mysql 입력 후 소스 복원
mysql -uroot -p source /var/backup/emp_2022-03-15.sql
2): 컨테이너 mysql 복원
mysql 컨테이너에 들어가야 함 복원합니다.
#复制备份文件到容器中的var目录 sudo docker cp /var/backup/emp_2022-03-17.sql mysql:/var #进入容器 sudo docker exec -it mysql bin/bash #进入mysql mysql -uroot -p #使用备份sql恢复数据库 source /var/backup/emp_2022-03-15.sql #或者不进入mysql直接容器中还原 mysql -uroot -p123456 < /var/backup/emp_2022-03-15.sql
3개: 예약된 작업
1): 예약된 작업 설정
crontab -e
내용은 다음과 같습니다.
0 2 * * * find /backup/ -mtime +1 -name "*.sql" -delete && sudo docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p123456 --all-databases' > /var/backup/music_`date +%F`.sql
명령 설명:
매일 오전 2시에 실행
find /backup/ -mtime +1 -name "*.sql" -delete #删除2天前的备份任务,即保留3个版本。根据需要自己选择。
2): 예약된 작업은 실행되지 않습니다
업데이트: 두 번째 백업 파일이 없는 것으로 확인되었으니 크론 로그를 확인해 보세요. 그렇지 않은 경우 cron 로그를 활성화하십시오. 방법은 다음과 같습니다.
#编辑系统日志文件 vim /etc/rsyslog.d/50-default.conf #去掉前面的#注释符号 cron.* /var/log/cron.log #重启日志服务 systemctl restart rsyslog.service
예약된 작업 표시를 확인하여
cat /var/log/cron.log .... CRON[2015636]: (root) CMD (find /backup/ -mtime +1 -name "*.sql" -delete && sudo docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p123456 --all-databases' > /var/backup/music_`date +) ....
명령어 뒤의 %F`.sql이 표시되지 않는 것을 확인합니다. 그 이유는 %가 변수이고, 이스케이프 문자가 추가되어 있기 때문입니다. 원래 문자를 유지합니다.
0 2 * * * find /backup/ -mtime +1 -name "*.sql" -delete && sudo docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p123456 --all-databases' > /var/backup/music_`date +\%F`.sql
저장하면 테스트가 적용됩니다.
위 내용은 docker MySQL은 매일 자동 백업을 실현합니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Docker 이미지를 업데이트하는 단계는 다음과 같습니다. 최신 이미지 태그 가져 오기 새 이미지 특정 태그의 이전 이미지 삭제 (선택 사항) 컨테이너를 다시 시작하십시오 (필요한 경우)

도커 컨테이너를 종료하는 4 가지 명령 사용 Docker Kill & lt; Container_name & gt; 호스트 터미널의 명령 (힘 출구)

Docker의 외부 호스트에 파일을 복사하는 방법 : Docker CP 명령 사용 : Docker CP 실행 [옵션] & lt; 컨테이너 경로 & gt; & lt; 호스트 경로 & gt;. 데이터 볼륨 사용 : 호스트에서 디렉토리를 만들고 -V 매개 변수를 사용하여 양방향 파일 동기화를 달성하기 위해 컨테이너를 만들 때 컨테이너에 디렉토리를 장착하십시오.

Docker 컨테이너를 다시 시작하는 방법 : 컨테이너 ID (Docker PS)를 가져옵니다. 컨테이너 중지 (Docker Stop & lt; container_id & gt;); 컨테이너를 시작하십시오 (Docker start & lt; container_id & gt;); 재시작이 성공했는지 확인하십시오 (Docker PS). 기타 방법 : Docker Compose (Docker-Compose Restart) 또는 Docker API (Docker 문서 참조).

Docker Desktop을 사용하는 방법? Docker Desktop은 로컬 머신에서 Docker 컨테이너를 실행하는 도구입니다. 사용 단계는 다음과 같습니다. 1. Docker Desktop 설치; 2. Docker Desktop을 시작하십시오. 3. Docker 이미지를 만듭니다 (Dockerfile 사용); 4. Docker Image 빌드 (Docker 빌드 사용); 5. 도커 컨테이너를 실행하십시오 (Docker Run 사용).

도커 프로세스보기 방법 : 1. Docker CLI 명령 : Docker PS; 2. Systemd Cli 명령 : SystemCTL 상태 Docker; 3. Docker Compose CLI 명령 : Docker-Compose PS; 4. 프로세스 탐색기 (Windows); 5. /Proc Directory (Linux).

단계를 따르면 Docker 컨테이너 이름을 쿼리 할 수 있습니다. 모든 컨테이너 (Docker PS)를 나열하십시오. 컨테이너 목록을 필터링합니다 (GREP 명령 사용). 컨테이너 이름 ( "이름"열에 위치)을 가져옵니다.

Docker에서 MySQL을 시작하는 프로세스는 다음 단계로 구성됩니다. MySQL 이미지를 가져와 컨테이너를 작성하고 시작하고 루트 사용자 암호를 설정하고 포트 확인 연결을 매핑하고 데이터베이스를 작성하고 사용자는 데이터베이스에 모든 권한을 부여합니다.
