mysql> show variables like '%log%';

+-----------------------------------------+------------------------------------+

| Variable_name                           | Value                              |

+-----------------------------------------+------------------------------------+

| back_log                                | 50                                 |

= 백로그 설정. 

일반적으로 OS 커널의 소켓 당 백로그 ( somaxconn ) 값보다는 작아야 함.

| binlog_cache_size                       | 32768                              |

= 바이너리 로그(트랜젝션되는) 기록 전 선행 캐쉬값 설정. 

이 수치보다 큰 트랜잭션은 disk ( tmpdir ) 에 임시파일을 쓰게 됌.

= cache_disk_use의 value 가 많아지는 경우, 이 값을 늘리면 좋다. 

| binlog_direct_non_transactional_updates | OFF                                |

= Slave 서버에서 트랜잭션 + 비 트랜잭션의 동시 프로세스가 일어날 경우 문제.

enable 해 주면, cache 등의 과정을 생략하고 무조건 바이너리 로그에 바로 기록.

| binlog_format                           | STATEMENT                          |

= 바이너리 로그 포맷 설정. STATEMENT(쿼리 순차)가 Default.

ROW(데이터 기반), MIXED(다이나믹) 등이 더 있으며

5.7.6이상에서는 ROW 가 Default 이다. 

| expire_logs_days                        | 2                                  |

= 바이너리 로그 보관 기간. default 는 0으로 기간없이 저장함. 

디스크 용량 purge 로 확보하는 것보다, 이 기간을 설정해 두면 좋음.

| general_log                             | OFF                                |

= 실행 쿼리를 기록하는 General_log 설정.

= 쉘 상에서 입력 실행을 받는순간, 실행보다 먼저 기록되는 수준으로

잘못된 쿼리나, 명령어까지 그대로 기록하는 로그임.  

Binary Log 는 쿼리 처리 후 변경된 시점/결과를 기록하는 것으로 쿼리구문이 없음. 주로 특정 시점 복구나, 리플리케이션에 사용함. 용도가 다름. 

| general_log_file                        | /usr/local/mysql/var/Web1.log      |

= General_log 의 파일명 및 경로 설정. my.cnf 에도 지정 가능.

| innodb_flush_log_at_trx_commit          | 1                                  |

= innodb 의 쿼리 로그 실행시 패턴 설정

0 : 쿼리 실행시 실행/취소 여부 상관없이, 1초 간격으로 메모리 버퍼에서 디스크 쓰기 후 flush 실행

( 1보다 빠름. 문제 발생시 0~1초 사이의 log 가 유실될 수 있음 )

1 : 쿼리 실행시, 우선 로그를 버퍼->디스크까지 다 쓰고, 결과/취소가 결정 후 flush.  

( 0 보다, 디스크 입출력 횟수가 증가하지만,  log 손실이 없는 안정적 방법 )

2: 혼합. 로그를 버퍼에 우선 다 밀어넣지만 디스크로 flush 를 하지 않음.

대신 실행/취소 결과 결정 시 1초 간격으로 디스크로 flish 함.

( MySQL 장애 시에도 로그 보존. 단 OS 리부팅 시 0~1초 문제 생길 수 있음 ) 

| innodb_locks_unsafe_for_binlog          | OFF                                |

= innodb 의 검색과 인덱싱에서 next_key_locking 활성화 여부.

| innodb_log_buffer_size                  | 1048576                            |

= 바이트. innodb에서 트랜잭션을 버퍼에 기록하는 용량. 1~8MB 지정 가능.

트랜잭션의 크기보다 이 버퍼가 클 경우, disk기록하지 않고 메모리에서 바로 commit 처리하므로 속도 향상 가능.

| innodb_log_file_size                    | 5242880                            |

= 그룹의 innodb log 파일사이즈이며 최대 4G까지 가능.

이 값이 크면, 플러시 횟수가 줄어, 속도는 향상되지만, 장애 발생시 시점, 처리복구 인덱싱 시간이 오래 걸리는 점을 유의.  

| innodb_log_files_in_group               | 2                                  |

= 그룹 안에서 innodb log 파일 갯수. 디폴트는 logfile0, 1의 2개로 구성. 

| innodb_log_group_home_dir               | ./                                 |

= 로그파일의 위치. 디폴트는 MySQL data 경로.

| innodb_mirrored_log_groups              | 1                                  |

= 보존용 복제 log 의 개수. 보통은 변경하지 않는다. 


| log                                     | OFF                                |

= general , binary 등으로 대체되었으므로, 건드릴 필요 없음.

| log_bin                                 | ON                                 |

= binary log 활성화 유무

| log_bin_trust_function_creators         | OFF                                |

| log_bin_trust_routine_creators          | OFF                                |

| log_error                               | /usr/local/mysql/var/Web1.err      |

