MySQL Replication 설정 방법



리플리케이션은 DB 데이터를 이중으로 동기화를 원할 때 사용할 수 있습니다.


Master 서버가 오류가 발생할 경우를 대비하는 경우에 사용하는데 아무래도 정기적인 백업 보다는 실시간 백업이 더 낫지 않을까 생각 합니다.


파일 동기화는 https://ivps.tistory.com/150 여기를 참고하세요.


이제 Replication 설정 방법에 대해서 알아보겠습니다.



▶ Master 서버 환경설정 ( /etc/my.cnf 수정 )


[mysqld]

log-bin=mysql-bin

server-id=1

binlog_do_db=database1

binlog_do_db=database2


log-bin=mysql-bin

server-id=1

이렇게만 있어도 상관이 없습니다.


binlog_do_db 옵션은 Slave 에서 replicate_do_db 로 설정이 가능합니다.



▶ Master 서버 DB 재시작


my.cnf 파일의 옵션이 변경된 경우에 재시작을 해주어야 하지만,

Replication 설정과 상관없이 기존의 설정값이 log-bin, server-id 값이 이미 있을 겁니다.

이런 경우에는 DB 재시작을 할 필요가 없습니다.



▶ Master 서버 Replication 유저 추가


GRANT REPLICATION SLAVE ON *.* TO '유저아이디'@'%' IDENTIFIED BY '비밀번호';


Slave 서버에서 접속할 아이디를 생성하면 됩니다.

% 는 Slave 서버 IP 를 넣으면 보안에 더 좋겠지요.



▶ Master 서버 데이터 복사


FLUSH TABLES WITH READ LOCK;


# mysqldump -h마스터IP -uroot -p비밀번호 데이터베이스명 > backup.sql

# mysql -h슬래이브IP -uroot -p비밀번호 데이터베이스명 < backup.sql


UNLOCK TABLES;


운영중인 서버라면 테이블락을 걸어주어야 합니다.

그리고 Replication 이 동작중인 상태에서, 아래 과정을 다 거친 후에 나중에 데이터를 복제하여도 됩니다.

단, 빈 테이블이라도 있어야 합니다.



▶ Master 서버 File 및 Position 값 알아내기


SHOW MASTER STATUS;


윗 단계에서 데이터가 새로 갱신되지 않은 상태에서 확인하여야 합니다.



▶ Slave 서버 환경설정 ( /etc/my.cnf 수정 )


[mysqld]

log-bin=mysql-bin

log-slave-updates=1

server-id=2

replicate_do_db=database1

slave-skip-errors=1062


log-slave-updates 는 슬래이브면서 마스터인 경우에 값을 1을 주면 됩니다. 그냥 슬래이브라면 log-bin, log-slave-updates 는 없어도 됩니다.

server-id 는 슬래이브 서버 유니크한 번호입니다. 여러개의 슬래브 구성이라면 거기에 맞게 변경하면 됩니다.

replicate_do_db 는 동기화 시킬 데이터베이스명 입니다. 여러개라면 다음 줄에 계속해서 추가하거나 콤마로 구분해서 나열하면 됩니다.

여러개의 database 를 동기화 시켜야 한다면 이 옵션을 생략하면 됩니다.

이 외에도 아래의 옵션을 줄 수 있습니다.

replicate_ignore_db 제외할 database를 지정할 수 있습니다.

replicate_do_table 동기화 시킬 테이블을 지정할 수 있습니다.

replicate_ignore_table 제외할 테이블을 지정할 수 있습니다.

replicate_wild_do_table 동기화 시킬 테이블을 지정할 수 있습니다. 예) replicate_wild_do_table=database1.%

replicate_wild_ignore_table 제외할 테이블을 지정할 수 있습니다. 예) replicate_wild_ignore_table=database1.%

slave-skip-errors=1062 Error Duplicate entry 에러시 스킵하는 옵션입니다.



▶ Slave 서버 DB 재시작


리눅스 버전마다 다르겠지만

service mysqld restart 또는 systemctl restart mariadb



▶ Slave 서버 Master 정보 설정


