반응형

1. mysql 설치

cd $SOURCE/mysql-5.1.73

export CFLAGS="-g -O3 -fno-omit-frame-pointer"
export CXX="gcc"
export CXXFLAGS=" -g -felide-constructors -fno-exceptions -fno-rtti -O3 -fno-omit-frame-pointer"
./configure --prefix=/usr/local/mysql_5.1 --with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static --with-charset=euckr --without-debug \
--enable-assembler --enable-local-infile --with-readline \
--with-plugins=innobase --with-big-tables --with-plugins=partition

 

make

make install

 

2. 확인

mysql ((none))>show variables like '%partition%';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| have_partitioning | YES   |
+-------------------+-------+
1 row in set (0.00 sec)

 

 

=======================================================================================

파티션 분할 테스트

 

1. partition table 설정(uidx 값) 
alter table chk_kopx_history PARTITION BY RANGE (uidx)
(
PARTITION p202005 VALUES LESS THAN (6867072),
PARTITION p202006 VALUES LESS THAN (7763739),
PARTITION p202007 VALUES LESS THAN (8747177),
PARTITION p202008 VALUES LESS THAN (9748633),
PARTITION pmax VALUES LESS THAN MAXVALUE
);

 

2. 파티션 분할 확인


3. 파티션 추가 작업(pmax 파티션을 추가로 분할)
alter table chk_kopx_history REORGANIZE PARTITION pmax INTO
(
PARTITION p202205_2 VALUES LESS THAN (39930091),
PARTITION p202207 VALUES LESS THAN (13633138),
PARTITION p202208 VALUES LESS THAN (13633138),
PARTITION p202209 VALUES LESS THAN (13633138),
PARTITION pmax VALUES LESS THAN MAXVALUE
);

 

 

4. 파티션 별 카운트 갯수

select PARTITION_NAME,table_rows from information_schema.partitions where table_name ='chk_kopx_history';

 

5. 파티션 자동 분할(crontab)

vi /root/partition.sh

========================================================================================

#/bin/sh

 

Fday=`date +"%Y-%m-01"`;

LOG=/root/partition_$(/bin/date  +\%Y\%m\%d).txt

DBROOTPW='zhxhdlelqlfnxm'

echo `date` "partition Start" >> $LOG

# 오늘 날짜의 uidx 값 추출
uidx=`/usr/local/mysql/bin/mysql -N -uroot -p${DBROOTPW} kotoi -e "select MIN(uidx) as uidx from chk_kopx_history where reg_date='${Fday}';"`


# 파티션 분할
Ymonth=`date -d '1 month ago' +'%Y%m'`

table_a="alter table chk_kopx_history REORGANIZE PARTITION pmax INTO
(
PARTITION p${Ymonth} VALUES LESS THAN (${uidx}),
PARTITION pmax VALUES LESS THAN MAXVALUE
)"

/usr/local/mysql/bin/mysql -uroot -p${DBROOTPW} kotoi -e "${table_a}"


# 파티션 분할 확인
P_check="select PARTITION_NAME,table_rows from information_schema.partitions where table_name ='chk_kopx_history';"

/usr/local/mysql/bin/mysql -uroot -p${DBROOTPW} kotoi -e "${P_check}" >> $LOG


echo `date` "partition Finish" >> $LOG

============================================================================================

반응형
반응형

 

테이블만 복사(데이터 포함 X)

create table if not exists '복사 테이블' like '원본 테이블';

 

ex)

create table if not exists vd_stock_history_20220208 like vd_stock_history;

 

 

 

데이터 포함 복사(데이터 포함 O)

create table if not exists '복사 테이블' select * from '원본 테이블';

 

ex)

create table if not exists g5_write_M5_3_2 select * from g5_write_M5_3;

 

반응형
반응형

 

1.기본 Query 사용방법 터득

 

root 계정으로 로그인

 

TESTDB 라는 데이터베이스 생성됨

 

위에서 만든 TESTDB라는 데이터베이스 삭제됨

 

information_schema 데이터베이스 사용

 

데이터베이스 안에 테이블 목록을 보여줌

 

files 테이블의 구조 확인

 

 

테이블 생성
 

 

테이블안 칼럼의 데이터 추가

 

 

테이블 데이터 검색 (이름으로 검색)

 

 

테이블 데이터 변경하기 /  테이블 안에 모든 내용보기

 

테이블에 있는 레코드 삭제(name = PSY )

 

 

 

 

2. mysql processlist(실시간 세션)확인

mysql 내에서 확인

 

콘솔에서 확인

 

 

