[ 구성 ] 

HAProxy 서버 ( Public VIP ) * 1EA

( CentOS 7 EPEL yum install HAProxy 1.5.18 )

하단에 공인망 스위치와 사설스위치 각각 1대씩.

사설단에 연결된 192.168.0.15 / 16  이  WEB1 , WEB2 

 

[ Configure 기본 ] 

# cat /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global                          # 프로세스 전체에 영향을 주는 내용
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2                        # Syslog. UDP 514 Open 필요.

    chroot      /var/lib/haproxy                #서비스 Jail 경로. 수퍼유저로 프로세스 실행시, 모든 동작은 이 안에서만 수행됌. 보안 상승.
    pidfile     /var/run/haproxy.pid            # 실행 피드명
    maxconn     4000                            # 프로세스 당 최대 연결 수치
    user        haproxy                         # Manage ID
    group       haproxy                         # Manage Group
    daemon                                      # BackGround Mode Process

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults                                #front , back , listen 에 관련된 전역 섹션
    mode                    http                   # http 프로토콜을 사용하는 로드밸런싱 모드
    log                     global                      # 로그는 global 의 설정에 따른다.
    option                  httplog                     # 기본 Log 는 SIP,DIP와 Name 만 표기하므로, 이 옵션을 사용하여 디테일을 높임.
    option                  dontlognull                 # 로그 비대화 방지를 위해, Probe(정찰,스캔)같은 잡다한 기록을 HAProxy Log 화하지 않는 옵션.
    option http-server-close                            # 클라이언트와 리얼서버 연결 종료시, 디폴트로 유휴대기하지 않고, 서버에서 Handshake 를 종료하여, 더 빠른 새로운 세션을 준비할 수 있도록 함. 디폴트 옵션에 선언되어 있어도, 인스턴스 별로 no옵션으로 제외처리 가능함.
    option forwardfor       except 127.0.0.0/8          # 서버에 대한 응답을 HAProxy 가 받기 때문에(VIP), 리얼서버 IP를 HTTP헤더에 표기하기 위한 옵션.
    option                  redispatch                  # mode HTTP에서 Cookie에 지정된 Real 서버가 다운되면, 외부 클라이언트가 쿠키를 플러시하기 전에는 서비스에 문제를 일으킬 수 있으므로, 이 옵션을 줘서, 프록시의 지속성을 무시하고 쿠키, 세션 재분배를 실행하게 된다. retries 값이 0보다 커야 한다.
    retries                 3
    timeout http-request    10s                         # Request 시의 헤더에만 적용. DoS 방어를 위해, HTTP 요청 타임아웃시간 설정. ( 클라이언트의 연결 타임아웃과는 무관한, 서버(HAProxy) 의 옵션이다 )
    timeout queue           1m                          # 서버의 maxconn 에 도달시, 무한정 보류상태로 두지 않고 HTTP 503 응답을 보내면서 연결을 버리기까지의 시간.
    timeout connect         10s                         # TCP 패킷손실을 막기 위한 Real 서버로의 연결 최대 지연시간 설정. ( Backend 에 적용되나, 전역 설정 가능 )
    timeout client          1m                          # 외부 클라이언트의 요청이나 데이터와의 연결 최대 시간. request 와 같이 사용하여, 서버 안정성을 구현.
    timeout server          1m                          # 서버가 데이터를 승인하거나, 전송해야 할 때의 연결 최대 시간.
    timeout http-keep-alive 10s                         # 클라이언트의 요청에 따른 응답 전송 후, 다음 요청까지의 대기 시간. http-request 가 선행함.
    timeout check           10s                         # timeout server 와 동일하거나 작은 값을 가져야 한다.
    maxconn                 3000                        # 프로세스당 최대 연결 개수

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main *:80                     # 클라이언트의 연결을 받는 부분 처리. WAF 기능에 가깝다.
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

    use_backend static          if url_static                   # acl 에서 정의한 style 들을 backend static으로 보낸다.
    default_backend             web                             # 위의 조건 이외는 backend web 으로 보낸다.

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static                                  # 프론트엔드에서 acl 연결하는 실제 리얼서버 설정.
    balance     roundrobin
    server      static 192.168.0.15:80 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend web                     # 실제 접속시 로드밸런싱하는 서버
    balance     roundrobin                      # 순차적으로 로드밸런싱
    server  web1 192.168.0.15:80 check
    server  web2 192.168.0.16:80 check

#내부 사설서버들 반드시 방화벽 해제하던지, 포트 허용해둘 것.


#listen                         # 프론트/백엔드의 연결의 포트/옵션등을 정의함. TCP 제어나 Proxy 에 주로 사용.


listen stats # "stats"라는 이름으로 listen 지정
    bind *:9000 # 접속 포트 지정
    stats enable
    stats realm Haproxy Statistics  # 브라우저 타이틀
    stats uri /haproxy_stats  # stat 를 제공할 URI
    #stats auth Username:Password # 인증이 필요하면 추가한다

 

HAProxy Configure 메뉴얼 보시면 아시겠지만, 정말 Flow 이해에 좋습니다. 

너무나도 다양한 옵션이 있으나, 우선 이 정도로도 "동작" 은 합니다.

참고 해주시면 되겠습니다.

 

블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

https://dev.mysql.com/doc/mysql-repo-excerpt/5.6/en/linux-installation-yum-repo.html


이 링크 하나면 yum 완벽합니다.

아래의 repo 파일 만든 후 yum clean all , yum repolist 확인 필수!



저는 CentOS 7.6 Lastest 버전이므로 6--> 7로 변경 했습니다