CHANGE MASTER TO

MASTER_HOST='마스터IP',

MASTER_USER='유저아이디',

MASTER_PASSWORD='비밀번호',

MASTER_PORT=3306,

MASTER_LOG_FILE='File값',

MASTER_LOG_POS=Position값,

MASTER_CONNECT_RETRY=30;


my.cnf 에서 설정할 수 있지만 change master to 명령어로 설정이 가능합니다.


MASTER_HOST 는 마스터 서버의 IP값을 입력하면 됩니다.

MASTER_USER 와 MASTER_PASSWORD 는 3번째 단계에서 생성한 Replication 유저 아이디와 비밀번호를 입력하면 됩니다.

MASTER_LOG_FILE 과 MASTER_LOG_POS 는 SHOW MASTER STATUS 에서 확인한 File 값과 Position 값을 입력하면 됩니다.

MASTER_CONNECT_RETRY 는 커넥션 실패시 몇 초 후에 재시도 하는 값입니다.



▶ Slave 서버 Replication 시작


START SLAVE;


위의 과정에서 변동이 있으면 STOP SLAVE 를 실행한 다음 CHANGE MASTER TO 설정을 다시 해주고 START SLAVE 해주어야 합니다.



▶ Replication 동작 확인


SHOW SLAVE STATUS;


show master status 와 반대로 show slave status 로 슬래이브 상태를 확인할 수 있습니다.



마스터 DB 는 재시작 되더라도 SLAVE 서버는 다시 맞춰주는 작업이 필요가 없습니다.


하지만 슬래이브 DB 가 재시작 되면 마스터 DB 와 다시 싱크도 맞춰주어야 하고 위의 CHANGE MASTER TO 설정도 필요합니다.


싱크 맞추는 쉘스크립트는 https://ivps.tistory.com/606 여기를 참고하세요~



블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

KISA 인터넷진흥원 웹취약점 점검



요즘 이슈가 중국이 사드배치 보복으로 우리나라 사이트를 무차별로 공격한다고 합니다.


인터넷진흥원에서 중소기업, 소상공인, 비영리 단체, 개인을 대상으로 무료로 원격 웹사이트 취약점 점검을 해준다고 하네요.


그런데 절차가 복잡해서 이용하려는 분들이 많지 않을 듯 합니다.



KISA 인터넷진흥원 웹취약점 점검KISA 인터넷진흥원 웹취약점 점검


출처 : http://www.kisa.or.kr/business/violation/violation1_sub3.jsp


점검 신청은 http://www.krcert.or.kr/webprotect/webVulnerability.do 여기에서 할 수 있습니다.


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

MySQL mysqldump where option 백업받기



DB 데이터를 덤프 받을 때 특정 조건을 걸어서 백업을 받을 수 있습니다.


# mysqldump -u유저계정 -p비밀번호 database명 --where="조건식" > 덤프받을파일명


보통 rows index 나 날짜 컬럼을 조건으로 걸 수가 있습니다.


예)


--where="idx>10000"


또는


-w"idx>10000"



이렇게 조건을 걸어서 백업이 가능합니다.


테이블 마다 조건이 다르면 테이블 마다 조건을 걸어야 하지만,


테이블 마다 항상 공통적인 컬럼이 있다면 편하게 조건 백업을 받으면 됩니다.


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

윈도우에서 리눅스 에뮬레이터 Cygwin



예전에 VirtualBox 나 VMWare 같은 가상머신 기반에서 리눅스를 설치하지 않고도,


윈도우에서 간단히 리눅스 gcc 컴파일 같은 것을 할 때 사용했던 시그윈입니다.



윈도우에서 리눅스 에뮬레이터 Cygwin윈도우에서 리눅스 에뮬레이터 Cygwin


설치는 간단합니다.


윈도우에서 리눅스 에뮬레이터 Cygwin윈도우에서 리눅스 에뮬레이터 Cygwin


적당한 다운로드 사이트를 선택하고 다음 버튼 클릭



윈도우에서 리눅스 에뮬레이터 Cygwin윈도우에서 리눅스 에뮬레이터 Cygwin