| log_output                              | FILE                               |

| log_queries_not_using_indexes           | OFF                                |

| log_slave_updates                       | OFF                                |

| log_slow_queries                        | ON                                 |

| log_warnings                            | 1                                  |

| max_binlog_cache_size                   | 18446744073709547520               |

| max_binlog_size                         | 1073741824                         |

| max_relay_log_size                      | 0                                  |

| relay_log                               |                                    |

| relay_log_index                         |                                    |

| relay_log_info_file                     | relay-log.info                     |

| relay_log_purge                         | ON                                 |

| relay_log_space_limit                   | 0                                  |

| slow_query_log                          | ON                                 |

| slow_query_log_file                     | /usr/local/mysql/var/Web1-slow.log |

| sql_log_bin                             | ON                                 |

| sql_log_off                             | OFF                                |

| sql_log_update                          | ON                                 |

| sync_binlog                             | 0                                  |

+-----------------------------------------+------------------------------------+

38 rows in set (0.00 sec)


환경변수 제어는 set global 로 대부분 실시간 제어가능 합니다

flush privileges; 는 기본으로 달고 살면 좋겠죠. 



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

CentOS MySQL Yum Repository  (0) 2019.06.19
[실무 예시] MySQL Table 비우기  (0) 2019.05.13
7. Binary Log 삭제  (0) 2019.05.02
블로그 이미지

늙은M군

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

,

보통 용량 확보를 위해 Binary Log 삭제해야 할 경우가 있습니다.

mysql 디렉토리 가보면 막 00001 00002 00003.. 삭제하고 싶은 파일들이 보이는데요

수동 삭제하지 말고, MySQL 내에서 purge 로 삭제해 주어야 합니다. 


해당 바이너리 로그 보관은 expire_logs_days 에서 조절할 수 있습니다

( mysql> show variables like 'expire%'; 로 확인 하고, 

set globa; expire_logs_days=일수; 로 설정 ) 

단 set global 은 데몬 재구동시 설정 초기화되므로, 

값 업데이트 또는 my.cnf 설정 하세요. 

root@Web1:/usr/local/mysql/var# mysql -u root -p      권한자 로그인

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 10

Server version: 5.1.67-log Source distribution


Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| test               |

+--------------------+

3 rows in set (0.00 sec)


mysql> use mysql;

Database changed

mysql> show binary logs;              로그 리스트 보기

+------------------+-----------+

| Log_name         | File_size |

+------------------+-----------+

| mysql-bin.000012 |       149 |

| mysql-bin.000013 |       149 |

| mysql-bin.000014 |       106 |

+------------------+-----------+

3 rows in set (0.00 sec)


mysql> purge master logs to 'mysql-bin.000013';   000013 제외한 "이전" 의 바이너리 로그 모두 삭제. 

Query OK, 0 rows affected (0.03 sec)


mysql> show binary logs;

+------------------+-----------+

| Log_name         | File_size |

+------------------+-----------+

| mysql-bin.000013 |       149 |    13 이전의 12가 삭제 됌. 

| mysql-bin.000014 |       106 |

+------------------+-----------+

2 rows in set (0.00 sec)


mysql> show variables like 'expire%';    바이너리 로그 보관기간 확인

+------------------+-------+

| Variable_name    | Value |

+------------------+-------+

| expire_logs_days | 2     |

+------------------+-------+

1 row in set (0.00 sec)


mysql> set global expire_logs_days=2;    설정은 set global 로 가능. 

Query OK, 0 rows affected (0.00 sec)


모든 작업 후에는 혹시 모르니 flush privileges; 를 해주는 버릇을 들여보자.



블로그 이미지

늙은M군

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

,

AWS 의 시작은 저마다 다 다른 방법이 있으며

AWS 도움말이 워낙 자세하게 되어 있어서, 사실 별도의 설명이 많이 필요 없을 것입니다.


이 카테고리에서는 본인의 AWS 입문 및 진행과정을 순차적으로 나열함으로써

무엇이든 가장 첫 접근.. 아무것도 모를 때 가장 어렵게 느껴지는 분들을 위한

시작점의 가이드 정도가 되었으면 합니다.


단순사용자는 VPS 처럼 사용하기 위한 Lightsail 을 먼저 시작할 수도 있고,

자신만의 가상 네트워크에서 EC2 인스턴스를 조합하는 과정부터 시작하여

해당 과정의 이해도가 깊어지면, 네트워킹, VM 의 지식이 같이 늘어날 수 있는 루트도 존재합니다.


어느 방향이던, AWS 에 친숙해지는 부분이 되었으면 좋겠습니다. 



블로그 이미지

늙은M군

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

,

디스크 용량 확보를 위해, 특정 경로의 용량을 순차적으로 나열

[root@localhost ~]# df -Th

Filesystem     Type      Size  Used Avail Use% Mounted on