root@DB2:/etc/yum.repos.d# vi mysql.repo


[mysql57-community]

name=MySQL 5.7 Community Server

baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/

enabled=1

gpgcheck=0

#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql



#yum clean all

#yum repolist

#yum install mysql-community* ( mysql-community-server 만 설치해도 되긴함 ) 

혹시 gpgkey 에러가 나서 server가 설치 안 된다면 yum install --nogpgcheck 옵션을 넣어주면 됩니다.



Dependencies Resolved


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

 Package                                 Arch               Version                   Repository                     Size

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

Installing:

 mysql-community-libs                    x86_64             5.7.26-1.el7              mysql57-community             2.2 M

     replacing  mariadb-libs.x86_64 1:5.5.60-1.el7_5

 mysql-community-libs-compat             x86_64             5.7.26-1.el7              mysql57-community             2.0 M

     replacing  mariadb-libs.x86_64 1:5.5.60-1.el7_5

 mysql-community-server                  x86_64             5.7.26-1.el7              mysql57-community             166 M

Installing for dependencies:

 mysql-community-client                  x86_64             5.7.26-1.el7              mysql57-community              24 M

 mysql-community-common                  x86_64             5.7.26-1.el7              mysql57-community             274 k


Transaction Summary

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

Install  3 Packages (+2 Dependent packages)


Total download size: 194 M



추가팁 ) 위의 레포지토리로 가령 MySQL 5.7.26 을 설치했을 때
PHP를 Source 로 Config 하기 위한 설정 부연합니다.
which 나 PATH 등으로 경로 찾아서 prefix 추가하시면 되는데.. yum 설치시 경로 그냥 포함시켜서 공유하겠습니다.

( PHP 7.3.4 Stable Source Tar 로 설치 시. 7버전대면 크게 다를 건 없을 겁니다. ) 


 ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysqli=/bin/mysql_config --with-pdo-mysql=/bin/mysql --with-zlib-dir=/usr/local --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-libxml-dir=/usr/lib --with-xmlrpc --with-freetype-dir=/usr/lib --with-gmp --with-gd --with-gdbm --with-bz2 --with-pic --with-openssl --with-gettext --enable-wddx --enable-sockets --enable-ftp --enable-bcmath --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-calendar --enable-sysvshm --enable-sysvsem --enable-soap --enable-exif --enable-sigchild  --enable-xml --disable-debug --with-iconv --with-curl --with-mcrypt --enable-fpm


--with 모듈이 문제가 있을 경우 /lib , /lib64 등의 idconfig 나 PATH 확인해주세요.



'Linux ( Cent OS ) > MySQL' 카테고리의 다른 글

[실무 예시] MySQL Table 비우기  (0) 2019.05.13
0. Log Parameters 간단 요약( Mysql 5.1 ) - 작성중  (0) 2019.05.02
7. Binary Log 삭제  (0) 2019.05.02
블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

HAProxy 를 모르는 분은 없을 정도로 유명한 소프트웨어 L4~L7 로드밸런서 소개입니다.

컨피그 구성 및 사용방법은 대단히 많으나, 체계적인 플로우 이해에 도움이 되는 부분이 많을 것 같아, HAProxy Configure 메뉴얼이 필요할 것 같아 포스팅을 작성합니다.


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

Summary
-------

1.    Quick reminder about HTTP
1.1.      The HTTP transaction model
1.2.      HTTP request
1.2.1.        The request line
1.2.2.        The request headers
1.3.      HTTP response
1.3.1.        The response line
1.3.2.        The response headers

2.    Configuring HAProxy
2.1.      Configuration file format
2.2.      Quoting and escaping
2.3.      Environment variables
2.4.      Time format
2.5.      Examples

3.    Global parameters
3.1.      Process management and security
3.2.      Performance tuning
3.3.      Debugging
3.4.      Userlists
3.5.      Peers
3.6.      Mailers

4.    Proxies
4.1.      Proxy keywords matrix
4.2.      Alphabetically sorted keywords reference

5.    Bind and server options
5.1.      Bind options
5.2.      Server and default-server options
5.3.      Server DNS resolution
5.3.1.      Global overview
5.3.2.      The resolvers section

6.    HTTP header manipulation

7.    Using ACLs and fetching samples
7.1.      ACL basics
7.1.1.      Matching booleans
7.1.2.      Matching integers
7.1.3.      Matching strings
7.1.4.      Matching regular expressions (regexes)
7.1.5.      Matching arbitrary data blocks
7.1.6.      Matching IPv4 and IPv6 addresses
7.2.      Using ACLs to form conditions
7.3.      Fetching samples
7.3.1.        Converters
7.3.2.        Fetching samples from internal states
7.3.3.        Fetching samples at Layer 4
7.3.4.        Fetching samples at Layer 5
7.3.5.        Fetching samples from buffer contents (Layer 6)
7.3.6.        Fetching HTTP samples (Layer 7)
7.4.      Pre-defined ACLs

8.    Logging
8.1.      Log levels
8.2.      Log formats
8.2.1.        Default log format
8.2.2.        TCP log format
8.2.3.        HTTP log format
8.2.4.        Custom log format
8.2.5.        Error log format
8.3.      Advanced logging options
8.3.1.        Disabling logging of external tests
8.3.2.        Logging before waiting for the session to terminate
8.3.3.        Raising log level upon errors
8.3.4.        Disabling logging of successful connections
8.4.      Timing events
8.5.      Session state at disconnection
8.6.      Non-printable characters
8.7.      Capturing HTTP cookies
8.8.      Capturing HTTP headers
8.9.      Examples of logs