여기에서 필요한 패키지를 검색해서 설치항목에 포함시키고 다음으로 넘어갑니다.



윈도우에서 리눅스 에뮬레이터 Cygwin윈도우에서 리눅스 에뮬레이터 Cygwin


설치가 완료되고 Cygwin 에뮬레이터를 실행한 화면입니다.


요즘은 가상 VPS 가 흔해서 시그윈 사용자가 많지는 않겠지만 예전 구형 PC 에서는 아주 유용한 도구로 사용되었습니다.



블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

윈도우 APM 패키지 XAMPP 설치하기



리눅스 서버 대용으로 윈도우 환경에서 개발용 테스트 서버로 APM 패키지가 많이 사용됩니다.


APMSETUP, AUTOSET, XAMPP 등 여러가지가 있습니다.


AutoSet9 과 속도를 비교해보니 XAMPP 가 많이 빠르네요.


Apache 는 차이를 못 느끼겠지만 MySQL 는 엄청나게 차이가 납니다.


그래도 리눅스 환경 보다는 조금 느린 것 같습니다.



이제 XAMPP TOOL 설치 및 초기 설정에 대해서 알아보겠습니다.



https://www.apachefriends.org/index.html 사이트에서 다운로드를 받을 수 있습니다.


윈도우 APM 패키지 XAMPP 설치하기윈도우 APM 패키지 XAMPP 설치하기


Apache + MariaDB + PHP + Perl 의 약자였네요~


XAMPP for Windows 를 다운로드 받습니다.



윈도우 APM 패키지 XAMPP 설치하기윈도우 APM 패키지 XAMPP 설치하기


FileZilla, Tomcat, Webalizer 가 포함되어 있네요~


필요한 항목을 선택하고 Next 버튼을 클릭합니다.



윈도우 APM 패키지 XAMPP 설치하기윈도우 APM 패키지 XAMPP 설치하기


컨트롤패널입니다.


한 눈에 보기 좋게 구성되어 있네요~



xampp 도 리눅스에서 apm 을 설치했을 때와 동일하게 환경설정 작업을 해주어야 합니다.



▶ 루트 디렉토리 변경 ( httpd.conf 수정 )


DocumentRoot "C:/xampp/htdocs"

루트 디렉토리를 변경하고 싶다면 위 부분을 찾아서 수정하면 됩니다.



▶ mime 타입 추가 ( httpd.conf 수정 )


AddType application/x-httpd-php .htm .html .php .php3 .php4 .inc

<IfModule mime_module> 부분을 찾아서 추가하여 주면 됩니다.



▶ php.ini 수정


;short_open_tag=Off

short_open_tag=On

;error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT

error_reporting=E_ALL & ~E_NOTICE & ~E_WARNING



▶ my.ini 수정


character_set_server=utf8

utf8 을 사용한다면 위 부분을 찾아서 주석을 풀어줍니다.



나머지 설정들은 자신의 환경에 맞게 설정해 주면 됩니다.


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

윈도우 파일복구 유틸리티 Recuva



파일을 지웠을때 파일을 복구해주는 유틸중에 하나인 Recuva 입니다.


다운로드은 https://recuva.en.softonic.com/download 여기에서 받으면 됩니다.


윈도우 파일복구 유틸리티 Recuva윈도우 파일복구 유틸리티 Recuva


설치를 합니다.



윈도우 파일복구 유틸리티 Recuva윈도우 파일복구 유틸리티 Recuva


원하는 옵션을 선택하고 Next 버튼을 누르면 됩니다.



윈도우 파일복구 유틸리티 Recuva윈도우 파일복구 유틸리티 Recuva


파일을 지운 드라이브를 지정하고 Next 버튼을 클릭합니다.



윈도우 파일복구 유틸리티 Recuva윈도우 파일복구 유틸리티 Recuva


Start 버튼을 클릭합니다.




지워진 파일이 엄청나게 많네요~


우측 상단에 Switch to advanced mode 를 클릭하면 아래화면 처럼 폴더를 지정해서 찾을 수도 있습니다.




