mySQL 4.x 버전에서는 innodb가 기본적으로 탑재되어 있었지만, 5.1.3x 버전부터는 configure 옵션에서

--with-plugins=innobase 또는 --with-plugins=max 옵션을 추가해줘야만 innodb를 사용할 수 있다.

innodb 설치 여부는 콘솔에서 아래와 같이 확인할 수 있다.

mysql> show variables like 'have_innodb';

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

| Variable_name | Value |

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

| have_innodb   | NO    |

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

1 row in set (0.00 sec)


have_innodb 값이 NO라면 설치가 되어 있지 않은 것이다.

 이런 경우 재설치를 해야만 innodb를 사용할 수 있지만, 구굴링을 해보니 plugin 방식으로 추가할 수 있단다.

/etc/my.cnf 파일에서 [mysqld] 섹션에 아래 부분을 추가한 후 mysql 재실행.

# vi /etc/my.cnf

[mysqld]
ignore-builtin-innodb
plugin-load=innodb=ha_innodb_plugin.so

# /etc/rc.d/init.d/mysqld restart

 mysql 콘솔에서 아래 2가지 방식으로 innodb 로드된 것을 확인.

mysql> show variables like 'have_innodb';

mysql> show engines;

 

출처 : https://blog.naver.com/aramjo/120171873253

[root@CentOS5 sbin]# service proftpd restart
Shutting down proftpd:                                     [FAILED]
Starting proftpd:  - warning: unable to determine IP address of 'hostname'
 - error: no valid servers configured
 - Fatal: error processing configuration file '/usr/local/proftpd/etc/proftpd.conf'
                                                           [FAILED]
proftpd.conf 제일 하단에 아래 내용 추가
DefaultAddress ip address
[root@CentOS5 bin]# ps aux | grep proftpd
nobody    1193  0.0  0.0   2600   996 ?        Ss   23:46   0:00 proftpd: (accepting connections)
root     1198  1.2  0.1   3056  1608 ?        S    23:46   0:01 proftpd: linux - 192.168.10.199: IDLE
 

출처: https://ibabo.tistory.com/116 [Hello, World ♡.♡:티스토리]

--skip-extended-insert
해당옵션은 MySQL덤프를 뜨는경우 VALUES뒤에 여러 개의 데어터셋이 붙어있는 다중열 신텍스 형태로
덤프 뜨지않아 구문어서 해당라인을 찾기가 용의

--allow-keywords 
MySQL예약어와 동일한 필드명이 있을경우 복원시에 에러가 발생시
이옵션을 이용하여 덤프를 받으면 테이블명와 필드명에 ``해당 기호가 삽입되어 정상적으로 인식

--complet-insert -c
완전한 인서트문을 구성한다 .
 ex) insert into table_name(field1,field2) values(value1,value2)

--no-data
덤프시 데이터를 구성하지 말라는 옵션이다 .
이는 스키마 만 덤프를 받아 개발이나 구성서시 주로이용

--no-create-db
테이블 생성 쿼리를 구성하지 말라는 옵선

--quick, -q
대용량 데이타베이스를 덤프뜰때 유용 
한번에 한열씩 축출하며 쓰기전에 메로리에 버퍼링을 하록 하는옵션

--xml -x
XML형태로 덤프 받을시 이용

--default-chareter-set
덤프받을시 지정하는게릭터셋으로 연결하여 덤프 받는 옵션
하지만 테이블의 언어셋을 변경하여 받아주지는않음.


실제 mysqldump의 옵션은 많지만 주로사용하는것만 기술하였다.

 

2. 간단한 사용법에 대해 알아보자

분명히 euc_kr 데이터가 쌓여있는데 덤프를 받으면 깨지는경우

     -  이는 MySQL 서버가 다른언어셋으로 구성되어 있어 이중으로 인코딩되어 
        한글이나 다른언어들이 깨지는 현상이 발생한다 .
 이경우는 다음고 같이 덤프 받는다.

 mysqldump --default-chareter-set=euckr -u user -p  dbname > dbname.sql


버전이 달라  mysql디비가 인서트가안될경우 
     - 메이져 버전이 다를경우 MySQL데이터베이스안의 user,db,hot등의 테이블 구조가 달라 
       일반적으로 덤프를든경우  정상적으로 인서트되니않는다.
 이경우는 다음고 같이 덤프 받는다.

 mysqldump --complet-insert -u user -p  dbname > dbname.sql