9.    Supported filters
9.1.      Trace
9.2.      HTTP compression
9.3.      Stream Processing Offload Engine (SPOE)

10.   Cache
10.1. Limitation
10.2. Setup
10.2.1. Cache section
10.2.2. Proxy section

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

'Linux ( Cent OS )' 카테고리의 다른 글

haproxy.cfg 기본 설정  (7) 2019.06.24
Docker 기본 커맨드 #01 - 컨테이너 생성 및 삭제  (0) 2019.06.11
블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,
OS : CentOS 7.6 Lastest minimal 


[ Docker 설치 ] 
#yum install epel-release
#yum install docker

설치 후 서비스 시작 및 자동서비스 등록
#systemctl start docker
#systemctl enable docker


[ 이미지 리스트 ] 
#docker search [ OS ]  ( ubuntu , centos .. .. ) 


[ 이미지 다운로드 ] 
#docker pull [ SEARCH Image 명 ] 


[ 다운로드한 이미지 리스트 확인하기 ] 
#docker images
REPOSITORY         TAG           IMAGE ID           CREATED           SIZE
docker.io/tutum/centos latest 99a633ad346f 3 years ago 297 MB


[ 컨테이너 생성하기 ] 
#docker run -i -t --name [ 이름 ] [ Image ID ] [ Shell ] 

-i : 인터렉티브
-t : tty ( 터미널 콘솔 사용 ) 
--
image id :  images ID 나 이름을 직접 입력 가능
shell : 해당 image 에 있는 Shell 로 시작 가능
--name [ Alias ] 원하는 머신명 생성 가능

-p  [Origin Port | Docker Port ] : 콘솔 호스트(로컬)의 포트를 만드는 컨테이너의 포트로 리다이렉팅 한다.
( 웹서버 같은 경우 서비스 하려면 -p 80:80 같은걸로 주면 되겠다.  iptables 의 Docker Chian 에 알아서 추가해주는 명령이다 ) 

#[root@docker ~]# docker run -i -t --name CentOS-TEST01 99a633ad346f /bin/bash
[root@90bd5ec70287 /]#

간단하게 만들어지고 접속 되었음.
컨테이너를 콘솔 접속중에 원격처럼 exit 를 쳐서 빠져나오면, 컨테이너가 꺼진다. 주의.
 
[root@90bd5ec70287 /]# exit
exit
[root@docker ~]#
[root@docker ~]# docker attach CentOS-TEST01
You cannot attach to a stopped container, start it first

콘솔(로컬머신) 에서 접속한 컨테이너를 빠져 나올땐 ctrl + p 다음에  ctrl + q 를 눌러서 빠져 나오자.


[ 실행중인 컨테이너 확인하기 ] 
#docker ps

[ 특정 컨테이너 시작하기 ] 
#docker start image id 또는 설정한 name 입력

[root@docker ~]# docker start CentOS-TEST01
CentOS-TEST01
[root@docker ~]#

[ 컨테이너 재시작 하기 ]
[root@docker ~]# docker restart CentOS-TEST01
CentOS-TEST01
[root@docker ~]#

[ 켜진 컨테이너에 접근하기 ]
[root@docker ~]# docker attach CentOS-TEST01
[root@90bd5ec70287 /]#


[컨테이너 끄기]
[root@docker ~]# docker stop CentOS-TEST01
CentOS-TEST01

[컨테이너 삭제]
이미지 다운 후 생성했던 컨테이너 ( name : CentOS-TEST01 ) 이 삭제됌
[root@docker ~]# docker rm CentOS-TEST01
CentOS-TEST01

[컨테이너 이미지 삭제]
컨테이너 이미지는 LAYER 단계적인 증분 업데이트이므로, 자식 컨테이너들을 모두 삭제해야 삭제할 수 있다.
( docker ps -a 에서 남아있는 자식이 없어야 함 )

[root@docker ~]# docker rmi 99a633ad346f  ( IMAGE ID ) 
Untagged: docker.io/tutum/centos:latest
Untagged: docker.io/tutum/centos@sha256:b4de18abfef698f6ae3a4921d6f58edef8fc770c6ee5da7636fa4ea51ab545c5
Deleted: sha256:99a633ad346ff9debae2e18ef28e36da72c4535d936500e497cd34377173d4b6
Deleted: sha256:e72d160abbd5585d403996036763c88e9624c70d9d80d6fb0e1ccb2c49b8a26d
Deleted: sha256:8f201733668a3ce8ce77a0dc8b2d7249cdc70b1022a7fc78650527a6f3ec09b6
Deleted: sha256:8fdcefb6d553194a6881387055c1d4110bc385d3dbf4d51b0aa07f1251e877ef
Deleted: sha256:8f98c28a55c2e54cf8b8815d843cbfaf1495dd0bf601774f27da1cbe80183225
Deleted: sha256:6163e9854471a9b6c817b9514d6b8d1cf7be7684fa0c52d76d42188e28785859
Deleted: sha256:85946201865d0456e3d2db4df8699ecc017f2a8df599a1c0b241d30e8f942ed6
Deleted: sha256:3b6d6efff38bc7552b4e42d78a142460dd122efe3f86a921298e82d60f770c85
Deleted: sha256:28508c96f9bffc44568bdcf1d0cd20a0357a106a18440302ba67ee4c68a3ccad
Deleted: sha256:33b3813290610f3880214f35c32d2175adfcc75500cae48dfdbcbcf31928a1ac
Deleted: sha256:ce3c560f1cfc18c6febc0a8ed4f8330d32df64e52fa0b34b82d42ad35406ac39
Deleted: sha256:cf032be00d9aedaf94363af683f83fda44140490759c1c048584dc9b3dd1f34e
Deleted: sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@docker ~]#

