Contact

ssh 멀티 tail / -f 옵션

ssh 를 사용하여 remote 인스턴스에 접근이 가능하다.

혹은 해당 인스턴스에 커맨드를 전송하는것도 가능하다.

tail에 경우 연결이 지속되어야 볼수있는데 1개에 remote는 쉽게 가능하지만 여러개에 remote일 경우 불가능하다.

이를 해결하기 위한 방법이 여러개있는데

기본적으로 & 를 사용하여

ssh admin@172.0.0.1 "tail -F xx.log" & ssh admin@172.0.0.2 "tail -F xx.log"

같은 식으로 사용이 가능하다.

하지만 해당 방식은 세션을 종료하거나 ctrl+c를 누르게되면 사용을 할수가 없다.

이때 -f 커맨드를 사용할수있다.

-f 커맨드는 인증이 설정되어있는 ssh를 백그라운드에서 돌려주는 역할을 한다.

이를 이용해서

 ssh -f admin@172.0.0.1 "tail -F xx.log" >> tail.log & ssh -f admin@172.0.0.2 "tail -F xx.log" >> tail.log

식으로 사용하면 현재 인스턴스에서 tail.log로 언제든지 확인가능하다.

Mysql Error 1236

Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’

마스터에 포지션을 잃어버려서 발생하는 이슈이다.

stop slave 이후에

CHANGE MASTER TO MASTER_HOST=’172.20.102.18′, MASTER_USER=’name’, MASTER_PASSWORD=’password’, master_log_file=’binlog.000001′, master_log_pos=1;

해주면 된다.

AWS LB (CLB, ALB, NLB)

ALB 에서는 클라이언트가 바로 서버연결하지 않고 LB에서 헤더를 변경시켜서 서버에 전달

NLB 에서는 DSR(direct server return) 으로 서버랑 직접연결한다.

NLB가 더 빠른처리 (초당 수백만건) 가능

NLB에서는 LB자체에 보안옵션이 없고 ALB에는 자체 보안그룹지정 가능

Mysql Replication (복제)

1. 서버 정보

IP : 172.20.102.111 (master), 172.20.102.112 (slave)
db : test_db
user : test
pw : test1

2. MASTER 설정

1) DB생성 / 계정생성 / 권한 부여

2) my.cnf
vi /etc/mysql/my.cnf
[mysqld]
log-bin=mysql-bin (바이너리 로그파일 생성경로, log-bin만 기입시 default)
server-id = 1

3) mysql 재시작

3. Master 정보 보기

mysql> show master status; 
 +------------------+----------+--------------+------------------+ 
 | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
 +------------------+----------+--------------+------------------+
 | mysql-bin.000010 |     1    |              |                  | 
 +------------------+----------+--------------+------------------+ 

4. Slave 설정

1) my.cnf
vi /etc/mysql/my.cnf
[mysqld]
server-id=2
replicate-do-db='test_db'

2) database dump
복제할 데이터베이스 master로부터 dump
mysqldump --login-path=test test_db > test.sql (master에서)
mysql --login-path=test < test.sql (slave에서)

3) master 연결
mysql> change master to
 master_host='172.20.102.111',
 master_user='test',
 master_password='test1',
 master_log_file='mysql-bin.000010',
 master_log_pos=1;

4) 재시작

5. 확인

mysql > show processlist \G; (mastser, slave)

mysql > show slave status;

6. UUID 에러
– Slave에서 show slave status; 명령어 입력시 아래와 같은 에러 출력

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
  • slave에서 auto.cnf를 삭제해주면 된다
systemctl stop mysql
rm -rf /var/lib/mysql/auto.cnf
systemctl start mysql