• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    해결됨

docker-compose 이후 스크립트 실행에 에러가 납니다...

21.04.21 21:58 작성 조회수 808

0

강사님 강의를 들으면서 모든 스크립트는 제가 거의 직접 타이핑 해서 수업을 진행하고 있습니다

docker compose 파일을 만들어서 배포하는 수업을 듣고 있는데 

스크립트 파일을 실행하면 에러가 납니다..

혹시 제가 타이핑 하다가 실수 하였나 싶어 강사님 강의 파일을 그대로 복붙해서 다시 실행을 해도 에러가 납니다...ㅠㅠ

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

에러내용인데...왜 엑세스 디나이드 에러가 나는지 저는 모르겠네요...

centos 피시에 도커를 설치하여 진행중이며 실제 작업은 맥북에서 ssh로 리눅스 접속해서 작업하고 있습니다.

공유기로 내부 ip로 접속해서 여태 진행했었는데 앞 수업까지는 잘 진행되다가 스크립트 부분에서 막히네요...

답변 4

·

답변을 작성해보세요.

0

윌던님의 프로필

윌던

질문자

2021.04.24

강사님 말씀처럼 스크립트를 구분해서 replication 부분부터 순서대로 진행했는데

replication 부분에서 바로 딱 에러가 뜨네요

--- 에러 내용---

ERROR 1794 (HY000) at line 1: Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.

ERROR 1794 (HY000) at line 1: Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.

ERROR 1794 (HY000) at line 1: Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.

ERROR 1794 (HY000) at line 1: Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.

---

계속된 질문에도 친절한 답변을 해주셔서 너무 감사드립니다

안녕하세요.

각 db container에 server-id가 세팅이 안되어 있는 거 같은데요.
각 아래 디렉토리에 my.cnf 파일이 있나요.

/db/db001/conf/

/db/db002/conf/

/db/db003/conf/

윌던님의 프로필

윌던

질문자

2021.04.24

답변 감사합니다...

해당 디렉토리에 확인결과

my.cnf 파일이 없어서 다시 만들어서 docker-compose up -d 하고 스크립트 실행까지 다시 해봤는데

여전히 에러가 납니다.

일단 뭔가 중간에 잘못 한게 없는지 수업 내용을 다시 확인하고 처음부터 다시 해봐야 겠습니다..ㅠㅠ

소중한 주말에도 답변 주셔서 너무 감사드립니다

에고 주말에 고생이 많으세요.

각 디렉토리의 퍼미션도 같이 확인 부탁드려요.

my.cnf파일이 있어도 퍼미션이 잘못되어 있으면 적용이 안될 수 있습니다.

윌던님의 프로필

윌던

질문자

2021.04.25

안녕하세요. 강사님

수업 중 계속 pull 받은 이미지들을 모두 삭제를 한뒤, 디렉토리도 모두 삭제하고 cnf 파일들도 모두 다시 작성한뒤 다시 docker-compose up -d를 바로 실행하고 스크립트 파일을 실행하니 정상적으로 작동합니다

강사님 덕분에 이것저것 해보면서 많은 도움이 되었습니다

근데 여기서 궁금한게 생겼는데, proxysql 컨테이너를 생성한뒤, proxysql 접속할 때 컨테이너에 접속하지 않고 바로 mysql 명령어를 사용하시던데, 

강사님 centos 서버에 기본적으로 mysql client가 설치되어 있는 상태이신건가요??(수업에서는 따로 언급하는 부분이 없는거 같던데)

서버에 저는 안깔려 있는 상태에서 하려하니 mysql: command not found 에러가 나서요...

안녕하세요.

chapter3에 1분 48초 정도에 보시면 docker host에 mysql client를 설치하는 과정이 있습니다.

해당 부분 참고하셔서 설치하시면 될 거 같습니다.

0

안녕하세요.

일단 생성된 db container에 접속하는 데는 문제가 없는 상태인 거 같은데요.

실제 post_script.sh 파일에서 하는 작업도 각 db container에 접속해서 쿼리를 실행하는 거라서

현재처럼 db container를 통한 db접속이 가능한 상태라면 에러가 없어야 할 거 같습니다.

혹시 아래와 같이 간단한 script 실행시에는 어떤가요?

# vi test.sh

MASTER_NODE='db001'

EXEC_MASTER="docker exec ${MASTER_NODE} mysql -uroot -proot -N -e "

${EXEC_MASTER} "SELECT @@version" 2>&1 | grep -v "Using a password"