깔끔하게 초기상태로 돌아왔다.


'Linux ( Cent OS )' 카테고리의 다른 글

haproxy.cfg 기본 설정  (7) 2019.06.24
0. HAProxy 1.8 Configure Manual ( 번역 중 .. )  (0) 2019.06.19
블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

알아두면 편리할 간단한 스크립팅 입니다.


특정 유저 리스트만 서버에 생성한다던지 삭제할 때

미리 텍스트파일에 해당 유저의 계정명만 적어두고, 스크립트로 일괄 처리하기 입니다.

당연히 방법은 여러가지가 있겠지만 for 문 사용해서 작성해보겠습니다.


[ 특정 유저 생성하기]

1) userlist.txt 파일에 생성할 유저를 나열합니다. 

vi userlist.txt

test1

test2

test3

.

.



2) useradd.sh 라는 파일을 작성 합니다

vi useradd.sh

#!/bin/sh                        // 스크립트 종류 정의

for i in `cat userlist.txt`            // cat userlist.txt 의  출력 결과를 i 변수에 선언함

do                // i 변수에 들어갈(in)  `cat userlist.txt` 가 끝날 때까지 반복

useradd -d /home/$i $i                // 해당 명령어를 실행

done                    // cat userlist.txt 의 결과가 끝나면 종료.



3) 결과 확인

cat /etc/passwd

apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

guest:x:1002:1002::/home/guest:/bin/bash

test1:x:1003:1003::/home/test1:/bin/bash

test2:x:1004:1004::/home/test2:/bin/bash

test3:x:1005:1005::/home/test3:/bin/bash


아주 간단 합니다.

삭제도 마찬가지 겠죠?

do done 안에 들어갈 실행 명령어를 userdel $i 로 해주면 되겠습니다. 






블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

제 스타일식 VM ( CentOS 7.6 ) 세팅 후 초기 설정하는 내용입니다.

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


[ 업데이트 및 기본 사용자 설정 ] 
## SSH Root 직접 로그인 금지
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config

## 일반유저 계정 생성
useradd -d /home/test test
echo "1234" | passwd test --stdin

## Selinux DISABLE
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

## Minimal Package 에서 개발자도구와, 기본 net-tools , 모니터링 도구 설치, 커널 및 보안 업데이트
yum -y groupinstall "Development Tools" 
yum -y update && yum -y upgrade
yum -y install epel-release 
yum -y install net-tools sysstat ntsysv lshw perl vim-enhanced wget htop iftop telnet

## Hostname 을 원하는 내용으로 지정
echo "TEST01" > /etc/hostname

## DNS Resolve 파일 설정 ( DHCP 서버를 쓰거나, ifcfg에 DNS1,DNS2 세팅했다면 필요 없음. networkmanager 기반의 네트워크 세팅일 경우에도 필요없음 ) 
echo -e "nameserver 168.126.68.1\nnameserver 8.8.8.8" > /etc/resolv.conf

## 로컬 시간 설정
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

## 명령어 알리아스 추가
echo "alias vi='vim'" >> /root/.bashrc

## root 터미널 색깔 변경
echo "PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h:\[\e[33m\]\w\[\e[0m\]# '" >> /root/.bash_profile

## SAR 수집주기 변경
perl -pi -e 's/10/1/g' /etc/cron.d/sysstat

## 로긴시 출력 메세지
echo "
//////////////////////////////////////////////////////////////////////////////
TEST VM Machine #01 
//////////////////////////////////////////////////////////////////////////////" > /etc/motd
echo "

## Syslog 설정(sulog 는 secure 로그로 대체가능하지만, 별도 설정 했습니다)
echo "SULOG_FILE /var/log/sulog" >> /etc/login.defs
echo "authpriv.info /var/log/sulog" >> /etc/rsyslog.conf
echo "local1.* /var/log/bashlog" > /etc/rsyslog.d/90-bashlog.conf

systemctl restart rsyslog.service
chmod 600 /var/log/sulog
echo "*.crit;*.warn;*.alert;*.emerg;*.err;authpriv.* /var/log/rsyslog" >> /etc/rsyslog.conf
systemctl restart rsyslog.service
perl -pi -e 's/rotate 4/rotate 24/g'  /etc/logrotate.conf

## CentOS 에서 rc.local 자동 사용시 유저권한에 +x 추가.
chmod u+x /etc/rc.d/rc.local

## 로그클리어
dmesg -c