복구하고자 하는 파일을 선택하고 우측 하단에 Recover 버튼을 눌러서 복구를 진행하면 됩니다.


파일 삭제 후 다른 파일이 덥어쓰기 전에 복구를 하면 복구 확률이 높지만, 다른 파일이 덥어씌워지게 되면 복구의 확률을 낮아집니다.


행운을 빌어봅니다~



블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

HTML QRCODE 생성하기



구글 API 를 이용한 HTML 과 자바스크립트로 QR코드를 생성하는 코드입니다.


URL 을 입력하고 생성버튼을 누르면 됩니다.


<head>

<script>

function action_qrcode() {

qr_img.src = document.all.qr_base.value + document.all.qr_add.value;

}

</script>

</head>


<br>

<div align="center">

<input name="qr_base" type="hidden" value="http://chart.apis.google.com/chart?cht=qr&chs=100x100&choe=UTF-8&chld=H|0&chl=" />

URL : <input name="qr_add" type="text" style="width:400px;" value="https://ivps.tistory.com/200" />

<input type="button" value="생성" onclick="action_qrcode()" />

<br/>

<br/>

<br/>

<img name="qr_img" src="" />

</div>

<br>


코드 복사해서 테스트 하시면 됩니다.


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

AutoSet phpMyAdmin 세션시간



세션이 너무 자주 끊어서 은근 열받네요~ ㅎ


아무래도 세션시간을 늘여야 할 것 같습니다.



AutoSet9/solution/phpMyAdmin/config.inc.php 파일을 열어서 $cfg['Servers'][$i]['auth_type'] = 'cookie' 부분을 수정


$cfg['Servers'][$i]['auth_type'] = 'http';



이제 아파치를 재시작하면 됩니다.



'IT이야기' 카테고리의 다른 글

윈도우 파일복구 유틸리티 Recuva  (0) 2017.03.06
HTML QRCODE 생성하기  (0) 2017.03.02
윈도우 오토셋 Notice Undefined index  (0) 2017.02.24
PHP Deprecated mysql_connect()  (0) 2017.02.24
MySQL now() 와 sysdate() 차이점  (0) 2017.02.22
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

윈도우 오토셋 Notice Undefined index



세션이나 문법 오류 관련해서 오류가 너무 많이 뜰때는 오토셋의 PHP 기본 설정을 변경해 주시면 됩니다.


Notice: A session had already been started - ignoring session_start() in F:\AutoSet9\public_html\index.html on line 7


Notice: Undefined index: IS_LOGIN in F:\AutoSet9\public_html\index.html on line 23


디폴트 값이 E_ALL ^ E_STRICT 으로 된 것을 E_ALL & ~(E_NOTICE | E_WARNING) 으로 바꿔주시면 됩니다.


아니면 PHP 에서


error_reporting(E_ALL & ~(E_NOTICE | E_WARNING));


php 시작 줄에 넣어서 실행하여도 됩니다.


윈도우 오토셋 Notice Undefined index윈도우 오토셋 Notice Undefined index


오류 표시 범위에 E_ALL & ~(E_NOTICE | E_WARNING) 을 입력


변경사항 적용을 누른 후 아파치를 재시작 하면 됩니다.


'IT이야기' 카테고리의 다른 글

HTML QRCODE 생성하기  (0) 2017.03.02
AutoSet phpMyAdmin 세션시간  (0) 2017.02.27
PHP Deprecated mysql_connect()  (0) 2017.02.24
MySQL now() 와 sysdate() 차이점  (0) 2017.02.22
안드로이드 Eclipse No DEX file found  (0) 2017.02.21
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

PHP Deprecated mysql_connect()



윈도우 autoset apm 환경에서 아래와 같은 에러가 발생하는군요~


개인 개발용 서버로 오토셋이 괜찮기는 한데 리눅스 환경과는 또 다르네요~


Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in 


이런 경우엔 mysql_connect 함수 호출시 @mysql_connect 로 하시면 됩니다.


$connect = @mysql_connect ($db_addr, $db_user, $db_pass);



블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,