# sh test.sh

윌던님의 프로필

윌던

질문자

2021.04.24

해당 스크립트 만들어서 실행하면 캡쳐 사진 처럼 버전 정보가 제대로 조회 되고 있습니다...

컨테이너 접속에는 아무런 문제가 없는거 같은데...

계속 답변을 빨리 달아 주셔서 감사합니다

안녕하세요.

위 스크립트내에서 db001 대신 db002, db003으로 변경해서 테스트 해보시고 결과가 잘 나오면

컨테이너의 문제는 아닌 거 같구요.

스크립트 내에서 복사하면서 특수문자가 포함됐거나 오타의 문제일 가능성이 높습니다.

db002, 003에 대해서 테스트 해보시고 문제가 없다면 사용하신 스크립트 파일을 여기에 올려주시겠어요?

윌던님의 프로필

윌던

질문자

2021.04.24

MASTER_NODE='db001' SLAVE01_NODE='db002' SLAVE02_NODE='db003' EXEC_MASTER="docker exec ${MASTER_NODE} mysql -uroot -proot -N -e " EXEC_SLAVE01="docker exec ${SLAVE01_NODE} mysql -uroot -proot -e " EXEC_SLAVE02="docker exec ${SLAVE02_NODE} mysql -uroot -proot -e " ## For Replication ${EXEC_MASTER} "CREATE USER 'repl'@'%' IDENTIFIED BY 'repl'" 2>&1 | grep -v "Using a password" ${EXEC_MASTER} "GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'" 2>&1 | grep -v "Using a password" ${EXEC_SLAVE01} "reset master" 2>&1 | grep -v "Using a password" ${EXEC_SLAVE01} "CHANGE MASTER TO MASTER_HOST='${MASTER_NODE}', \ MASTER_USER='repl', MASTER_PASSWORD='repl', \ MASTER_AUTO_POSITION=1" 2>&1 | grep -v "Using a password" ${EXEC_SLAVE01} "START SLAVE" 2>&1 | grep -v "Using a password" ${EXEC_SLAVE02} "reset master" 2>&1 | grep -v "Using a password" ${EXEC_SLAVE02} "CHANGE MASTER TO MASTER_HOST='${MASTER_NODE}', \ MASTER_USER='repl', MASTER_PASSWORD='repl', \ MASTER_AUTO_POSITION=1" 2>&1 | grep -v "Using a password" ${EXEC_SLAVE02} "START SLAVE" 2>&1 | grep -v "Using a password" ## For Orchestrator ${EXEC_MASTER} "CREATE USER orc_client_user@'%' IDENTIFIED BY 'orc_client_password'" 2>&1 | grep -v "Using a password" ${EXEC_MASTER} "GRANT SUPER, PROCESS, REPLICATION SLAVE, RELOAD ON *.* TO orc_client_user@'%'" 2>&1 | grep -v "Using a password" ${EXEC_MASTER} "GRANT SELECT ON mysql.slave_master_info TO orc_client_user@'%'" 2>&1 | grep -v "Using a password" ## For ProxySQL ${EXEC_MASTER} "CREATE DATABASE testdb DEFAULT CHARACTER SET=utf8" 2>&1 | grep -v "Using a password" ${EXEC_MASTER} "CREATE USER appuser@'%' IDENTIFIED BY 'apppass'" 2>&1 | grep -v "Using a password" ${EXEC_MASTER} "GRANT SELECT, INSERT, UPDATE, DELETE ON testdb.* TO appuser@'%'" 2>&1 | grep -v "Using a password" ${EXEC_MASTER} "CREATE USER monitor@'%' IDENTIFIED BY 'monitor'" 2>&1 | grep -v "Using a password" ${EXEC_MASTER} "GRANT REPLICATION CLIENT ON *.* TO monitor@'%'" 2>&1 | grep -v "Using a password" ## For Prometheus ${EXEC_MASTER} "CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'exporter123' WITH MAX_USER_CONNECTIONS 3" 2>&1 | grep -v "Using a password" ${EXEC_MASTER} "GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost'" 2>&1 | grep -v "Using a password" docker exec ${MASTER_NODE} sh /opt/exporters/node_exporter/start_node_exporter.sh docker exec ${MASTER_NODE} sh /opt/exporters/mysqld_exporter/start_mysqld_exporter.sh docker exec ${SLAVE01_NODE} sh /opt/exporters/node_exporter/start_node_exporter.sh docker exec ${SLAVE01_NODE} sh /opt/exporters/mysqld_exporter/start_mysqld_exporter.sh docker exec ${SLAVE02_NODE} sh /opt/exporters/node_exporter/start_node_exporter.sh docker exec ${SLAVE02_NODE} sh /opt/exporters/mysqld_exporter/start_mysqld_exporter.sh EXEC_PROXY="mysql -h127.0.0.1 -P16032 -uradmin -pradmin -e " ${EXEC_PROXY} "INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (10, 'db001', 3306)" 2>&1 | grep -v "Using a password" ${EXEC_PROXY} "INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (20, 'db001', 3306)" 2>&1 | grep -v "Using a password" ${EXEC_PROXY} "INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (20, 'db002', 3306)" 2>&1 | grep -v "Using a password" ${EXEC_PROXY} "INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (20, 'db003', 3306)" 2>&1 | grep -v "Using a password" ${EXEC_PROXY} "INSERT INTO mysql_replication_hostgroups VALUES (10,20,'read_only','')" 2>&1 | grep -v "Using a password" ${EXEC_PROXY} "LOAD MYSQL SERVERS TO RUNTIME" 2>&1 | grep -v "Using a password" ${EXEC_PROXY} "SAVE MYSQL SERVERS TO DISK" 2>&1 | grep -v "Using a password" ${EXEC_PROXY} "INSERT INTO mysql_users(username,password,default_hostgroup,transaction_persistent) VALUES ('appuser','apppass',10,0)" 2>&1 | grep -v "Using a password" ${EXEC_PROXY} "LOAD MYSQL USERS TO RUNTIME" 2>&1 | grep -v "Using a password" ${EXEC_PROXY} "SAVE MYSQL USERS TO DISK" 2>&1 | grep -v "Using a password" ${EXEC_PROXY} "INSERT INTO mysql_query_rules(rule_id,active,match_pattern,destination_hostgroup) VALUES (1,1,'^SELECT.*FOR UPDATE$',10)" 2>&1 | grep -v "Using a password" ${EXEC_PROXY} "INSERT INTO mysql_query_rules(rule_id,active,match_pattern,destination_hostgroup) VALUES (2,1,'^SELECT',20)" 2>&1 | grep -v "Using a password" ${EXEC_PROXY} "LOAD MYSQL QUERY RULES TO RUNTIME" 2>&1 | grep -v "Using a password" ${EXEC_PROXY} "SAVE MYSQL QUERY RULES TO DISK" 2>&1 | grep -v "Using a password"