[ /etc/profile 에 history 타임스탬프 추가. 빨간 \는 "를 입력하기 위한 정규식 이스케이프. ] 
echo -e "export HISTSIZE=9999\nexport HISTFILESIZE=9999\nexport HISTTIMEFORMAT=\"%Y-%m-%d [%H:%M:%S]\"  \n" >> /etc/profile
source /etc/profile

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


블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

영문 내용의 출처는 RHCSA 기출과 동일 합니다.

5월중에는 해설 올리려고 노력중입니다. 

여러분들도 RHEL 8 Release 된 마당에, 몇달뒤 바뀌기전에 빨리 준비하는게 속 편하겠죠?


RHCSA 가 LDAP & LVM 제외하면,  정말 기초적인 수준을 다뤘다면

RHCE 는 이제 RHEL 을 가지고 본격적인 엔지니어를 시작한다고 보면 됩니다.  


대충 문제 둘러보니 난이도는 그다지 높지는 않습니다만 

본격적인 OS 사용방법들을 요구 합니다.

방화벽 사용 + iSCSI + 초급 쉘스크립팅 + SMB + DB 초기설치 정도가 유의사항이네요. 


RHCSA 는 KVM 가상화환경의 VM 1EA Console 을 사용하고

RHCE 는 VM 2EA 를 같이 구성하게 됩니다. 


문제 구성상 RHCE 는 firewalld 를 끄면 안되므로, 방화벽 설정 원활하게 숙달하는게 중요합니다.

외부, 서비스 접근할떄마다 방화벽을 열어줘야 합니다.

단순하게 외우려고 하면, 합격이 좀 힘들수도 있으나

문제만 보지말고 문제의 이해를 범위있게 공부하면, 어려운 시험은 아닙니다.


일단 초벌 원문만 올려두겠습니다. 

[ 문제 내용 ] 

1. Selinux - RHCSA 보다 심화된 내용 등장. 특정 디렉토리 권한 설정 등

문제에서 enforcing 설정만 나왔으나, 아래 문제 풀다보면 권한설정 필요해집니다.

2. yum - yum 에 기존에서 추가된 repository 추가.

3. firewalld - 방화벽으로 포트 접근 기본적인 제어하기

4. env - 유저의 환경설정에 alias 를 이용한 신규 명령어 연동

5. firewalld - 방화벽을 이용한 포트포워딩

6. nmcli - nmcli , nmtui , vim 등을 사용한 서버 2EA 의 다양한 네트워크 환경 설정.

7. IPv6 - 양 서버에 IPv6 인터페이스 설정 하기

8. web install - RHEL 그룹패키지 ( Basic web server ) 로 httpd 설치 및 기본 설정.

9. Virtual Host - httpd 의 가상호스팅 기본 세팅하기

10. SSL 인증서 - 아파치 가상호스트에 보안인증서 적용하기

11. Virtual host - 가상호스트 설정 및 접근 권한 ( <Directory> 구성 ) 설정.

12. Selinux + Httpd - 가상호스트의 웹 접속 포트 변경 ( httpd.conf + 방화벽 + Selinux )

13. Shell Script - Agument 를 붙였을 때, 각각의 결과를 출력하는 기초 스크립트 작성

14. NFS Server - NFS 서버 구성 및 옵션 (보안) 설정

15. NFS Client - NFS 마운트 심화 구성

16.17 SMB - CIFS 기본 구성 및 설정

18. iSCSI - iSCSI target 구성

19. iSCSI - iSCSI Initiator 분배 구성

20. MariaDB - DB 서버 설치 후, DUMP 파일 복원과 계정 억세스 가능 설정.

21. MariaDB - 간단한 DB 쿼리문 실행 및 결과 확인하기

22. Shell Script - if 문을 활용한 조건문 스크립트 작성

23. Mail - Postfix 를 사용한 메일 환경설정


이슈가 있어, 문제 내렸습니다.

해석은 진행하고 있으며, 다음주 이후 필요하신 분께 공유해드리도록 하겠습니다. 

블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

Question - 14

User ravi must configure cron job that runs at daily 14:30 and executes /bin/echo "welcome". User user1 should not schedule cron jobs.

ravi 유저는 cron 설정을 합니다. 

매일 14:30분에 "welcome" 메세지를 echo 명령어로 출력.

user1 유저는 cron 을 사용할 수 없습니다.



# su - ravi 후 crontab -e

# 또는 root 상태에서 crontab -eu ravi                 // ravi 유저의 cron 설정

30 14 * * * /bin/echo "welcome"                      

:wq


# vi /etc/cron.deny                    // deny 유저계정 설정

user1 

:wq



user1은 crontab -e 실행시 실행 불가 메세지를 보게 됩니다.

 crontab -e

You (user1) are not allowed to use this program (crontab)

See crontab(1) for more information








블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,
Openldap Server : 192.168.0.5    /etc/hosts : testldap.co.kr 
Openldap Client : 192.168.0.3     /etc/hosts : test1   
Openldap User : Client 는 Server 에서 생성된 ldapuser1 란 계정에 접속할 수 있어야 함. 
                             접속시 autofs 로 /home/guest/계정명  으로 홈디렉토리 생성

CentOS 7.6 Lastest 

※ 서버 구축은 RHCSA 안 나옵니다. 실제로 되는지 확인차 해본겁니다. 
LDAP 서버가 에러도 많이 나고 복잡합니다. 


# OpenLdap Server 구축 ( 192.168.0.5 ) 

#  yum install -y openldap-servers openldap-clients   nss-pam-ldapd                // 기본 패키지 인스톨
# systemctl start slapd               // 데몬 시작 ( 389 포트 )
# systemctl enable slapd          // 자동시작 등록
# netstat -atunp | grep LISTEN 

# /etc/hosts 에서 hosts설정  ( 사설이니 Serverf & Client 둘다 해두면 좋음 )
192.168.0.5 testldap testldap.co.kr

#ping testldap.co.kr
PING testldap (192.168.0.5) 56(84) bytes of data.
64 bytes from testldap (192.168.0.5): icmp_seq=1 ttl=64 time=0.055 ms
64 bytes from testldap (192.168.0.5): icmp_seq=2 ttl=64 time=0.030 ms
.
.


openldap의 환경 설정은 /etc/openldap/slapd.d/cn\=config/olcDatabase=~.ldif 를 읽어오는데,
해당 파일을 수동 편집하는게 아니라 Config 양식을 생성 후,  ldapmodify 명령어로 업데이트를 하는 방식입니다.
위에 /usr/share/openldap-server/slapd.ldif 복사해온 템플렛을 적당히 잘라서 수정 후 사용하면 좋습니다. 

# cp /usr/share/openldap-servers/slapd.ldif /etc/openldap/slapd.conf                    // 환경설정 템플릿을 복사

# slappasswd                                   // ldap 관리자 패스워드 설정
New password:
Re-enter new password:
{SSHA}gsZV8FomyBMr7k82Cp7M1RntnCq0/I1B                    // 잘 기록해두기.


# vi /etc/openldap/domain.ldif                     // 서버 도메인 구성 관련 환경설정 파일 생성

================================================
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=testldap,dc=co,dc=kr               // dc 설정 ( testldap.co.kr ) 

dn: olcDatabase={2}hdb,cn=config               
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=gitcluster,dc=co,dc=kr          // dc 설정 ( Manager 계정 = root ) 

dn: olcDatabase={2}hdb,cn=config
changetype: modify               // 원본 설정 수정 선언
replace: olcRootPW               // RootPW 설정 선언
olcRootPW: {SSHA}gsZV8FomyBMr7k82Cp7M1RntnCq0/I1B             // slappassword 에서 만든 패스워드 값 그대로 기입. 
================================================


# ldapmodify -H ldapi:/// -f domain.ldif                         // 환경설정파일에 해당 내용 업데이트
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"



# vi /etc/openldap/monitor.ldif               // ldap 모니터링을 관리자 계정만 볼 수 있도록 환경 설정 
================================================
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=Manager,dc=testldap,dc=co,dc=kr" read by * none
================================================


#ldapmodify -H ldapi:/// -f monitor.ldif               // 환경설정파일에 해당 내용 업데이트
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}monitor,cn=config"


