ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • docker 이중화 2일차
    리눅스 2023. 8. 7. 09:57
    [기본 준비]
    netplan apply
    ping www.google.com
    apt update -y
    apt dist-upgrade -y
    reboot

    apt-get install mysql-client -y 
    apt-get install curl -y

    curl -fsSL https://get.docker.com -o get-docker.sh
    chmod +x get-docker.sh
    ./get-docker.sh

    usermod -aG docker ubuntu

    docker --version
    systemctl restart/enable/status docker

    mkdir dockerdir
    cd dockerdir
    mkdir -p /db/db001/data
    mkdir -p /db/db002/data
    mkdir -p /db/db003/data

    chmod 777 /db/db001/data
    chmod 777 /db/db002/data
    chmod 777 /db/db003/data

    docker stop db001
    docker rm db001
    docker run -it --name db001 -p 3306:3306 -v /db/db001/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="12345" -d percona:5.7.30

     

     

    설정, 로그 
    mysqld 
    my.cnf 
    mkdir -p /db/db001/data
    mkdir -p /db/db002/data
    mkdir -p /db/db003/data
    chmod 777 /db/db001/data
    chmod 777 /db/db002/data
    chmod 777 /db/db003/data

    mkdir -p /db/db001/log
    mkdir -p /db/db002/log
    mkdir -p /db/db003/log
    chmod 777 /db/db001/log
    chmod 777 /db/db002/log
    chmod 777 /db/db003/log

    mkdir -p /db/db001/conf
    mkdir -p /db/db002/conf
    mkdir -p /db/db003/conf
    chmod 777 /db/db001/conf
    chmod 777 /db/db002/conf
    chmod 777 /db/db003/conf 
    touch /db/db001/conf/my.cnf
    chmod 644 /db/db001/conf/my.cnf
    nano /db/db001/conf/my.cnf

    touch /db/db002/conf/my.cnf
    chmod 644 /db/db002/conf/my.cnf
    nano /db/db002/conf/my.cnf 

    touch /db/db003/conf/my.cnf
    chmod 644 /db/db003/conf/my.cnf
    nano /db/db003/conf/my.cnf


    docker exec -it db001 /bin/bash
    docker exec -it db002 /bin/bash
    docker exec -it db003 /bin/bash

     

    my.cnf 설정 
    [mysqld]
    log_bin                     = mysql-bin
    binlog_format               = ROW
    gtid_mode                   = ON
    enforce-gtid-consistency    = true
    server-id                   = 100
    log_slave_updates
    datadir                     = /var/lib/mysql
    socket                      = /var/lib/mysql/mysql.sock

    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links              = 0

    log-error                   = /var/log/mysql/mysqld.log
    pid-file                    = /var/run/mysqld/mysqld.pid

    report_host                 = db001

    [mysqld_safe]
    pid-file                    = /var/run/mysqld/mysqld.pid
    socket                      = /var/lib/mysql/mysql.sock
    nice                        = 0
    [mysqld]
    log_bin                     = mysql-bin
    binlog_format               = ROW
    gtid_mode                   = ON
    enforce-gtid-consistency    = true
    server-id                   = 200
    log_slave_updates
    datadir                     = /var/lib/mysql
    socket                      = /var/lib/mysql/mysql.sock
    read_only
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links              = 0

    log-error                   = /var/log/mysql/mysqld.log
    pid-file                    = /var/run/mysqld/mysqld.pid

    report_host                 = db002

    [mysqld_safe]
    pid-file                    = /var/run/mysqld/mysqld.pid
    socket                      = /var/lib/mysql/mysql.sock
    nice                        = 0
    [mysqld]
    log_bin                     = mysql-bin
    binlog_format               = ROW
    gtid_mode                   = ON
    enforce-gtid-consistency    = true
    server-id                   = 300
    log_slave_updates
    datadir                     = /var/lib/mysql
    socket                      = /var/lib/mysql/mysql.sock
    read_only
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links              = 0

    log-error                   = /var/log/mysql/mysqld.log
    pid-file                    = /var/run/mysqld/mysqld.pid

    report_host                 = db003

    [mysqld_safe]
    pid-file                    = /var/run/mysqld/mysqld.pid
    socket                      = /var/lib/mysql/mysql.sock
    nice                        = 0

     

    [bridge 생성]
    docker network create --driver bridge mybrige

    docker network ls

    docker run -it --name db001 -h db001 -p 3306:3306 \
    --net mybrige --net-alias=db001 \
    -v /db/db001/data:/var/lib/mysql \
    -v /db/db001/log:/var/log/mysql \
    -v /db/db001/conf:/etc/percona-server.conf.d \
    -e MYSQL_ROOT_PASSWORD="12345" -d percona:5.7.30

    docker run -it --name db002 -h db002 -p 3307:3306 \
    --net mybrige --net-alias=db002 \

    -v /db/db002/data:/var/lib/mysql \
    -v /db/db002/log:/var/log/mysql \
    -v /db/db002/conf:/etc/percona-server.conf.d \
    -e MYSQL_ROOT_PASSWORD="12345" -d percona:5.7.30

    docker run -it --name db003 -h db003 -p 3308:3306 \
    --net mybrige --net-alias=db003 \

    -v /db/db003/data:/var/lib/mysql \
    -v /db/db003/log:/var/log/mysql \
    -v /db/db003/conf:/etc/percona-server.conf.d \
    -e MYSQL_ROOT_PASSWORD="12345" -d percona:5.7.30
    docker inspect [컨테이너,이미지,네트워크 또는 이름과 ID] - 상세 정보 출력
    -h : 컨테이너에 호스트 이름을 설정하는 데 사용됩니다. 컨테이너 내부에서 호스트 이름이 설정되면
           해당 컨테이너는 호스트 이름을 사용하여 자신을 식별할 수 있습니다.
    docker create --driver bridge mybrige
    -> 컨테이너를 생성하는 데에는 docker create 명령어를 사용하며, 컨테이너를 생성할 때
    --driver bridge 와 같은 옵션을 사용하지 않습니다. 컨테이너를 생성하는 데 필요한 옵션은 컨테이너가 실행되는 이미지, 컨테이너 이름, 네트워크 연결 등을 정의하는 것입니다.

     

     

    bridge 생성 후 ping 되는걸 확인 할 수 있다

     

     

    [db001(master)에서 복제에 사용할 유저 생성,권한 부여]
    slave컨테이너에 접속해서 master 서버로 연결 --> 복제 실시
    docker exec -it -uroot db001 /bin/bash
    mysql -uroot -p12345
    create user 'repl'@'%' identified by '12345'';
    grant replication slave on *.* to 'repl'@'%';
    flush privileges;

     

    docker exec -it -uroot db002 /bin/bash
    mysql -uroot -p12345
    reset master;
    change master to master_host='db001', master_user='repl', master_password='12345', master_auto_position=1;
    start slave;
    show slave status\G;

     

     

    docker exec -it -uroot db003 /bin/bash
    mysql -uroot -p12345
    reset master;
    change master to master_host='db001', master_user='repl', master_password='12345', master_auto_position=1;
    start slave;
    show slave status\G;

     

     

    [docker 정보 조회 명령어]
    docker ps
    docker network ls
    docker images
    docker db001/2/3 

     

    orchestrator
    docker run -it --name orchestrator -h orchestrator -p 3000:3000 \
    --net mybridge --net-alias=orchestrator -d openarkcode/orchestrator:latest

    docker ps 

    docker inspect db001 | grep "IPAddress"  --> 172.18.0.2

     

     

    orchestrator 가 사용할 mysql 계정생성
    docker exec -it -uroot db001 /bin/bash
    mysql -uroot -p12345

    create user 'orc_client_user'@'172.%' identified by '12345';
    grant super, process, replication slave, reload  on *.* to 'orc_client_user'@'172.%';
    grant select on mysql.slave_master_info to 'orc_client_user'@'172.%';
    flush privileges;
    vmware 접속후 firefox
    172.17.0.1:3000/web/clusters 접속
    (doker 주소)     (orchestrator 주소)

     

    기존 만들어던 유저 삭제
    use mysql;
    delete from user where user='orc_client_user';
    drop user 'orc_client_user'@'172.%';
    flush privileges;
    Replication 유저 생성

    복제 구성에 사용할 유저를 생성 합니다.
    create user 'orc_client_user'@'172.%' identified by  'orc_client_password';
    grant super, process, replication slave, reload  on *.* to 'orc_client_user'@'172.%';
    grant select on mysql.slave_master_info to 'orc_client_user'@'172.%';
    flush privileges;

     

    bash-4.4# cat /etc/orchestrator.conf.json | grep Password
      "MySQLTopologyPassword": "orc_client_password",
      "HTTPAuthPassword": "",
    -> 파일에는 orchestrator라는 도구의 설정 파일이 위치하며, 일반적으로 MySQL 데이터베이스 클러스터를 관리하는 데 사용됩니다. 

     


    '리눅스' 카테고리의 다른 글

    8/9  (0) 2023.08.09
    docker 3일차  (0) 2023.08.08
    docker 명령어  (0) 2023.08.04
    Mysql 실습  (0) 2023.08.04
    유저,그룹,권한  (0) 2023.08.03
Designed by Tistory.