-
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 dockerdirmkdir -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.cnfmkdir -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/conftouch /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/bashmy.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.30docker 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/3orchestrator 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.2orchestrator 가 사용할 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