윌던님의 프로필

윌던

질문자

2021.04.24

강사님 자료를 그대로 다운 받아서 옮긴거라서...크게 보실건 없으실거 같은데

일단 제가 사용한 스크립트 파일을 올렸습니다

계속해서 관심 가져 주셔서 감사합니다

안녕하세요.

테스트 스크립트에서는 에러없이 정상적으로 db001, 002,003에 접속되는 게 확인이 됐으니까,

해당 테스트 스크립트에 내용을 추가해서 실행해 보는 건 어떨까요?

post_script.sh에 각 단계별로 스크립트가 구분되어 있는데요.

- For Replication

- For Orchestrator

- For ProxySQL

- For Prometheus

Replication 부분만 추가해서 실행해 보시고, 에러 없이 실행되면 다음 단계 내용을 추가해서

실행해 보는 형태로 하다보면 어떤 구문에서 에러가 나는 지를 찾을 수 있을 거 같은데요.

0

윌던님의 프로필

윌던

질문자

2021.04.23

요즘 바빠서 강사님 글을 놓치고 있었네요

docker compose 실행 후에 컨테이너들 정상적으로 실행중이며, 


강사님이 알려주신 명령을 입력하니 패스워드 보인다고 경고창 뜨는데... 어떤 결과가 나오는게 정상인건가요?

아직도 해결하지 못하고 있습니다..

흑흑...

0

안녕하세요.

docker-compose.yml 파일을 이용해서 docker-compose up 이후에

post_script.sh를 실행할때 에러가 발생하는 거죠?

"docker-compose up -d "를 실행한 이후에 docker ps 명령어를 통해서 모든 container가

실행 중인 것을 확인하셨나요?

그리고 스크립트 실행 전에 개별 명령어로 아래 명령을 실행 했을 때 동일하게 에러가 발생하나요?

#docker exec db001 mysql -uroot -proot -N -e "select @@version"