들어가며
- mysql 에 존재하는 DB 데이터를 백업 및 복구하는 방법에 대해 알 수 있습니다.
- docker container 를 이용해 백업 및 복구를 진행합니다.
내용
백업 방법
사용자의 필요에 따라 백업하는 대상이 다를 수 있습니다. 아래 백업 대상을 확인하고, 백업을 진행할 수 있습니다.
- Container 접속 방법
: sodaflow 는 제품을 위해 여러 pod 가 container 형태로 존재합니다. DB 또한 container 를 통한 접속으로 작업을 진행할 수 있습니다.
a. 동작 중인 mariadb container 확인docker ps --filter name=mariadb CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ca585d373df9 hub.sparklingsoda.io:80/bitnami/mariadb "/opt/bitnami/script…" 2 weeks ago Up 2 weeks k8s_mariadb_mariadb-cluster-secondary-0_sodaflow_3a81018d-a264-45f6-ac5f-b0983efe7e34_0 a5cb9aaa8dff hub.sparklingsoda.io:80/bitnami/mariadb "/opt/bitnami/script…" 2 weeks ago Up 2 weeks k8s_mariadb_mariadb-cluster-primary-0_sodaflow_e860e3da-1dfc-46a4-9801-342570473261_0 8c1e3136a122 spsd.docker.io:15001/pause:3.2 "/pause" 2 weeks ago Up 2 weeks k8s_POD_mariadb-cluster-secondary-0_sodaflow_3a81018d-a264-45f6-ac5f-b0983efe7e34_0 4e7f29bfbfe0 spsd.docker.io:15001/pause:3.2 "/pause" 2 weeks ago Up 2 weeks k8s_POD_mariadb-cluster-primary-0_sodaflow_e860e3da-1dfc-46a4-9801-342570473261_0
b. NAME 값 및 CONTAINER ID 값 확인
❗️sodaflow 3.0 기준 NAME : k8s_mariadb_devai-service-mariadb-<UUID>
❗️sodaflow 4.0 이상 기준 NAME : k8s_mariadb_mariadb-cluster-primary-0-<UUID>
현재 NAME 값 예시 : k8s_mariadb_mariadb-cluster-primary-0_sodaflow_e860e3da-1dfc-46a4-9801-342570473261_0
NAME 값에 해당하는 CONTAINER ID 값 : a5cb9aaa8dff
c. Container 접속
접속이 완료되면 "root@mariadb-cluster-primary-0:/#" 창을 확인할 수 있습니다.docker exec -it -u root ca585d373df9 bash root@mariadb-cluster-primary-0:/#
- DB 조회 방법
: DB 를 백업하기 전 데이터를 확인하는 방법에 대해 알아야합니다.
a. Database 접근 방법
Database 에 접근해야 table 및 table data 를 확인할 수 있습니다.
❗️sodaflow 3.0 기준 DB 명 : soda
❗️sodaflow 4.0 이상 DB 명 : sodaflowroot@mariadb-cluster-primary-0:/# mysql -u root -p sodaflow; Enter password: dbadmin01 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 MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 277169 Server version: 10.5.8-MariaDB-log Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [sodaflow]>
b. table 조회 방법MariaDB [sodaflow]> show tables; +-------------------------+ | Tables_in_sodaflow | +-------------------------+ | user | +-------------------------+
c. 특정 table data 조회 방법
예시 ) 테이블 명 : userMariaDB [sodaflow]> select * from user; +-----------+-----------+-----------+---------------------+---------------------+--------------------------------------------------------------+-----------+--------+ | id | user_id | user_name | notebook_token | user_email | user_pwd | pwd_error | active | +-----------+-----------+-----------+---------------------+---------------------+--------------------------------------------------------------+-----------+--------+ | admin | admin | admin | TOKEN11290293e93024 | [email protected] | $2b$12$x1LJJtlg8tL4G00Unn2ONuDtgq9yVJuXJvC04P1G2fxev2JLj82wS | 0 | 1 | | agile | agile | agile | TOKEN1129211a71e075 | [email protected] | $2b$12$zT5.zP4bFIr6ecL6fxzIHOsRTFNDv4h0/zUG6rSoxp12NTt66qJKi | 0 | 1 | | superuser | superuser | superuser | TOKEN112907f0004d2e | [email protected] | $2b$12$U1f3GwENWO14hHsnNrwaQOkA5.UYr5ptEG/bI4nGIct.cSAPF23Le | 0 | 1 | +-----------+-----------+-----------+---------------------+---------------------+--------------------------------------------------------------+-----------+--------+
- 백업 방법
: 백업은 DB 내부가 아닌 CONTAINER 에서 진행합니다.
➜ 화면이 아래와 같다면 exit 로 빠져나와 작업합니다.MariaDB [sodaflow]> exit Bye
➜ 작업 가능 화면a. DB 전체 백업root@mariadb-cluster-primary-0:/#
# mysqldump -u [USER] -p [DB NAME] > [BACKUP FILE NAME] root@mariadb-cluster-primary-0:/# mysqldump -u root -p sodaflow > db_all.sql Enter password: dbadmin01
b. 특정 DB TABLE 백업
➜ table 은 1개 ~ 여러 table 까지 지정이 가능합니다.
-> 단일 table : user# mysqldump -u [USER] -p [DB NAME] [TABLE NAME] > [BACKUP FILE NAME] root@mariadb-cluster-primary-0:/# mysqldump -u root -p sodaflow user > user.sql Enter password: dbadmin01
-> 여러 table : user, user_groupmysqldump -u root -p sodaflow user, user_group > user_info.sql
- 백업 데이터 복구 방법
: 백업 데이터 복구는 CONTAINER 내부에서 작업합니다.
❗️컨테이너 내부, 파일이 존재하는 위치에서 진행합니다.# mysql -u [USER] -p [DATABASE] < [RESTORE FILE NAME] root@mariadb-cluster-primary-0:/# mysql -u root -p sodaflow < user.sql Enter password: dbadmin01
파일 복제 방법
- Container -> Local
: mariadb container 에 있는 파일을 local 에 옮기는 방법에 대해 설명합니다.# docker cp [CONTAINER ID]:/[ROOT]/[FILE NAME] /[LOCAL ROOT] docker cp a5cb9aaa8dff:/user.sql /data
- Local -> Container
: local 에 있는 파일을 mariadb container 로 옮기는 방법에 대해 설명합니다.# docker cp /[LOCAL ROOT]/[FILE NAME] [CONTAINER ID]:/[ROOT] docker cp /data/user.sql a5cb9aaa8dff:/
마무리
- kubernetes 에서 root 권한이 없는 User 로 컨테이너가 생성되었을 때에는 옵션을 변경하는 것보다 docker 를 사용하여 작업하는 것이 편리합니다.
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.