/dev/sda3      ext4      3.3T  2.2T  935G  70% /

devtmpfs       devtmpfs  7.7G     0  7.7G   0% /dev

tmpfs          tmpfs     7.8G     0  7.8G   0% /dev/shm

tmpfs          tmpfs     7.8G  818M  7.0G  11% /run

tmpfs          tmpfs     7.8G     0  7.8G   0% /sys/fs/cgroup

/dev/sda2      ext4      477M  134M  315M  30% /boot

tmpfs          tmpfs     1.6G     0  1.6G   0% /run/user/1000



1) 해당 경로 전체 용량

[root@localhost]# du -sh ./

1.1T    ./


2) 해당 경로 하위 디렉토리와 각 대용량 순 순차 정렬

[root@localhost]# du -sh ./* | sort -rh

23G     ./lv.lma
22G     ./lv.lwb
19G     ./lv.ssc
17G     ./celine.lmd
14G     ./lv.lwsme
14G     ./celine.ssf
14G     ./bluebellg
13G     ./lv.lih
13G     ./fendi.ssi
12G     ./fendi.ssgmj
12G     ./bally.lmk
11G     ./lv.sil
11G     ./lv.lbm
9.5G    ./celine.ljn
.
.


sort 옵션에서 n과 h의 차이점

-n 으로 정렬하면 1G 1K 1M 등의 순차정렬에서 문제가 좀 있어 -h 로 함

  -h, --human-numeric-sort    compare human readable numbers (e.g., 2K 1G)

  -n, --numeric-sort          compare according to string numerical value


이는 ls 등에서도 동일합니다.

File Size 를 K/M/G 등으로 편하게 정렬하기

# ls -laSh   

-S : Sort

-h : Human numerical compare.

-a : 숨겨진 파일

-l : 상세출력





블로그 이미지

늙은M군

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

,

리눅스에서 데이터 가공할 때 | 는 아주 많이 쓰입니다. 

금번 예시는 grep -E  옵션으로 정규표현식 확장해서 사용하면 됩니다.

Regexp selection and interpretation:

  -E, --extended-regexp     PATTERN is an extended regular expression (ERE)


| (파이프) 는 or 의 의미인건 잘 아실겁니다.

주의점) 공백의 차이가 있으므로 주의



사용 예시)

#grep -E '//|zone' /etc/named.conf

= // 주석 라인과, zone 으로 시작되는 라인을 순차적으로 출력함.


[ 원본 ] 

// 테스트#1

#cat /etc/named.conf

zone "1111.co.kr" in {

        type master;

        file "1111.co.kr";

};

zone "1234.co.krr" in {

        type master;

        file "1234.co.krr";

};

// 테스트2


zone "2345.co.kr" in {

        type master;

        file "2345.co.kr";

};

zone "2222.com" in {

        type master;

        file "2222.com";

};


#grep -E "//|zone" /etc/named.conf


// 테스트#1