3. mysql root 패스워드 분실시 해결방법

 

mysql 설정 파일에 입력(mysql 로그인시 패스워드 묻지 않음)

 

 

설정 변경 하였으므로 재시작

 

mysql root 계정으로 로그인

 

 

mysql 테이블로 접근해서 패스워드 교체

 

변경 후 변경사항 즉시 적용

 

 

위의 skip-grant-tables 지움

 

 

설정 변경했으니 재시작

 

 

바꾼 비밀번호로 로그인

 

 

 

4. slow Query logging 설정 방법 및 로그 보는 법

slow Query loging : sql 질의 요청을 했는데 응답이 오래걸릴 경우 이 부분에 대해 log를 남기는것

 

슬로우 쿼리 로그가 OFF 인것을 확인

 

slow_query_log 의 값을 1로 하면 ON, 0이면 OFF

slow_query_log_file  log 파일이 생성 될 경로

long_query_time=3 은 query실행시간이 3초 이상인 query 에 대해 log 를 남기겠다는 설정

 

 

설정 변경했으니 재시작

 

 

mysql log용 디렉토리 생성 후 디렉토리 접근 권한 설정

 

mysql 접속 후 slow_query ON 확인

 

 

mysql 접속 후 고의로 query 지연 시킴

 

 

로그파일이 생성될 경로에 가서 확인 (로그파일 생성됨)

 

 

로그파일 자세히 보기

 

 

5. mysql dump 사용법

 

mysql dump  ?

데이터베이스를 백업하는 데 가장 자주 사용되므로 데이터 손실시 내용을 복원 할 수 있음

hwlee 계정의 test 테이블 모든 내용 백업

 

 

test.sql 백업 파일 생김

그 외 사용방법

mysqldump -u root -p –all-databases > alldatabases.sql

: 모든 데이터를 백업 함

 

mysqldump -u root -p –all-databases –-no-data> allDDL.sql

: DDL 정보만 백업 함

 

mysqldump -u root -p –all-databases [DB] > DB.sql

: 특정 databases 를 백업 함

 

 

 

 

6. my.cnf 설정 파일 파악

server-id : MySQL 고유식별값

datadir : 데이터파일이 저장되는 디렉토리

 

innodb_buffer_pool_size : nnoDB 스토리지 엔진의 버퍼풀은 디스크의 데이터를 메모리에 캐싱함과 동시에 데이터의 변경을 버퍼링하는 역할

 

innodb_data_home_dir = /var/lib/mysql/idb

: innodb 홈디렉터리 경로를 설정 합니다

 

innodb_data_file_path = ibdata1:256M:autoextend:max:2000M

: 데이터 파일 옵션을 설정 합니다. 파일명 : 초기용량 : 자동증가 : 최대사이즈

 

innodb_log_arch_dir = /var/lib/mysql/idb

: 로그 디렉터리 정보

 

innodb_buffer_pool_size = 2G

: innodb에서 사용할 메모리 양으로 전체 메모리의 50~80% 정도로 설정

 

innodb_log_file_size = 512M

: 로그 파일 사이즈로 버퍼풀 사이즈의 25% 정도로 설정

 

innodb_log_buffer_size = 2M

: 로그 버퍼 사이즈로 성능에 맞춰 로그를 기록하는 경우 크게 설정

 

innodb_flush_log_at_trx_commit = 2

: 커밋 로그 옵션으로 성능 최적화로 1분마다 저장되도록 2로 설정

 

innodb_flush_method = O_DSYNC

: 성능을 위해 메모리에서 직접 액세스 하도록 설정

 

log-bin : 로그파일명을 정함

sort_buffer_size : 인덱스를 사용할 수 없는 정렬이나 그룹핑에 메모리 공간을 얼마나 할당할지를 정함

 

port = 3306

: DB

 

socket : 소켓파일 경로(로컬서버 접속에 사용)

 

log-warnings = 3

: 비활성화

 

log_output = FILE,TABLE

: 로그 기록 유형

 

log-error

: 에러 로그파일 경로

 

general_log = OFF

: 제너럴 로그 비활성화 ( DB에서 일어나는 모든 작업에 대한 로그를 남기게 됨)

 

general_log_file

:제너럴 로그 파일 경로

 

slow_query_log =on

: 슬로 쿼리 활성화

 

long_query_time

: 슬로 쿼리 기준 시간

 

log_queries_not_using_indexes = OFF

: 인덱스를 사용하지 않은 쿼리 기록부여

 

slow_query_log_file

: 슬로 쿼리 로그 파일 경로

 

 

 

 