# Ldapserver 에 TLS 인증서 적용하기

# 프라이빗키 생성
# cd /etc/pki/tls/certs
# make server.key                        // 우선 Private Key 자동으로 만들어줍니다. 
openssl rsa -in server.key -out server.key                 
Enter pass phrase for server.key:                    // 프라이빗키 패스워드 입력하세요.
writing RSA key


#root@ldap-server:/etc/pki/tls/certs# make server.csr                         // Pravate Key 을 사용하여 CSR ( TLS ) 인증서 파일 분리하는 MAKE 입니다. 
umask 77 ; \
/usr/bin/openssl req -utf8 -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:kr
State or Province Name (full name) []:seoul
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:kt
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:               // 이 부분들은 브라우저에서 인증서 정보 표기되는건데.. 알아서..
Email Address []:moo

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:                    // 인증서 패스워드 지정안해도 됩니다. ( 지정하면 아파치 등등 기동할때 패스워드 물어봄 ) 
An optional company name []:

#openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650               //  만들어진 두 파일을 BASE 로 하는 CRT 파일 분리하기. 
Signature ok
subject=/C=kr/ST=seoul/L=Default City/O=kt/emailAddress=moo
Getting Private key

/etc/openldap/certs                    // ldap 인증서 저장 경로로 위 파일들을 복사
# cp server.* /etc/openldap/certs 
# cd /etc/openldap/certs
# chown -R ldap:ldap server*                    //  해당 파일들 소유 및 그룹 설정.
=========================================
root@ldap-server:/etc/openldap/certs# ll
합계 92

-rw-r--r--. 1 root root 65536 5월 14 13:18 cert8.db
-rw-r--r--. 1 root root 16384 5월 14 13:18 key3.db
-r--r-----. 1 root ldap 45 5월 14 10:26 password
-rw-r--r--. 1 root root 16384 5월 14 10:26 secmod.db
-rw-r--r--. 1 ldap ldap 1151 5월 14 23:05 server.crt
-rw-------. 1 ldap ldap 980 5월 14 23:01 server.csr
-rw-------. 1 ldap ldap 1679 5월 14 23:01 server.key
=========================================

## 인증서 관련 환경 설정파일을 만들어서 ldapmodify 로 업데이트 
csr 인증서는 클라이언트 다운로드용도로 쓰려고 했는데, 다시 보니 .pem 포맷 요구 하네요... 일단 이대로 해도 되기는 하니까 진행하겠습니다. 

===========================================================
# vi certs.ldif
dn: cn=config
objectClass: olcGlobal
cn: config          // 이 첫 부분 정의를 안해주면 알수없는 오류로 업데이트가 안됩니다. ( 해당 내용은 /usr/src/share 에 있던 TLS 부분 템플릿 내용 입니다 )
olcArgsFile: /var/run/openldap/slapd.args
olcPidFile: /var/run/openldap/slapd.pid     

dn: cn=config
changetype: modify
replace: olcTLSCACertificatePath
olcTLSCACertificatePath: /etc/openldap/certs

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/server.crt

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/server.key
===========================================================

#ldapmodify -Y EXTERNAL -H ldapi:/// -f certs.ldif                    // 인증서 업데이트


#### 여기까지 도메인(DN,DC 설정) , LDAP 관리자 (모니터링 ) , 서버 인증서 업로드 작업까지 완료 되었습니다
#### 이제 유저 계정 관련 스키마와 계정생성을 할 차례.

# 유저 DB ( ldap 디렉토리 설정 및 Account 추가 ) 설정
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG               // ldapuser 디렉토리 설정 컨피그 템플릿을 복사
# chown -R ldap:ldap /var/lib/ldap                    // 해당 폴더 전체 ldap 소유로 설정.