zone "1111.co.kr" in {

zone "1234.co.krr" in {

// 테스트2

zone "2345.co.kr" in {

zone "2222.com" in {


출력값에서 지저분한 { 를 제거하고 싶으면 grep -v 옵션 이나 awk 로..


#grep -E "//|zone" /etc/named.conf | awk -F{ '{ print $1 }'

// 테스트#1

zone "1111.co.kr" in

zone "1234.co.krr" in

// 테스트2

zone "2345.co.kr" in

zone "2222.com" in



깔끔하다.


블로그 이미지

늙은M군

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

,

Apache 2.4.39 소스 설치

조건 : CentOS 7.6.1810 (minimal ) 만 설치 

        네트워크 환경 


cd /usr/local/src/

yum -y install wget openssl-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel  ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel libtool  libtool-libs openldap openldap-devel nss_ldap openldap-clients openldap-servers libtool-ltdl libtool-ltdl-devel bison expat-devel

yum -y groupinstall "Development Tools"

yum -y install gd gd2 gd-devel gd2-devel wget pcre* openssl* perl libaio


wget http://apache.tt.co.kr//httpd/httpd-2.4.39.tar.bz2

wget http://apache.tt.co.kr/apr/apr-1.6.5.tar.gz

wget http://apache.tt.co.kr/apr/apr-util-1.6.1.tar.gz


tar jxvf httpd-2.4.39.tar.bz2 

tar xvf apr-1.6.5.tar.gz 

tar xvf apr-util-1.6.1.tar.gz


mv apr-1.6.5 apr

mv apr httpd-2.4.39/srclib/

mv apr-util-1.6.1 apr-util

mv apr-util httpd-2.4.39/srclib/


cd httpd-2.4.39


## 커스텀 튜닝 부분입니다. 최소한의 부분이니 그냥 써도 무방합니다.  

sed -i "s/finished(outctx->filter_ctx->pssl)/finished(outctx->filter_ctx->pssl);/g" ./modules/ssl/ssl_engine_io.c

perl -pi -e "s/LIMIT 256/LIMIT 2048/g" server/mpm/prefork/prefork.c

perl -pi -e "s/LIMIT 16/LIMIT 128/g" server/mpm/worker/worker.c


## 컨피그입니다. ssl과 all-shared 부분만 있으면 보통 큰 문제 없음. 

./configure --prefix=/usr/local/apache2 --enable-module=so --enable-mods-shared=all --enable-so --enable-deflate --enable-rewrite --with-included-apr --enable-module=ssl  --enable-ssl=shared --with-ssl --enable-ssl --with-mpm=prefork

make -j 3

make install


## lib 라이브러리 PATH 설정

echo "/lib" >> /etc/ld.so.conf

echo "/usr/lib" >> /etc/ld.so.conf

echo "/usr/local/lib" >> /etc/ld.so.conf

echo "/usr/local/mysql" >> /etc/ld.so.conf

echo "/usr/local/mysql/lib" >> /etc/ld.so.conf

echo "/usr/local/apache2/lib" >> /etc/ld.so.conf




시작 경로는 컨피그 보면 알겠지만

/usr/local/apache2/bin/apachectl 입니다.

2.4는 SSL 엔진 적용을 하더라도 굳이 -D SSL -k start 옵션 줄 필요가 없음. 


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

[설치] 3. PHP 7.3.4 Source Install  (0) 2019.04.18
[설치] 2. MySQL 5.7.25 Source Install  (1) 2019.04.18
블로그 이미지

늙은M군

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

,

PHP 7.3.4 Stable Source 설치

선행조건 : 반드시 Apache 2.4 + MySQL 5.7.25 Source 설치 진행하고 젤 마지막.

( 컨피그 옵션에 있는 Prefix 경로와 다르면 무조건 error 납니다 ) 

1,2번 먼저 설치하고 젤 나중에 진행하면 됩니다.


CentOS 7.6.1810 

cd /usr/local/src


#[ Mcrypt 모듈 설치를 위한 lib 추가 ]

wget https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2/download

mv download libmcrypt-2.5.8.tar.bz2

tar jxvf libmcrypt-2.5.8.tar.bz2

cd libmcrypt-2.5.8                         

./configure

make -j 3

make install


yum -y install gdbm gdbm-devel gmp gmp-devel


cd /usr/local/src 

wget https://www.php.net/distributions/php-7.3.4.tar.bz2

tar jxvf php-7.3.4.tar.bz2

cd php-7.3.4

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/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

make -j 3

make install


cp /usr/local/src/php-7.3.4/php.ini-production /usr/local/php/lib/php.ini


# php 7.0 이후 mcrypt 모듈 추가하기

cd /usr/local/src/

wget https://pecl.php.net/get/mcrypt-1.0.2.tgz

tar xvzf mcrypt-1.0.2.tgz

cd mcrypt-1.0.2

phpize 

./configure

make -j 3 && make install


echo "extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/mcrypt.so" >> /usr/local/php/lib/php.ini

/usr/local/apache2/bin/apachectl restart

php -m | grep mcrypt 

sleep 3


## Apache 에 php 설정 추가.

sed -i '396iAddType application/x-httpd-php .html .htm .php .php4 .php5 .phtml .cgi .inc' /usr/local/apache2/conf/httpd.conf



#phpinfo 소스 추가

echo "<?php phpinfo(); ?>" > /usr/local/apache2/htdocs/apm_ver.php 

chmod 755 /usr/local/apache2/htdocs/apm_ver.php


#자동시작 등록

chmod +x /etc/rc.local

#echo -e "nameserver 168.126.63.1\nnameserver 8.8.8.8" > /etc/resolve.conf

//nameserver 설정은 사용자 환경에 따라 설정. 

echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.local

echo "/etc/init.d/mysqld start" >> /etc/rc.local



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

[설치] 1. Apache 2.4.39 Source Install  (0) 2019.04.18
[설치] 2. MySQL 5.7.25 Source Install  (1) 2019.04.18
블로그 이미지

늙은M군

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

,

CentOS 7.6.1810 OS에

Mysql 5.7.25 비교적 신버전 소스 설치 진행.

기본조건 : OS Package Minimal + Development Tools + Wget 설치.  

컨피그 옵션에 Apache 관련이 들어갈 경우, Apache가 먼저 설치되어야 함.

( 보통 소스는 A M P 순서대로 설치 하더랍니다.... )  

cd /usr/local/src/


yum -y install cmake ncurses-devel

groupadd -g 400 mysql

useradd -u 400 -g 400 -d /usr/local/mysql -s /bin/false mysql

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25.tar.gz

tar zxvf mysql-5.7.25.tar.gz

cd mysql-5.7.25


cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

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

-DENABLED_LOCAL_INFILE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

-DSYSCONFDIR=/etc \

-DDEFAULT_CHARSET=utf8 \

-DMYSQL_TCP_PORT=3306 \

-DWITH_EXTRA_CHARSETS=all \

-DDEFAULT_COLLATION=utf8_general_ci \

-DDOWNLOAD_BOOST=1 \

-DWITH_BOOST=/usr/include/boost


make -j 3                 

// CPU 코어가 많은경우 수량 적절히 조절해주면 약간의 속도 효과를 볼 수있음

make install


cd /usr/include/boost/boost_1_59_0

./bootstrap.sh

./b2 install


cd /usr/local/src/


echo "[client]

default-character-set = utf8

port = 3306

socket = /tmp/mysql.sock

default-character-set = utf8


[mysqld]

socket=/tmp/mysql.sock

datadir=/usr/local/mysql/data

basedir = /usr/local/mysql

#user = mysql

#bind-address = 0.0.0.0

#

skip-external-locking

key_buffer_size = 384M

max_allowed_packet = 1M

table_open_cache = 512

sort_buffer_size = 2M

read_buffer_size = 2M

read_rnd_buffer_size = 8M

myisam_sort_buffer_size = 64M

thread_cache_size = 8

query_cache_size = 32M


#dns query

skip-name-resolve


#connection

max_connections = 1000

max_connect_errors = 1000

wait_timeout= 60


#slow-queries

#slow_query_log = /usr/local/mysql/data/slow-queries.log

#long_query_time = 3

#log-slow-queries = /usr/local/mysql/data/mysql-slow-queries.log


##timestamp

explicit_defaults_for_timestamp


symbolic-links=0


### log

log-error=/usr/local/mysql/data/mysqld.log

pid-file=/tmp/mysqld.pid


###chracter

character-set-client-handshake=FALSE

init_connect = SET collation_connection = utf8_general_ci

init_connect = SET NAMES utf8

character-set-server = utf8

collation-server = utf8_general_ci


symbolic-links=0


##Password Policy

#validate_password_policy=LOW

#validate_password_policy=MEDIUM



### MyISAM Spectific options

default-storage-engine = myisam

key_buffer_size = 32M

bulk_insert_buffer_size = 64M

myisam_sort_buffer_size = 128M

myisam_max_sort_file_size = 10G

myisam_repair_threads = 1


### INNODB Spectific options

#default-storage-engine = InnoDB

#skip-innodb

#innodb_additional_mem_pool_size = 16M

#innodb_buffer_pool_size = 1024MB

#innodb_data_file_path = ibdata1:10M:autoextend

#innodb_write_io_threads = 8

#innodb_read_io_threads = 8

#innodb_thread_concurrency = 16

#innodb_flush_log_at_trx_commit = 1

#innodb_log_buffer_size = 8M

#innodb_log_file_size = 128M

#innodb_log_files_in_group = 3

#innodb_max_dirty_pages_pct = 90

#innodb_lock_wait_timeout = 120



[mysqldump]

default-character-set = utf8

max_allowed_packet = 16M


[mysql]

no-auto-rehash

default-character-set = utf8


[myisamchk]

key_buffer_size = 256M

sort_buffer_size = 256M

read_buffer = 2M

write_buffer = 2M" > /etc/my.cnf


cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

chmod 700 /etc/init.d/mysqld


/usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data


chown -R mysql.mysql /usr/local/mysql

chmod 711 /usr/local/mysql

chmod 707 /usr/local/mysql/data

chmod 751 /usr/local/mysql/bin

chmod 750 /usr/local/mysql/bin/*

chmod 755 /usr/local/mysql/bin/mysql

chmod 755 /usr/local/mysql/bin/mysqldump


echo "export PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/php/bin:" >> /etc/profile

source /etc/profile


/etc/init.d/mysqld [ start | stop | restart ] 


초기패스워드 :  숨겨진 .mysql_secret 파일에 적혀있음.

mysql_secure_install 또는 DB 접속 후 패스워드 갱신해 주어야 합니다.


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

[설치] 1. Apache 2.4.39 Source Install  (0) 2019.04.18
[설치] 3. PHP 7.3.4 Source Install  (0) 2019.04.18
블로그 이미지

늙은M군

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

,


시험장에 들어가면 가장 먼저 해야 할 VM 로그인입니다.

로그인해서 yum repo 및 네트워크 설정을 해야 시험을 칠 수 있으니..

이거 못하면 돈만 40만원 내고 집에 가야합니다. 시험장까지 와서 못하실 분은 없겠지만


RHEL 7 의 루트 패스워드 초기화 방법은 하기 주소를 참조하면 되고

간단히 요약하겠습니다.

https://docs.fedoraproject.org/en-US/Fedora/23/html/System_Administrators_Guide/sec-Changing_and_Resetting_the_Root_Password.html


방법 1) rd.break + autolabel 

= grub2 화면에서 e 입력하여 커널옵션 진입 후
 linux16줄의 맨 뒤에 rd.break 입력 후 ctrl + x 로 부팅.


부팅 후 /sysroot 마운트

mount -o remount,rw /sysroot

chroot /sysroot

passwd root

touch ./autolabel

exit 2회 시 그대로 부팅 진행. 


방법 2) init=/bin/bash + chmod /etc/shadow + autolabel

= 커널옵션 linux16줄의 rhgb부터 뒷부분을 싹 지우고 

init=/bin/bash 입력 후 ctrl+x 를 입력하여 부팅. 


부팅 후 / 재 마운트. 

mount -o remount,rw /

passwd root 업데이트 ( 실패함. 성공 떠도 적용 안됩니다. ) 

chmod 640 /etc/shadow

passwd root

touch ./autolabel

exit

(셧다운 되므로, 강제 리부팅)


정상 부팅 후, 수정한 root 패스워드로 로그인. 

블로그 이미지

늙은M군

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

,


LVM 이야기입니다.

반드시 나오는 RHEL 7의 스토리지 실습 부분이고

생성 , 삭제 , 볼륨 증감 등의 기본적인 운영 커맨드를 숙지해야 합니다.

LVM 의 구조나 상세한 이해를 적는 공간은 아니고, 실전용 실습 용도로 설명합니다.

필수 용어

PV(Physical Volume): LVM 사용을 위해 설정한 최초의 raw 디스크. 

(/dev/sdb1, /dev/sdb2 등). fdisk /dev/sdb 파티셔닝 중 반드시 t 커맨드로 8e ID 부여해야 함. 

PE(Physical Extents): 블럭(PE) 단위로 제어할 때 사용. 

pvcrate에서 옵션으로 -l 을 사용. 

VG(Volume Group): PV 를 모아 하나의 논리적 그룹을 형성. 

( RAID 로 비유하면 물리디스크를 RAID 0,1 등의 Array 로 묶은 그룹 ) 

LV(Logical Volume): VG에서 분할. 실제 마운트 포인트로 사용되는 LVM 파티션. 당연한 이야기지만 VG 보다 클 수는 없다. 

간단 이해의 흐름 ) PV Drive 들을 모아서 VG 를 생성. VG에서 LV 를 분할. 

RAID 과정 생각해도 됩니다. PV가 물리디스크. VG가 Array. LV가 파티션. 


LVM 실습  

/dev/sdb   8GB 포맷되지 않은 디스크. 

1) LV name = LV01

2) VG name = VG01

3) LV size = 50PE  ( PE Size = 20MB ) 

4) LV 형식은 EXT3 

5) /mnt/lvm 에 mount하고, 부팅시 자동으로 마운트 되게 하시오.

6) LV 크기를 70PE 로 확장하시오.

7) LV 크기를 60PE 로 줄이시오.


1) LVM 사용할 디스크 확인 하기

= /dev/sdb   미 파티셔닝 상태로 8GB 디스크 입니다.  

root@TEST1:~# fdisk -l


Disk /dev/sda: 8589 MB, 8589934592 bytes, 16777216 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x0004769e


   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *        2048      616447      307200   83  Linux

/dev/sda2          616448     2713599     1048576   82  Linux swap / Solaris

/dev/sda3         2713600    16777215     7031808   83  Linux


Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x6682c1f3


   Device Boot      Start         End      Blocks   Id  System



2) n 눌러서 8GB 통으로 파티션 만들어 주고 Type 변경 

= PV 생성 준비 완료! ( 초급 학습이므로 단일디스크 사용합니다 ) 

= fdisk 종료하기 전 w 로 싱크하는거 잊지 마시구요. 


Command (m for help): t

Selected partition 1

Hex code (type L to list all codes): 8e

Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p


Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x6682c1f3


   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048    16777215     8387584   8e  Linux LVM


PV 생성 완료!


3) PV 지정

= 단일디스크라 별다른 옵션 줄 게 없습니다. 만듭시다!

= 생성 후 확인은 pvs (간략 ) 와 pvdisplay ( 상세 )  두 가지 명령어가 있습니다. 

   vg, lv 도 똑같이 있으니, 활용해주세요. 

형식) pvcreate PV이름

root@TEST1:~# pvcreate /dev/sdb1

  Physical volume "/dev/sdb1" successfully created.


root@TEST1:~# pvs
  PV         VG Fmt  Attr PSize  PFree
  /dev/sdb1     lvm2 ---  <8.00g <8.00g

root@TEST1:~# pvdisplay
  "/dev/sdb1" is a new physical volume of "<8.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name
  PV Size               <8.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               H5G2FT-10IQ-VZwq-QZh7-gdnR-LhNN-6VMFgX

이제 LVM 용도로 사용할 디스크 하나가 준비가 완료되었습니다.


4) VG 생성

PV 의 용량만큼 VG를 생성하거나, 여러 PV모아 그룹화할 수도 있습니다.

지금은 PV 를 그대로 VG로 만듭니다. 

조건에 VG Name 이 있는데 VG부터는 Name 이 필요합니다. 

PE 조건도 있는데 --help 옵션으로 보시면 -s 옵션이 PE(=블럭)크기 지정입니다.

 형식) vgcreate 만들VG이름 PV ...  옵션..

 [ -s|--physicalextentsize Size[m|UNIT] ]

root@TEST1:~# vgcreate vg01 /dev/sdb1 -s 20M

  Volume group "vg01" successfully created

root@TEST1:~# vgs
  VG   #PV #LV #SN Attr   VSize  VFree
  vg01   1   0   0 wz--n- <7.99g <7.99g

root@TEST1:~# vgdisplay
  --- Volume group ---
  VG Name               vg01
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <7.99 GiB
  PE Size               20.00 MiB
  Total PE              409
  Alloc PE / Size       0 / 0
  Free  PE / Size       409 / <7.99 GiB
  VG UUID               BwpXMG-oVag-8zgT-IBZg-Ctw2-3mR7-CvdDrp


5) LV 생성

이제 VG 에서 LV 만 파티션화해서 Mount 하면 실제 LVM 파티션 사용하는 겁니다.

만들 LV 용량을 지정해야 하는데 블럭단위니까 PE*수량 만큼 -l 옵션으로 지정해도 되고, 대문자 -L 10G 같은 식으로 직접 용량을 지정할 수도 있습니다.

위에도 적었지만 LV의 용량은 VG 를 넘어설 수 없습니다. 

형식) lvcreate -L|--size Size[m|UNIT] VG  ( -l 소문자일 경우 PE 수량 )

LV Name 이 조건에 있기 때문에 -n 만들LV이름  을 부가옵션으로 줍시다.


root@TEST1:~# lvcreate -l 50 vg01 -n lv01     PE 50개만큼의 용량

  Logical volume "lv01" created.


root@TEST1:~# lvs

  LV   VG   Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  lv01 vg01 -wi-a----- 1000.00m    PE가 20MB 이므로 * 50 = 1000M


root@TEST1:~# lvdisplay

  --- Logical volume ---

  LV Path                /dev/vg01/lv01             중요. 실제 Mount Point.

  LV Name                lv01

  VG Name                vg01

  LV UUID                TJgmq9-ihNU-TKba-wTJr-H9HZ-NjM0-DinsLm

  LV Write Access        read/write

  LV Creation host, time TEST1, 2019-04-17 17:20:05 +0900

  LV Status              available

  # open                 0

  LV Size                1000.00 MiB

  Current LE             50

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     8192

  Block device           253:0



6) 마운트

LV Path 를 마운트해야 합니다 fdisk 로 보이는 mapper 는 마운트가 안됩니다 ;;

lvdisplay 는 아무리봐도 안질리니까 꼭 100번 보세요.

문제 조건에 /mnt/lvm 에 마운트하라고 했으니 디렉토리를 만들어 줍니다.

마운트 전에 조건에 있는 EXT3 형식으로 포맷해줘야 마운트 됩니다. 

root@TEST1:~# lvdisplay

  --- Logical volume ---

  LV Path                /dev/vg01/lv01

  LV Name                lv01

  VG Name                vg01

  LV UUID                TJgmq9-ihNU-TKba-wTJr-H9HZ-NjM0-DinsLm

  LV Write Access        read/write

  LV Creation host, time TEST1, 2019-04-17 17:20:05 +0900

  LV Status              available

  # open                 0

  LV Size                1000.00 MiB

  Current LE             50

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     8192

  Block device           253:0


root@TEST1:~# mkdir -p /mnt/lvm

root@TEST1:~# mkfs.ext3 /dev/vg01/lv01

mke2fs 1.42.9 (28-Dec-2013)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

64000 inodes, 256000 blocks

12800 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=264241152

8 block groups

32768 blocks per group, 32768 fragments per group

8000 inodes per group

Superblock backups stored on blocks:

        32768, 98304, 163840, 229376


Allocating group tables: done

Writing inode tables: done

Creating journal (4096 blocks): done

Writing superblocks and filesystem accounting information: done


root@TEST1:~# mount /dev/vg01/lv01 /mnt/lvm

root@TEST1:~# df -h

Filesystem             Size  Used Avail Use% Mounted on

/dev/sda3              6.7G  4.3G  2.4G  65% /

devtmpfs               486M     0  486M   0% /dev

tmpfs                  496M     0  496M   0% /dev/shm

tmpfs                  496M  7.1M  489M   2% /run

tmpfs                  496M     0  496M   0% /sys/fs/cgroup

/dev/sda1              297M  146M  152M  49% /boot

tmpfs                  100M     0  100M   0% /run/user/0

/dev/mapper/vg01-lv01  969M  1.3M  918M   1% /mnt/lvm


마운트가 완료 되었습니다.


7) 부팅시 자동 마운트

LV_PATH 로 /etc/fstab 에 추가. ( 틀리면 부팅안되니까 꼭 재부팅해서 확인해보세요 ) 

root@TEST1:~# vi /etc/fstab


/dev/vg01/lv01                  /mnt/lvm                ext3    defaults        0 0

~


8) 용량을 70PE 로 확장

lvextend 라는 명령어가 있습니다.  create 때랑 똑같아요.

-l PE 수 만큼 입력해주면 됩니다

df 쳐보면 실시간 반영은 안되므로 파일시스템의 리사이징 명령을 내려줘야 합니다.

( EX : xfs 인 경우 xfs_grown LV_PATH 치면 즉시 반영.  ext 시스템은 resize2fs LV_PATH ) 

root@TEST1:~# lvextend -l 70 /dev/vg01/lv01

  Size of logical volume vg01/lv01 changed from 1000.00 MiB (50 extents) to <1.37 GiB (70 extents).

  Logical volume vg01/lv01 successfully resized.


root@TEST1:~# df -h

Filesystem             Size  Used Avail Use% Mounted on

/dev/sda3              6.7G  4.3G  2.4G  65% /

devtmpfs               486M     0  486M   0% /dev

tmpfs                  496M     0  496M   0% /dev/shm

tmpfs                  496M  7.1M  489M   2% /run

tmpfs                  496M     0  496M   0% /sys/fs/cgroup

/dev/sda1              297M  146M  152M  49% /boot

tmpfs                  100M     0  100M   0% /run/user/0

/dev/mapper/vg01-lv01  969M  1.3M  918M   1% /mnt/lvm

용량이 1기가에서 그대로 안늘어나있음 


root@TEST1:~# resize2fs /dev/vg01/lv01     // 파일시스템에서 리사이징 체크

resize2fs 1.42.9 (28-Dec-2013)

Filesystem at /dev/vg01/lv01 is mounted on /mnt/lvm; on-line resizing required

old_desc_blocks = 1, new_desc_blocks = 1

The filesystem on /dev/vg01/lv01 is now 358400 blocks long.


root@TEST1:~# df -h

Filesystem             Size  Used Avail Use% Mounted on

/dev/sda3              6.7G  4.3G  2.4G  65% /

devtmpfs               486M     0  486M   0% /dev

tmpfs                  496M     0  496M   0% /dev/shm

tmpfs                  496M  7.1M  489M   2% /run

tmpfs                  496M     0  496M   0% /sys/fs/cgroup

/dev/sda1              297M  146M  152M  49% /boot

tmpfs                  100M     0  100M   0% /run/user/0

/dev/mapper/vg01-lv01  1.4G  1.5M  1.3G   1% /mnt/lvm

정상적으로 늘어난 것 확인. 


9) 용량을 60PE 로 감소

TIP) XFS 파일시스템으로 되어있는 LV는 용량 축소가 안됩니다....

lvextend 다음에는 lvreduce 라는 명령이 있습니다. 줄여줍시다..

reduce 는 주의해야 할 점이 많습니다

1) 반드시 먼저 파일시스템에서 먼저 리사이징으로 줄여줍니다.

lv부터 줄이면 데이터 날아갑니다. 

( /etc/lvm/backup 이용한 복원이 가능하지만 RHCSA 의 영역이 아님 ) 

2) lvreduce 사용 전 반드시 umount 해야 합니다.

3) lvreduce 옵션에 -r ( resize ) 옵션을 꼭 주세요. 안주면 무조건 DATA Loss물어봄.

4) 용량 감소는 가급적 PE 보다 실용량 ( -L ) 으로 하는게 좋습니다. 


ex)

umount /dev/vg01/lv01 또는 /mnt/lvm

resize2fs -f /dev/vg01/lv01 1000M       파일 시스템 사이즈를 1000M 으로 변경

lvreduce -r -L -500M /dev/vg01/lv01    LVM 에서 실제로 변경. ( 1500 --> 1000 )



root@TEST1:~# lvreduce -r -l 60 /dev/vg01/lv01

  WARNING: Reducing active and open logical volume to 1.17 GiB.

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce vg01/lv01? [y/n]:

umount 안하면 저런 DATA DESTROY 라는 무시무시한 상황이 발생!! 

다만 시험에선 데이터 필요없으니까 그냥 해도 됩니다.  ㅎ



블로그 이미지

늙은M군

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

,