배포 및 유지보수 / 백업 및 마이그레이션
이 문서는 DataFlux Func 데이터를 백업하고 마이그레이션하는 방법을 주로 설명합니다.
1. 데이터베이스 백업
DataFlux Func는 데이터베이스를 자동으로 정기적으로 .sql 파일로 백업하며, DataFlux Func 데이터베이스 백업 디렉터리에 저장합니다.
이 기능은 mysqldump를 사용하여 데이터베이스를 백업합니다. 데이터베이스에 연결하는 MySQL 사용자에게는 정상적으로 백업하려면 충분한 권한이 필요하며, 여기에는 다음이 포함됩니다:
SELECTRELOADLOCK TABLESREPLICATION CLIENTSHOW VIEWPROCESS
자동 백업에는 다음이 포함됩니다:
- 완전한 데이터베이스 테이블 생성 구조
- 로그 및 작업 기록을 제외한 모든 데이터
기본적으로 데이터베이스 백업 파일은 다음 위치에 저장됩니다:
| 환경 | 위치 |
|---|---|
| 컨테이너 내부 | /data/sqldump/ |
| 호스트 내부 | {설치 디렉터리}/data/sqldump/ |
기본적으로 데이터베이스 백업 파일은 매시간 정각에 한 번 백업되며, 최대 7일(총 168개) 동안 보관됩니다. 파일 이름 규칙은 다음과 같습니다:
| Text Only | |
|---|---|
1 | |
2. 데이터베이스 내보내기 / 가져오기
DataFlux Func에 내장된 정기 데이터베이스 백업 외에도 mysqldump를 사용하여 데이터를 직접 내보내고 가져올 수 있습니다.
2.1 데이터 내보내기
내보내기 작업의 참조 명령은 다음과 같습니다:
| Bash | |
|---|---|
1 | |
2.2 데이터 가져오기
가져오기 작업의 참조 명령은 다음과 같습니다:
| Bash | |
|---|---|
1 | |
3. 데이터베이스 마이그레이션
시스템 설치 후 초기 단일 서버 검증 단계를 통과했다면 데이터베이스를 외부 데이터베이스(예: Alibaba Cloud RDS, Redis)로 전환해야 하는 경우, 다음 단계에 따라 수행할 수 있습니다:
외부 데이터베이스를 사용할 때 MySQL 버전이 5.7 이상이고 Redis 버전이 5.0 이상인지 확인해야 합니다
DataFlux Func는 클러스터 배포된 Redis를 지원하지 않습니다
3.1 환경 확인
외부 데이터베이스 인스턴스에 데이터베이스를 생성하고 다음 구성 항목을 확인하세요:
innodb-large-prefix=oncharacter-set-server=utf8mb4collation-server=utf8mb4_unicode_ci
3.2 데이터 가져오기
위의 '데이터베이스 백업'에 따라 가장 최근의 MySQL 데이터베이스 백업 파일을 찾아 외부 데이터베이스로 가져옵니다.
3.3 DataFlux Func 구성 수정
DataFlux Func 구성 user-config.yaml을 찾아 실제 상황에 따라 다음 필드 내용을 추가/수정합니다:
| YAML | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
3.4 Docker Stack 구성 수정
Docker Stack 구성 docker-stack.yaml을 찾아 MySQL과 Redis 관련 부분을 삭제합니다(주석 처리하면 됩니다).
3.5 DataFlux Func 재시작
배포 및 유지보수 / 업그레이드 및 재시작 항목에 따라 DataFlux Func 전체를 재시작합니다.
4. 설치 디렉터리 변경
어떤 경우에는 기존에 DataFlux Func를 설치한 디스크 용량이 부족하여 설치 디렉터리를 새 대용량 디스크로 변경해야 할 수 있습니다.
이 경우 다음 절차에 따라 설치 디렉터리를 변경할 수 있습니다.
4.1 DataFlux Func 중지
docker stack rm dataflux-func명령을 사용하여 DataFlux Func를 중지합니다(이 단계는 시간이 걸릴 수 있습니다).docker ps를 사용하여 모든 컨테이너가 종료되었는지 확인합니다.cp {설치 디렉터리} {새 설치 디렉터리}명령을 사용하여 DataFlux Func의 전체 설치 디렉터리를 새 위치로 복사합니다./etc/dataflux-func를 열고 여기에 기록된 설치 디렉터리를 새 설치 디렉터리로 변경합니다.- Docker Stack 구성 수정
Docker Stack 구성 docker-stack.yaml을 찾아 모든 volumes에서 설치 디렉터리와 관련된 내용을 새 설치 디렉터리로 변경합니다. 예:
| Diff | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
docker stack deploy dataflux-func -c {설치 디렉터리}/docker-stack.yaml --resolve-image never명령을 사용하여 모든 서비스를 재시작합니다.
설치 패키지의 이미지 파일 자체가 이미 로컬로 가져와져 있으므로 --resolve-image never 매개변수를 추가하면 Docker가 컨테이너를 시작할 때 의미 없는 이미지 검사를 피할 수 있습니다