# 기본 디렉토리 DB 구조를 추가
#ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldifSASL/EXTERNAL authentication started
#ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
#ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
( 에러 안나야 합니다. 이 작업이 안되면, 밑에 부서 추가도 당연히 에러납니다 ) 

# 이제 각 부서(디렉토리)를 구분하는 스키마 업데이트
===========================================
# vi directory.ldif
dn: dc=testldap,dc=co,dc=kr
dc: testldap
objectClass: top
objectClass: domain

dn: cn=Manager ,dc=testldap,dc=co,dc=kr               // testldap.co.kr 도메인의 LDAP 서버에 Manager 정의
objectClass: organizationalRole
cn: Manager
description: LDAP Manager

dn: ou=People,dc=testldap,dc=co,dc=kr                    // People 구조 정의
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=testldap,dc=co,dc=kr                    // Group 구조 정의
objectClass: organizationalUnit
ou: Group
===========================================

# 환경설정에 구조 추가하기 ( add관련 설정은 초기 설정했던 관리자의 Password 를 물어 봅니다. ) 
# ldapadd -x -W -D "cn=Manager,dc=testldap,dc=co,dc=kr" -f directory.ldif


root@ldap-server:/etc/openldap# ldapadd -x -W -D "cn=Manager,dc=testldap,dc=co,dc=kr" -f directory.ldif            // 구조 업데이트 실행
Enter LDAP Password:
adding new entry "dc=testldap,dc=co,dc=kr"
adding new entry "cn=Manager ,dc=testldap,dc=co,dc=kr"
adding new entry "ou=People,dc=testldap,dc=co,dc=kr"
adding new entry "ou=Group,dc=testldap,dc=co,dc=kr"


##디렉토리 구조 완료.
##이제 LDAP 유저만 추가하면 됩니다.

ldapuser1 라는 계정을 만들어 보겠습니다

vi ldapuser1.ldif
===============================================
dn: uid=ldapuser1,ou=People,dc=testldap,dc=co,dc=kr                    // testldap.co.kr 도메인의 People ou(그룹 조직)에 ldapuser1 이라는 dn(여기서는 계정) 을 선언.
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: ldapuser1
uid: ldapuser1
uidNumber: 9999
gidNumber: 100
homeDirectory: /home/guest/ldapuser1        // 이 부분을 나중에 autofs
loginShell: /bin/bash
gecos: ldapuser1 [Admin (at) testldap]
userPassword: {crypt}x
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
==============================================


ldapadd -x -W -D "cn=Manager,dc=testldap,dc=co,dc=kr" -f ldapuser1.ldif               // 계정 생성. Manager ( 관리자 ) 패스워드 물어봄. 
Enter LDAP Password:
adding new entry "uid=ldapuser1,ou=People,dc=testldap,dc=co,dc=kr"



## 서버에 ldapuser1 이라는 계정이 생성 됌. 
## 확인하기
#  ldapsearch -x cn=ldapuser1 -b dc=testldap,dc=co,dc=kr
# extended LDIF
#
# LDAPv3
# base <dc=testldap,dc=co,dc=kr> with scope subtree
# filter: cn=ldapuser1
# requesting: ALL
#

# ldapuser1, People, testldap.co.kr                    // 계정이 존재하면 해당 내용들이 출력 됩니다. ( 계정이 없으면 단순 result 출력만 나옵니다 ) 
dn: uid=ldapuser1,ou=People,dc=testldap,dc=co,dc=kr
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: ldapuser1
uid: ldapuser1
uidNumber: 9999
gidNumber: 100
homeDirectory: /home/guest/ldapuser1
loginShell: /bin/bash
gecos: ldapuser1 [Admin (at) testldap]
userPassword:: e2NyeXB0fXg=
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1


서버 구성 및 사용자 계정 추가까지 완료.

마지막으로 LDAP 계정의 Homedirectory Mount를 위해 NFS 구성해야 합니다

# yum -y install nfs-utils
# systemctl start nfs
# systemctl enable nfs
# mkdir -p /home/guest/ldapuser1
# chmod -R 777 /home/guest/ldapuser1
# vi /etc/exports
/home/guest/ldapuser1 -rw *(rw,no_root_squash)

# showmount -e
/home/guest/ldapuser1 *

