Database dump 방법

작성자 이경미 수정일 2022-12-15 15:25

#dump, #Mysql, #mariadb, #db dump, #db 백업


들어가며

  • mysql 에 존재하는 DB 데이터를 백업 및 복구하는 방법에 대해 알 수 있습니다.
  • docker container 를 이용해 백업 및 복구를 진행합니다. 



내용

백업 방법

사용자의 필요에 따라 백업하는 대상이 다를 수 있습니다. 
아래 백업 대상을 확인하고, 백업을 진행할 수 있습니다. 


  1. 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:/# 



  2. DB 조회 방법
    : DB 를 백업하기 전 데이터를 확인하는 방법에 대해 알아야합니다.

    a. Database 접근 방법
     Database 에 접근해야 table 및 table data 를 확인할 수 있습니다. 
    ❗️sodaflow 3.0 기준 DB 명 : soda
    ❗️sodaflow 4.0 이상 DB 명 : sodaflow

    root@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 조회 방법 

    예시 ) 테이블 명 : user

    MariaDB [sodaflow]> select * from user; 
    +-----------+-----------+-----------+---------------------+---------------------+--------------------------------------------------------------+-----------+--------+
    | id        | user_id   | user_name | notebook_token      | user_email          | user_pwd                                                     | pwd_error | active |
    +-----------+-----------+-----------+---------------------+---------------------+--------------------------------------------------------------+-----------+--------+
    | admin     | admin     | admin     | TOKEN11290293e93024 | admin@agilesoda.ai  | $2b$12$x1LJJtlg8tL4G00Unn2ONuDtgq9yVJuXJvC04P1G2fxev2JLj82wS |         0 |      1 |
    | agile     | agile     | agile     | TOKEN1129211a71e075 | agile@agilesoda.ai  | $2b$12$zT5.zP4bFIr6ecL6fxzIHOsRTFNDv4h0/zUG6rSoxp12NTt66qJKi |         0 |      1 |
    | superuser | superuser | superuser | TOKEN112907f0004d2e | admin@agilesoda.com | $2b$12$U1f3GwENWO14hHsnNrwaQOkA5.UYr5ptEG/bI4nGIct.cSAPF23Le |         0 |      1 |
    +-----------+-----------+-----------+---------------------+---------------------+--------------------------------------------------------------+-----------+--------+


  3. 백업 방법
    : 백업은 DB 내부가 아닌 CONTAINER 에서 진행합니다.
    ➜ 화면이 아래와 같다면 exit 로 빠져나와 작업합니다.
    MariaDB [sodaflow]> exit
    Bye


    ➜ 작업 가능 화면

    root@mariadb-cluster-primary-0:/# 

     

    a. DB 전체 백업
    # 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_group

    mysqldump -u root -p sodaflow user, user_group > user_info.sql


  4. 백업 데이터 복구 방법
    : 백업 데이터 복구는 CONTAINER 내부에서 작업합니다.
    ❗️컨테이너 내부, 파일이 존재하는 위치에서 진행합니다.
    # mysql -u [USER] -p [DATABASE] < [RESTORE FILE NAME]
    root@mariadb-cluster-primary-0:/# mysql -u root -p sodaflow < user.sql
    Enter password: dbadmin01


파일 복제 방법

  1. Container -> Local
    : mariadb container 에 있는 파일을 local 에 옮기는 방법에 대해 설명합니다.
    # docker cp [CONTAINER ID]:/[ROOT]/[FILE NAME] /[LOCAL ROOT] 
    docker cp a5cb9aaa8dff:/user.sql /data

  2. Local -> Container
    : local 에 있는 파일을 mariadb container 로 옮기는 방법에 대해 설명합니다. 
    # docker cp /[LOCAL ROOT]/[FILE NAME] [CONTAINER ID]:/[ROOT]
    docker cp /data/user.sql a5cb9aaa8dff:/



마무리

  • kubernetes 에서 root 권한이 없는 User 로 컨테이너가 생성되었을 때에는 옵션을 변경하는 것보다 docker 를 사용하여 작업하는 것이 편리합니다. 

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300