Kubernetes 포드에서 실행되는 MariaDB 데이터베이스를 백업하는 방법



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:~$ 

좋은 웹페이지 즐겨찾기