mysql은 서버를 늘리는 방식으로 용량이슈를 해결할 수 없다!!(여러 컴퓨터에 분산될 수 없어서..)
따라서 2가지 방법으로 스케일링 한다!
Slave를 만들어 마스터 서버의 읽기 전용 복사본을 만들어내어 읽기의 용량을 늘려준다
장점:처리할 수 있는 데이터가 늘어나진 않지만 selct같은 읽기를 더많이 할 수 있다.
단점:레코드 추가나 값 변경등 쓰기 작업은 할 수 없다.
바로 필요하지 않은 데이터들을 다른 곳에 옮기는 방식으로 서버 이용량을 늘린다.
기존에 서버컴퓨터 수가 많아지는 것을 보완하고, 투자비용을 줄이고 개발시간 단축을 할 수 있으며
놀고있는 자원들을 최소화 할 수 있다!(이전에는 피크타임을 기준으로 capcityplanning했기때문에 남는 자원이 많아진다)
내가 설치하고 싶은 프로그램과 그에 필요한 다양한 것들로 이뤄진 패키지를 실행시켜주어 쉽게 설치하도록 해준다.
패키지-> 도커 이미지
도커 이미지 공유소-> 도커 허브
도커 이미지를 실행시킨것-> 도커 컨테이너(응용프로그램)
나의 운영체제 위에 도커엔진이라는 가상 시스템이 생기고
도커엔진 위에 소프트웨어를 패키지(도커이미지)로 만들어서 실행 시킨다.
ex) 도커 허브에서 mysql 도커 이미지를 받아 컨테이너에서 실행 시켜줌
<명령어>
도커 이미지 받기
docker pull mysql/mysql-server:8.0
컨테이너 생성
docker run --name=mysql_container --restart on-failure -d mysql/mysql-server:8.0
컨테이너 확인해보기
docker ps
패스워드 찾기
docker logs mysql_container 2>&1 | grep GENERATED
도커 컨테이너 안에서(docker exec) 명령어 실행
docker exec -it mysql_container mysql -uroot -p
다른 것들은 많이 사용해 봐서 익숙했는데 default value은 익숙하지 않았다..
값이 지정이 되어있지 않으면 보통 null로 들어간다.
하지만 default value로 설정하면 지정되있지 않은 경우에 기본값으로 설정된다.
ex) timestamp 타입에서 속성을 current_timestamp으로 지정할 경우 현재 시간으로 설정된다.
DEFAULT CURRENT_TIMESTAMP