예약어와 동일한 필드명 때문에 인서트가안될경우 
     - 필드명으로 인식하기전에 예약어로 인식하여 에러를 발생시킨다.
 이경우는 다음고 같이 덤프 받는다.

 mysqldump --allow-keywords -u user -p  dbname > dbname.sql

 

보통 덤프를 받을때 
 mysqldump --allow-keywords --default-chareter-set=euckr --skip-opt  -u user -p  dbname > dbname.sql
 위와 같은 형태로 받는다면 큰무리없이 복원이 가능할것이다.

 

출처 : https://www.linux.co.kr/home/lecture/index.php?cateNo=3&secNo=16&theNo=45&leccode=10956

CentOS 7 이상부터 systemd 로 환경이 변하면서 싱글모드 또한 기존의 방법으로 진입자체가 안됩니다.
따라서 아래 정리된 매뉴얼로 진행해 보시기 바랍니다.


시간이 지나 root패스워드가 가물가물할경우 혹시나 해서 로그인시 역시나 틀리다고 나올경우 아래와 같이 따라하시면 되겠습니다.

1. 서버 재부팅

패스워드를 몰라 서버에 접근할수없으니 Ctrl + Alt + Del 키로 재부팅을 진행합니다.
해당 키로 재부팅이 되지 않는다면, 어쩔수 없이 강제적인 재부팅 방법 뿐입니다.

2. 재부팅 진행시 edit mode 진입

상위 화면에서 e 버튼을 눌러 다음 모드로 진입합니다.

3. edit mode

edit mode의 첫화면입니다. 원하는 구문이 보이지 않아 아래로 내립니다.
상위 붉은 박스안의 내용에서 확인해야 할 사항은 다음과 같습니다.

ro : / 파티션을 read only로 마운트 하겠다는 옵션입니다.
init을 명령어가 가능한 쉘인 /bin/bash 로 지정해야합니다.

아래와 같이 변경합니다.

변경된 사항

rhgb quiet ----> init=/bin/bash
ro옵션은 single mode 진행후 rw로 재마운트하여 진행

4. single mode 진입
Ctrl + x를 눌러서 원하는 single mode로 진입합니다.

5. 패스워드 변경 1차 시도

상위와 같이 에러를 발생시킵니다.

6. 패스워드 변경 2차 시도

/ 파티션에 대한 재마운트 진행후 패스워드를 변경합니다.

재마운트 명령어
mount -o remount,rw /

7. 재부팅

부팅시 시스템이 전체 SELinux relabel을 자동으로 수행하도록 구성
(passwd 도구가 /etc/shadow 파일을 SELinux context없이 다시 만들기 때문이라고 합니다.)

touch /.autorelabel
명령어 입력후 재부팅을 진행합니다.

8. 로그인

이제 상위와 같이 변경된 패스워드로 접근이 가능합니다.

 

출처 : https://blog.naver.com/PostView.naver?blogId=ncloud24&logNo=221567607811&proxyReferer=https:%2F%2Fwww.google.com%2F&trackingCode=external

Logrotate 란?

 

리눅스내에서 시스템에 있는 모든 로그파일들을 관리할 수 있으며, 이들 로그파일들을 날짜를 지정하여 주기적으로 압축, 백업, 삭제, 메일로 보내는 등의 작업을 할 수 있도록 하여주는 기능

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

Logrotate가 필요한 이유

 

리눅스를 서버로 돌리면 하루에도 많은 로그 파일들이 생성된다. 서버 용량은 한정되어 있고 이와 같은 로그들이 차곡차곡 쌓이다보면 로그로 인해 하드 용량이 부족한 경우가 생겨 성능이 떨어질 수 있는데 매번 수동으로 로그파일이 저장되는 곳으로 이동하여 하나하나 삭제하는 일은 번거로운 일이 아닐수 없습니다. 이와 같이 로그파일를 수동으로 관리하지 않고 logrotate기능을 사용한다면 보다 효과적으로 관리할 수 있을것입니다.

 

rqm -qa | grep logrotate

 

yum -y install logrotate

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

기본적인 옵션 정보

 

daily : 매일 로테이트 진행