7. mysql global 설정 확인

 

global 설정 확인

 

세션 환경변수 확인

 

 

LIKE 조건으로 환경변수 찾기

 

8. mysql 보안설정

skip-networking : 외부 네트워킹 기능 제한

port=3306 : 기본 포트 3306를 변경하여 무분별한 공격시도 차단

set-vgariable = local-infile =0 : 사용자들이 내부 설정 파일 및 기타 파일에 대한 정보를 얻지 못하도록 차단

--skip-show-database : 사용자에게만 show databases 권한 부여

log = /var/log/mysql.log : 로그 활성화

 

mysql_secure_installaion 설정에서 변경

root 계정 이름 변경 후 비밀번호 변경

test 데이터 베이스 삭제 (test DB는 누구나 접근 가능한 데이터 베이스)

익명 계정이나 사용하지 않는 계정 삭제(보안을 위해 삭제)

 

 

% 는 localhost가 아닌 원격에서 접속이 가능함

 

 

SELECT/UPDATE/INSERT/DELETE 등의 데이터 베이스 권한 조정

 

 

 

반응형
반응형

 

MYSQL - 세계에서 가장 많이 쓰이는 오픈 소스의 관계형 데이터베이스 관리 시스템

- 다중 스레드, 다중 사용자 형식의 구조질의어 형식의 데이터베이스 관리 시스템

 

 

1. mysql 컴파일 설치

 mysql 5.5 버전 부터는 ./configure 가 아닌 cmake를 통해 컴파일 진행

 

mysql 설치에 앞서 cmake 설치

 

 

현재 작업 중인 위치에서 새로운 디렉터리를 생성하고 그안에 압축을 해제

 

bootstrap script 파일 실행

 

 

cmake 설치

 

웹에서 mysql 다운로드

 

현재 작업 중인 위치에서 새로운 디렉터리를 생성하고 그안에 압축을 해제

 

mysql-5.6.30 디렉토리에 들어와서 cmake 실행하여 Makefile 을 만듦

컴파일 설명

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

mysql 설치할 디렉토리

 

-DMYSQL_DATADIR=/usr/local/mysql/data \

db설치(data폴더)할 디렉토리

 

-DDEFAULT_CHARSET=utf8 \

mysql 서버의 문자셋

 

-DDEFAULT_COLLATION=utf8_general_ci \

db의 문자셋

 

-DWITH_EXTRA_CHARSETS=all \

추가로 지원할 문자셋

 

-DENABLED_LOCAL_INFILE=1 \

local_infile변수 사용가능여부, 텍스트 파일의 데이터를 특정 테이블에 저장하는 변수

 

-DMYSQL_USER=mysql \

mysql유저를

 

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

스토리지 엔진, default innodb

 

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

스토리지 엔진

 

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

스토리지 엔진

 

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \

스토리지 엔진

 

-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \

mysql 소켓 디렉토리

 

-DMYSQL_TCP_PORT=3306

mysql 포트번호, default 3306

 

Makefile을 읽어들여 object, library, binary 파일을 만듦

 

만들어진 binary, library파일을 시스템(/usr/lib, /usr/bin, /usr/local/lib, /usr/local/bin) 에 설치

 

 

mysql 그룹 및 계정 만들기

groupadd mysql

useradd -g mysql mysql

 

mysql 그룹/계정 권한주기
DB 생성
mysql 설정파일 복사 (기존 파일 덮어 씌움)

 

mysql 데몬 복사 , 권한 설정

 

mysql 디렉토리 설정

--basedir : MySQL이 설치되어 있는 디렉토리 하부에 있는 베이스 디렉토리를 mysqld에게 알려주고 그곳에서 데이터 디렉토리를 찾도록 하는 옵션

--datadir : 데이터 디렉토리의 위치를 확정적으로 지정하기 위한 옵션

 

 

어느 디렉토리에서나 mysql을 실행 할 수 있도록 환경변수 등록

 

설정 적용 및 mysql 데몬 실행(성공)

 

mysql root 계정 비밀번호 변경, 접속 테스트

 

리눅스 시작시 mysql 구동 되도록 설정

 

S로 시작시 활성화 /  K로 시작시 비활성화

 

2. mysql_secure_installation 설정 (보안)

현재 root 비밀번호 입력

root 패스워드 변경 YES/NO

익명 사용자 삭제 YES/NO

원격 접속 허용 YES/NO

test DB 삭제 YES/NO

수정한 내용 적용

테이블 (수정한 내용) reload YES/NO

 

 

 

 

 

반응형

+ Recent posts