메뉴얼 찾는데 생각보다 잘 정리된 문서가 없다.

 

https://hub.docker.com/r/mysql/mysql-cluster/

 

/etc/my.cnf

- 아무리 봐도 server_id, encoding 부분이 빠진거 같다.

[mysqld]
ndbcluster
ndb-connectstring=192.168.0.2
user=mysql

[mysql_cluster]
ndb-connectstring=192.168.0.2

 

 

/etc/mysql-cluster.cnf

[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M

[ndb_mgmd]
NodeId=1
hostname=192.168.0.2
datadir=/var/lib/mysql

[ndbd]
NodeId=2
hostname=192.168.0.3
datadir=/var/lib/mysql

[ndbd]
NodeId=3
hostname=192.168.0.4
datadir=/var/lib/mysql

[mysqld]
NodeId=4
hostname=192.168.0.10

 

 

 

'DB > mysql' 카테고리의 다른 글

InnoDB 클러스터  (0) 2022.06.01
복제용 docker image  (0) 2022.05.08
[Real Mysql 2권] 11. 쿼리 작성 및 최적화  (0) 2022.04.20
docker 를 이용한 mysql 설치  (0) 2022.02.15
Posted by gt1000

2022. 5. 8. 21:02 DB/mysql

복제용 docker image

docker exec -it mysql-study1 bash

mysql -u root -p

apt-get update

apt-get install vim

 

my.cnf 파일 수정하고

 

mysql> create database study;

mysql > grant all privileges on study.* to 'test'@'%';
mysql > flush privileges;

 

 

 

docker hub 에 업로딩 할 repository를 생성

 

docker commit -m "slipp mysql study" -a "gt1000@gmail.com" mysql-study1 mysql-study:1.1
docker tag mysql-study:1.1 gt1000/mysql-study:1.1
docker push gt1000/mysql-study:1.1

docker run -d -p 13306:3306 --name mysql-study2 gt1000/mysql-study:1.1

 

이렇게 업로딩 한 이미지에는....  my.cnf 파일 설정한것은 들어가 있는데...

database 작업이 하나도 안 들어가 있다.

 

그리고 docker run 으로 생성한 mysql 은 run 한 후에

exec 로 바로 접속해서 mysql -u root -p 를 하면 안 먹히고

컨테이너를 한번 stop, start 하면... 접속이 된다.

 

이유를 모르겠다. 나중에 시간되면 찾아 봐야 할거 같다.

 

replication 할려면... link 로 띄워야 하나?

docker run -i -t -h slave1 --name slave1 --link master:master ubuntu:hadoop_2.7.7

이러면 설정 파일은 어떻게 세팅을 하지?

내일 해야 겠다.

 

 

'DB > mysql' 카테고리의 다른 글

InnoDB 클러스터  (0) 2022.06.01
docker를 이용한 cluster 구축  (0) 2022.05.30
[Real Mysql 2권] 11. 쿼리 작성 및 최적화  (0) 2022.04.20
docker 를 이용한 mysql 설치  (0) 2022.02.15
Posted by gt1000

11. 쿼리 작성 및 최적화

11.1 쿼리 작성과 연관된 시스템 변수

11.1.1 SQL 모드

 - sql_mode 라는 시스템 설정

 - 확인하는 방법은 아래 sql을 실행

  • SELECT @@sql_mode
  • SELECT @@GLOBAL.sql_mode;
  • SELECT @@SESSION.sql_mode;
  • ONLY_FULL_GROUP_BY - group by 절에 포함되지 않은 컬럼이더라도 집합 함수의 사용없이 그대로 select 절이나 having 절에 사용할 수 있음
  • PAD_CHAR_TO_FULL_LENGTH - char 타입이라고 하더라도 varchar 와 같이 유효 문자열 뒤의 공백 문자는 제거되어 반환
  • NO_ZERO_IN_DATE & NO_ZERO_DATE : DATE 또는 DATETIME 컬럼에 2022-00-00 또는 0000-00-00 과 같은 잘못된 날자를 저장하는 것이 불가능

11.1.2 영문 대소문자 구분

 - mysql의 db나 테이블이 디스크의 디렉토리나 파일로 매핑되기 때문에 테이블명의 대소문자를 구분함

 - 가능하면 초기 db나 테이블 생성할 때 대문자 또는 소문자만으로 통일해서 사용하는 편이 좋음

 - SELECT * FROM tab_test WHERE string_column = 10001
   mysql 은 숫자 타입과 문자열 타입 간의 비교에서 숫자 타입을 우선하므로 string_column을 숫자 값으로 변환 후 우측과 비교한다. 이 경우 string_column에 index 가 있어도 이용하지 못하며, 컬럼의 row 수만큼 실행해서.... 좋지 않음
이런 sql은 사용하지 않는게 맞음

 

윈도우 함수

 - https://kimsyoung.tistory.com/entry/%EB%8C%80%ED%91%9C%EC%A0%81%EC%9D%B8-%EC%9C%88%EB%8F%84%EC%9A%B0-%ED%95%A8%EC%88%98-6%EA%B0%80%EC%A7%80-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0

 

lateral join

user_group, user 가 있다면 user_group_id 로 조인을 한 상태에서...

user 테이블 데이터를 추출 하는데.....

이 기준이 user.insert_date >= user_group.insert_date 와 같은 형태로...

user 테이블 데이터츨 filter링 하는데, 그 조건이 user_group 테이블 조건이라고 보면 됨

근데.... join 조건 만으로 user 테이블 데이터를 단순 정렬만 따로 하는 예제도 많네....

user 테이블을 정렬하거나 줄이거나

 

'DB > mysql' 카테고리의 다른 글

InnoDB 클러스터  (0) 2022.06.01
docker를 이용한 cluster 구축  (0) 2022.05.30
복제용 docker image  (0) 2022.05.08
docker 를 이용한 mysql 설치  (0) 2022.02.15
Posted by gt1000

블로그 이미지
gt1000

태그목록

공지사항

어제
오늘

달력

 « |  » 2025.4
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함