weekly : 매주 로테이트 진행
monthly : 매달 로테이트 진행
yearly : 매년 로테이트 진행
rotate [파일갯수] : 로테이트 진행될 파일갯수 ex) rotate 5
compress : 로테이트 진행된 로그파일 압축(gzip)

create [권한] [유저] [그룹] : 로테이트 되는 로그파일 권한 지정 ex) create 644 root root

nocompress : 로테이트 진행된 로그파일을 압축하지 않는다(기본값) 

compresscmd [압축명] : gzip 이외의 압축프로그램 지정 

uncompresscmd : 압축해제 명령 지정(기본값 : gunzip)
compressext [확장자명] : 압축된 백업 로그파일에 지정할 확장자 설정 
compressoptions [옵션] : 압축 프로그램에 대한 옵션 설정(-9 : 압축률 최대) 
dateext : 로그파일에 YYYYMMDD형식의 확장자 추가  백업 파일의 이름에 날짜가 들어가도록 함  
errors [메일주소] : 에러 발생시 지정된 메일주소로 메일발송
extention 확장자명 : 로테이트 진행된 로그파일의 확장자 지정 
ifempty : 로그파일이 비어있는 경우 로테이트 진행 (기본값)

noifempty : 로그파일이 비어있는 경우 순환하지 않는다 

mail [메일주소] : 순환후 이전 로그파일을 지정된 메일주소로 발송 
maxage : count로 지정된 날수가 지난 백업 파일 삭제 ex) maxage 30 30dl
missingok : 로그파일이 없을 경우에도 에러 처리하지 않는다
prerotate / endscript : 로테이트 진행작업 전에 실행할 작업 설정
postrotate / endscript : 로테이트 진행작업 후에 실행할 작업 설정
sharedscripts : prerotate, postrotate 스크립트를 한번만 실행 
size [사이즈] :  로테이트 진행 결과 파일사이즈가 지정한 크기를 넘지않도록 설정 
                            지정된 용량보다 클 경우 로테이트 실행 ex) size +100k
copytruncate : 현재 로그파일의 내용을 복사하여 원본 로그파일의 크기를 0으로 생성

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

logrotate 구동순서

 

 

 

cron(주기적으로 반복되는 일을 자동적으로 실행될수 있도록 설정해놓는 것, 데몬)을 이용해 logrotate 실행

 

crontab > cron.daily > logrotate > logrotate.conf > logrotate.d

 

vi  /etc/logrotate.conf

 

# see "man logrotate" for details

# rotate log files weekly   

#로그파일을 순환할 기간을 설정합니다 (yearly:매년, monthly:매달, weekly:매주, daily:매일)

 

weekly

 

# keep 4 weeks worth of backlogs  

#순환될 파일의 개수를 설정합니다. 최소값은 0입니다.

#예를들어 위에서 weekly로 설정하고 rotate 4를 주게되면 4주간 보관한뒤 순환하게 되며,

#위에서 daily로 설정하고 rotate 15를 주게되면 15일간 보관한뒤 순환하게 된다는 의미입니다.

 

rotate 4

 

# create new (empty) log files after rotating old ones 

#로그파일을 백업하고 새로운 파일을 생성할 것인지를 설정합니다.

create

 

#uncomment this if you want your log files compressed

#순환된 로그파일을 압축할것인지를 설정합니다.(압축방식 : gzip)

 

#compress

 

# RPM packages drop log rotation information into this directory

#로그 순환정보를 가진 디렉토리를 불러옵니다.

include /etc/logrotate.d

 

# no packages own wtmp -- we'll rotate them here

#/var/log/wtmp의 로그설정을 합니다.

#monthly, rotate 1, minsize 1M이므로 한달에 한번 로그파일용량이 1M가 되면 순환하게 되며

#백업파일은 root사용자의 utmp그룹의 소유로 퍼미션 644를 부여합니다.

 

/var/log/wtmp {

    monthly

    minsize 1M

    create 0664 root utmp

    rotate 1

}

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

vi /etc/logrotate.d/apache

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

/usr/local/apache/logs/*log{

weekly

rotate 5

compress

missingok

create 644 root root

dateext

}

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

정상적으로 동작하기 위해서 강제로 logrotate를 실행해보자.

강제로 실행하기 위해서는 다음과 같이 명령어를 입력하면 된다.
/usr/sbin/logrotate -f /etc/logrotate.conf

 

출처 : https://93it-security-service.tistory.com/123