# exportfs -v
/home/guest/ldapuser1
<world>(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

#마운트 테스트
#mount localhost://home/guest/ldapuser1 /mnt
#df -Th 
localhost:/home/guest/ldapuser1 8.0G 1.6G 6.5G 20% /mnt

#umount /mnt




이제 클라이언트에서 해당 계정을 확인해야 합니다.



LDAP Client ( 192.168.0.3 ) 

#/etc/hosts 에 server hostname 설정 
( 설정 안 하면 하단의 ldapserver에 ip직접 입력해도 됩니다 ) 

#yum install -y ldap-clients nss-pam-ldapd                     // 클라이언트와 로컬인증관련 모듈 패키지 설치.

root@TEST1:/etc/openldap/certs# authconfig --enableldap --enableldapauth --ldapserver=testldap.co.kr --ldapbasedn="dc=testldap","dc=co","dc=kr" --update                              
// 서버에 CLI 로 직접 연결. 아무 말 안 나오면 접속

root@TEST1:/etc/openldap/certs# systemctl restart nslcd                    
// ldap 클라이언트 재시작. 

root@TEST1:/etc/openldap/certs# getent passwd ldapuser1                    
// ldap 서버에 생성한 ldapuser1 이라는 계정정보 불러오기.
ldapuser1:*:9999:100:ldapuser1 [Admin (at) testldap]:/home/guest/ldapuser1:/bin/bash                    // 서버에서 계정 정보 가져온 것 확인.


#su ldapuser1                     // ldapuser1 로 로그인 성공 확인. 다만 설정된 /home/guest/ldapuser1 경로가 없다고 뜸.

해당 문제를 위해 LDAP 서버에 있는 NFS Homedir의 autofs 가 필요해짐.

#### autofs 작업
#yum install -y autofs
#systemctl start autofs
#systemctl enable autofs
#vi /etc/auto.master

/misc /etc/auto.misc
/home/guest /etc/auto.guest              // 이 라인을 추가

#vi /etc/auto.guest 파일 생성
ldapuser1 -rw,vers=3 testldap.co.kr:/home/guest/ldapuser1        // 마운트 정보.

* & 로 해도 잘 되는 부분 확인 했습니다.


#systemctl restart autofs            // 재시작

#su - ldapuser1            // 환경설정 유지하면서 유저 변경
마지막 로그인: 수 5월 15 17:30:55 KST 2019 일시 pts/1

-bash-4.2$ pwd                    // 마운트된 홈 경로 확인
/home/guest/ldapuser1

-bash-4.2$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 6.7G 5.4G 1.3G 81% /
devtmpfs 486M 0 486M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 45M 451M 10% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/sda1 297M 146M 152M 49% /boot
tmpfs 100M 0 100M 0% /run/user/1000
/dev/mapper/redhat-fedora 772M 828K 734M 1% /lvm1
tmpfs 100M 32K 100M 1% /run/user/0
testldap.co.kr:/home/guest/ldapuser1 8.0G 1.6G 6.5G 20% /home/guest/ldapuser1                // 자동마운트된 부분 확인


클라이언트에서 LDAP 유저로 로그인 시, 자동 HOME 디렉토리 마운트되는 부분 확인 되었습니다.


필요한 부분

1. 클라이언트의 인증서 사용 옵션 ( Cli 로 하려면 conf 파일 수정해야 함 ) 
2. 시험에선 root 라서 상관이 없으나(위랑 똑같이 될겁니다)
로컬에서 일반유저가 LDAP 유저로 SU Password 로그인 하려면 nss_pam 연동한 /etc/security의 PAM 설정이 필요할 것으로 보임. 
3. authconfig-tui / gtk 쪽은 저녁에 추가 하겠습니다. ( 오늘저녁이라고는 말 안했... ) 







블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

상황) 

1. 고객의 Mysql DB 저장 위치가 /usr/local/var/mysql/var/123

2. 고객의 /usr 파티션 용량이 98% 상황.

3. 고객은 서버관리를 모르고, 해당 사이트 DB 는 스펨으로 가득찬 상황

4. Mysql 5.1.73 / Database Name : 123


1. 고객이 해당 Database 정리를 위해 SQL Dump 파일을 요청.

=> mysqldump -u root -p qwe > /home/123/123-20190513.sql

Enter password:

mysqldump: Got error: 1016: 화일을 열지 못했습니다: 'g4_write_qna.MYD'. (에러번호: 144) when using LOCK TABLES

==> 해당 Table Lock 걸려있어서, --lock-all-tables 옵션 추가


[root@localhost backup]# mysqldump -u root -p --lock-all-tables 123 > /home/123/123-20190513.sql

mysqldump: Couldn't execute 'show create table `g4_write_qna`': 화일을 열지 못했습니다 : 'g4_write_qna.MYD'. (에러번호: 144) (1016)

#show table status;

#repair table g4_write_qna; 


==> g4_write_qna 테이블이 오랜 미관리로 인해 손상되어 있어 repair 및 Dump 불가

해당 테이블의 용량만 2.2G 로 고객사는 미사용 게시판이라고 하니.. 트래시 데이터로 추측됌.

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

2.2G       ./g4_write_qna.MYD

4.0K    ./g4_write_qna.MYI

16K     ./g4_write_qna.frm

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


2. 해당 DB 파일 경로 확인 시, 2018년 9월까지만 수정이력이 있어 미사용 테이블로 판단.  ( MYISAM 일 경우 DB 디렉토리 통째로 복사가 가능 ) 

==> 고객에게 해당 Table 용량 확보 승인 요청


3. trancate 로 해당 table clear.  

삭제하기전 DB 디렉토리 통백업 필수 

#tar cvzf 123.tar.gz /usr/local/mysql/var/123

#mysql -u root -p

#use 123

#show tables;

#trancate table g4_write_qna

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

0       ./g4_write_qna.MYD

4.0K    ./g4_write_qna.MYI

16K     ./g4_write_qna.frm

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


4. /usr  70% 으로 용량 확보 완료했다.


기타) delete 대신 truncate ?

delete 는 where 조건절로 특정 부분 삭제가 가능. ( 순차 삭제 )  

truncate 는 그냥 테이블을 날려버린다. (drop이지만 테이블의 스키마 뼈대를 남김)

속도는 당연히 truncate 가 더 빠르다. 

테이블 손상된 경우에도 truncate 는 그냥 진행이 가능하다. 

빈 테이블로 깨끗하게 해줌.


상황에 맞춰서 사용하자. 


'Linux ( Cent OS ) > MySQL' 카테고리의 다른 글

CentOS MySQL Yum Repository  (0) 2019.06.19
0. Log Parameters 간단 요약( Mysql 5.1 ) - 작성중  (0) 2019.05.02
7. Binary Log 삭제  (0) 2019.05.02
블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,