2020-1-22 TIL

DB 공부

  • DB에서 왜 인덱스가 필요한지. 다양한 성능을 테스트 해보기 위해 docker 1cpu 64mb로 제한을 걸어서 삽입 및 입력 테스트를 해보려고 한다.
  • 먼저 docker 1cpu 64mb 설정해야한다.

setup

  • 세팅에서부터가 문제가 생겼다. 흔히 튜토리얼에서는 아래와 같은 명령어들을 입력하라고 한다.
docker run --name mysql-db -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mypw -d mysql

// document
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mypw -d mysql:tag
  • 튜토리얼에 나와있는 명령어도 공식 문서에 나와있는 명령어도 안됬다. 우선은 docker에 있는 명령어부터 차근차근 알아야겠다.
  • docker run은 이미지로 컨테이너 생성 및 실행을 한다. docker create + docker attach를 한번에 실행하는것과 같다. -d 옵션을 넣으면 컨테이너를 백그라운드에서 돌리고 print container ID를 출력하게 된다.
  • 위의 명령어를 실행을 하니 –name뒤에 입력한 image이름으로 docker container가 실행이 된다.
 ~  docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
9ef17b76e32f        mysql               "docker-entrypoint.s…"   3 minutes ago       Up 3 minutes        3306/tcp, 33060/tcp   jimmy-mysql
  • docker ps를 해보니 mysql 컨테이너가 정상적으로 실행되는 것을 확인할 수 있다.
$docker inspect jimmy-mysql
$mysql -h 172.17.0.3 -p 3306 --protocol=tcp -u root
ERROR 2003 (HY000): Can't connect to MySQL server on '172.17.0.3' (61)

docker exec -it jimmy-mysql mysql -u root - p => this command can connect
  • docker inspect jimmy-mysql 명령어를 통해 동작중인 container의 정보를 얻을 수 있다. json타입중에 ipaddress라는 부분이 있는데, 172.17.0.3으로 확인되었다.

  • ip address로 접속시도했을때 ERROR2003이 출력이 되었는데, 외부접속이 허용되지 않은것이다. 외부접속 허용을 위해 my.cnf파일을 수정해야한다.

  • docker exec -it ~~~ 명령어를 이용하면 접속이 된다. 참조링크

오늘의 느낀점

  • 1cpu 64mb 환경분리를 하고 mysql을 도커로 띄우려고 했다. docker는 띄어서 mysql은 돌아가지만 docker exec가 아닌 mysql을 통한 외부접속은 안되고 있다. 이 부분을 우선적으로 해결해야될거 같다. 에러로그를 보니 외부접속에 대한 부분을 찾아야되는데, 환경설정만 해도 쉬운게 아니다. 우선은 내일 외부접속시키고 그 다음에 cpu, memory limit을 설정해서 동작을 시켜봐야겠다.
Written on January 26, 2020