Kubernetes 포드에서 실행되는 MariaDB 데이터베이스를 백업하는 방법
9524 단어 backupkubernetesdockermariadb
MariaDB 데이터베이스를 백업(및 복원)하는 가장 쉬운 방법은 the
mysqldump
tool을 사용하는 것입니다. 이는 데이터베이스에 방대한 양의 데이터가 없을 때 특히 그렇습니다. mysqldump
는 대부분의 데이터베이스 엔진에서 가져올 수 있으므로 매우 편리한 SQL 형식으로 데이터를 덤프합니다. 자세한 내용은 this MariaDB documentation을 참조하십시오.그러나 컨테이너에서 실행되는 데이터베이스를 어떻게 백업합니까? 먼저 데이터베이스가 포함된 Kubernetes Pod의 이름을 가져옵니다.
ubuntu@ubuntu:~$ microk8s.kubectl get all
NAME READY STATUS RESTARTS AGE
pod/mediawiki-app-55f45cf568-gmpzv 1/1 Running 2 5d22h
pod/mediawiki-db-5cb8db589f-r6q8k 1/1 Running 0 5d23h
pod/my-nginx-9b596c8c4-4jp7d 1/1 Running 15 102d
pod/my-nginx-9b596c8c4-fnlm7 1/1 Running 2 12d
pod/my-nginx-9b596c8c4-hmz4r 1/1 Running 2 12d
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 104d
service/mediawiki-db-srv NodePort 10.152.183.195 <none> 3306:31501/TCP 5d23h
service/mediawiki-srv NodePort 10.152.183.17 <none> 80:32681/TCP 28d
service/my-nginx-np NodePort 10.152.183.73 <none> 80:30178/TCP 102d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/mediawiki-app 1/1 1 1 11d
deployment.apps/mediawiki-db 1/1 1 1 5d23h
deployment.apps/my-nginx 3/3 3 3 102d
NAME DESIRED CURRENT READY AGE
replicaset.apps/mediawiki-app-5494668f87 0 0 0 5d23h
replicaset.apps/mediawiki-app-55f45cf568 1 1 1 5d23h
replicaset.apps/mediawiki-app-75cb9c97d7 0 0 0 11d
replicaset.apps/mediawiki-db-5cb8db589f 1 1 1 5d23h
replicaset.apps/my-nginx-9b596c8c4 3 3 3 102d
ubuntu@ubuntu:~$
내 설정에서는 포드
mediawiki-db-5cb8db589f-r6q8k
입니다(내 Kubernetes Deployment manifest file에서 내 MariaDB 배포mediawiki-db
라는 이름을 지정했기 때문에 이것을 알고 있습니다). 이제 배포 이름을 알았으므로 해당 IP 주소를 찾아야 합니다. kubectl describe
명령을 사용하여 쉽게 수행할 수 있습니다. 표준microk8s.
명령):ubuntu@ubuntu:~$ microk8s.kubectl describe pod mediawiki-db-5cb8db589f-r6q8k
Name: mediawiki-db-5cb8db589f-r6q8k
# -- snip --
IP: 10.1.49.32
IPs:
IP: 10.1.49.32
Controlled By: ReplicaSet/mediawiki-db-5cb8db589f
# -- snip --
Events: <none>
간단한
kubectl
명령을 실행하여 IP 주소가 올바른지 다시 확인할 수 있습니다.ubuntu@ubuntu:~$ ping 10.1.49.32
PING 10.1.49.32 (10.1.49.32) 56(84) bytes of data.
64 bytes from 10.1.49.32: icmp_seq=1 ttl=63 time=2.04 ms
64 bytes from 10.1.49.32: icmp_seq=2 ttl=63 time=0.615 ms
^C
--- 10.1.49.32 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.615/1.329/2.044/0.715 ms
ubuntu@ubuntu:~$
이제 IP 주소가 존재하고 활성 상태임을 알았으므로 MariaDB 데이터베이스가 실제로 실행 중인지 확인할 수 있습니다. 이렇게 하려면
ping
명령을 사용하여 해당 Pod의 MariaDB 데이터베이스에 연결할 수 있습니다. 필자의 경우 mysql
는 데이터베이스의 사용자 이름이고, wikiuser
는 해당 Kubernetes 포드의 IP 주소이며, 10.1.49.32
는 이전에 생성한 데이터베이스의 이름입니다.ubuntu@ubuntu:~$ mysql -u wikiuser -p -h 10.1.49.32 my_wiki
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 160
Server version: 5.5.5-10.3.22-MariaDB-0+deb10u1 Raspbian 10
Copyright (c) 2000, 2020, 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.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> exit
Bye
ubuntu@ubuntu:~$
모든 것이 잘 보이면 아래와 같이
my_wiki
명령을 실행할 수 있습니다. 이 명령은 사용자 이름( mysqldump
스위치), 암호용 -u
스위치(암호 값을 생략하면 -p
가 하나를 요구함), IP 주소( mysqldump
스위치) 및 덤프할 데이터베이스. 기본적으로 -h
는 데이터베이스를 생성하고 채우는 SQL 문을 표준 출력으로 출력합니다. 따라서 파일로 백업하려면 mysqldump
셸 연산자를 사용하여 출력을 임의의 파일 또는 선택한 파일로 간단히 리디렉션할 수 있습니다.ubuntu@ubuntu:~$ mysqldump -u wikiuser -p -h 10.1.49.32 my_wiki > my_wiki_backup.sql
Enter password:
ubuntu@ubuntu:~$ head -n 20 my_wiki_backup.sql
-- MySQL dump 10.13 Distrib 5.7.31, for Linux (aarch64)
--
-- Host: 10.1.49.32 Database: my_wiki
-- ------------------------------------------------------
-- Server version 5.5.5-10.3.22-MariaDB-0+deb10u1
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `actor`
--
ubuntu@ubuntu:~$
Reference
이 문제에 관하여(Kubernetes 포드에서 실행되는 MariaDB 데이터베이스를 백업하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/duplys/how-to-backup-mariadb-database-running-in-a-kubernetes-pod-2pd6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)