기존 800G 디스크를 사용하고 있는 DB 서버에서

DB를 백업해야하는 상황이다.


xtrabackup을 사용하려는데

남아있는 디스크가 얼마 되지 않아서

백업을 위한 텅빈 디스크가 필요하다.


http://sfixer.tistory.com/entry/%EB%94%94%EC%8A%A4%ED%81%AC-%EB%B3%BC%EB%A5%A8-%EC%82%AC%EC%9D%B4%EC%A6%88-%EC%A6%9D%EA%B0%80%EC%8B%9C%ED%82%A4%EA%B8%B0

이전에 작성했던 나의 포스트를 참고해서 시작했다.


마우스로 EC2로 가서

Elastic Bloack Store의 Volume을 클릭하고

클릭클릭... 500G 만들거니까 클릭클릭..

원하는 인스턴스에 Attach까지 


음.. 간단하군

이제 실제로 붙여 볼까.

아, 역시 그냥 하면 당연히 안되지 😭


[ec2-user@ip-sfixer ~]$ lsblk                                                  

NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT                                    

xvda    202:0    0  800G  0 disk                                               

└─xvda1 202:1    0  800G  0 part /                                             

xvdf    202:80   0  500G  0 disk                                               

[ec2-user@ip-sfixer ~]$ sudo mount /dev/xvdf /Storage                          

mount: mount point /Storage does not exist                                     

                                               

 

왠지 마운트 하기전에 디스크 타입을 맞춰야 할듯하다.


https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ebs-using-volumes.html

 

참고해보니 있다. 아래의 순서로 명령을 수행한다.


 

[ec2-user@ip-sfixer ~]$ lsblk                                                     

NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT                                       

xvda    202:0    0  800G  0 disk                                                  

└─xvda1 202:1    0  800G  0 part /                                                

xvdf    202:80   0  500G  0 disk                                                  

                                                                               

[ec2-user@ip-sfixer ~]$ sudo file -s /dev/xvdf                                    

/dev/xvdf: data                                                                   

[ec2-user@ip-sfixer ~]$ sudo file -s /dev/xvda1                                   

/dev/xvda1: Linux rev 1.0 ext4 filesystem data, UUID=fa5b665e-c3ee-4596-ac88-ae39494c7bf2 (needs journal recovery) (extents) (large files) (huge files)

                                                                               

[ec2-user@ip-sfixer ~]$ sudo mkfs -t ext4 /dev/xvdf                               

mke2fs 1.42.12 (29-Aug-2014)                                                      

Creating filesystem with 131072000 4k blocks and 32768000 inodes                  

Filesystem UUID: c73a1534-0bd3-4c52-9ec5-25b6f0d3945e                             

Superblock backups stored on blocks:                                              

        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,       

        102400000                                                                 

                                                                                  

Allocating group tables: done                                                     

Writing inode tables: done                                                        

Creating journal (32768 blocks): done                                             

Writing superblocks and filesystem accounting information: done                   

                                                                                  

[ec2-user@ip-sfixer ~]$ sudo file -s /dev/xvdf                                    

/dev/xvdf: Linux rev 1.0 ext4 filesystem data, UUID=c73a1534-0bd3-4c52-9ec5-25b6f0d3945e (extents) (large files) (huge files)

                                                                               

[ec2-user@ip-sfixer ~]$ sudo mkdir /Storage                                       

[ec2-user@ip-sfixer ~]$ sudo mount /dev/xvdf /Storage/                         

[ec2-user@ip-sfixer ~]$ cd /Storage/                                           

[ec2-user@ip-sfixer Storage]$ ll



제대로 되었다. 완료


반응형

'Infra' 카테고리의 다른 글

EC2 instance prevent termination (KR)  (309) 2019.07.26
EC2 instance Change Source Dest Check 옵션  (161) 2019.06.28
Cloudwatch와 grafana 연동하기  (10) 2018.08.10
EC2의 user data 기능 사용하기  (10) 2018.08.08
디스크 볼륨 사이즈 증가시키기  (10) 2018.06.22

Grafana와 Zabbix를 연동해서

사설 클라우드의 서버를 모니터링하는데 쓰고 있었는데

AWS에서 사용중인 Elasticache, SQS, RDS도 함께 사용하고 있으니

이를 통합해서 보고 싶은 욕구가 생겼다.


역시나 이미 누군가 구현해놨다..😨

심지어 grafana를 설치할때 같이 설치 되어있어서 추가 설치도 필요가 없다.
그럼 그걸 연동하기 위한 세팅 방법에 대해서 여기에 기록해둬야겠다.


문서에 간단하게 나와있다.
http://docs.grafana.org/features/datasources/cloudwatch/#metric-query-editor




Data Sources를 클릭



+Add data srouce 클릭



Type에서 Cloudwatch 선택



AWS의 IAM 인증받고 발급했던 개인 액세스, 시큐릿 키가 있을텐데

(이건 awscli 사용하거나 python boto3를 쓰건 어쨌건 일반적으로 가지고 있으니 패스)


아래처럼 직접 키값을 넣어도 되고


물론 키값을 넣고 나면 일단은 아래처럼 안 보이게 해준다.

센스있는 grafana..



여튼 아래와 같이 설정해주고 Save & Test로 저장한다.




참고로 Default를 체크하고 안하고는 다음에 직접 사용할때와 연관있다.

그럼 이제 진짜 추가해보자.


그래프를 선택하고




Edit 화면에서 Metrics에 가서 저기 default 부분을 눌러준다.

일단 현재 사용하는 곳은 zabbix가 기본이라서 위의 설정에서 Default에 'v' 체크가 없는데

CloudWatch를 주로 사용하면 default로 체크하면 될듯 하다.




대략 아래처럼 해주면 그래프에 모아서 볼 수 있다. (일부 정보는 모자이크 처리)

물론 아래의 그래프는 CloudWatch에 가면 똑같이 볼 수 있다.

참고로 Dimensions를 세팅해줘야 원하는 아이템에 대해서 볼 수 있다.



나머지는 그래프 보기 설정만 만져주면 끝.

생각보다 매우 간단하다.

반응형

'Infra' 카테고리의 다른 글

EC2 instance prevent termination (KR)  (309) 2019.07.26
EC2 instance Change Source Dest Check 옵션  (161) 2019.06.28
[EC2] EBS 볼륨 추가하기  (8) 2018.08.16
EC2의 user data 기능 사용하기  (10) 2018.08.08
디스크 볼륨 사이즈 증가시키기  (10) 2018.06.22

아,, ssh 키를 뭔가 건드린거 같다. 

접속이 아예 안되서 뭐 어떻게 할 방법이 없다. 😭


디스크를 볼륨을 떼서 다른 EC2 인스턴스에 붙여서 처리하는 수밖에 없지.

근데 뒤져보니 User Data기능이 있다.

부팅할 때 내가 원하는 명령을 실행시켜준다.




헛!

그렇다면 이걸로 하면 구지 디스크 볼륨 떼었다 붙였다 안해도 되겠군!

User Data에만 내가 원하는 명령어를 세팅하고

EC2 인스턴스를 껐다 켜기만 하면 해결 되겠군


시작 시 Linux 인스턴스에서 명령 실행

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/user-data.html

이거 적으면서 보니 저거 제목 번역이 잘 못 번역되어있다...

(원문: Running Commands on Your Linux Instance at Launch)

아놔 내 삽질한 아까운 시간들...



아무리 해도 안된다.

#cloud-init으로 하거나 #!/bin/bash

안된다. 😭

 

씩씩 거리면 찾아봤다.

https://stackoverflow.com/questions/27086639/user-data-scripts-is-not-running-on-my-custom-ami-but-working-in-standard-amazo

 

.. 저방식은

말그대로 인스턴스 생성하고 정말 처음 기동할 쓰는거다.

 

행히 훜으로 건드리는 방법이 있다.

아래와 같이 하니까 잘된다.


#cloud-boothook 을 가장 위에 적어주니까 된다.


최초 부팅

 

#!/bin/bash

yum install -y gcc

 

 

이후 재부팅

#cloud-boothook

#!/bin/bash

yum install -y patch;

yum install -y zlib;

yum install -y zlib-devel;

yum -y install openssl-devel;

wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.6p1.tar.gz -P /home/ec2-user;

 

이후 재부팅

#cloud-boothook

#!/bin/bash

gunzip /home/ec2-user/openssh-7.6p1.tar.gz

 


아놔.. 어이없는 문제가 하나 더있다.


tar 명령어가 안 먹힌다.

옵션이 문제인가 싶지만 다 안된다. 😭😭


 

#cloud-boothook

#!/bin/bash

/usr/bin/tar -xf /home/ec2-user/openssh-7.6p1.tar

/usr/bin/tar xf /home/ec2-user/openssh-7.6p1.tar

/usr/bin/tar xopf /home/ec2-user/openssh-7.6p1.tar

 

 


어처구니 없게도 tar 명령 실행하기 전에

change directory 해주면 먹힌다.


#cloud-boothook
#!/bin/bash
cd /home/ec2-user
/bin/tar xf /home/ec2-user/nginx-1.12.2.tar

 




반응형

'Infra' 카테고리의 다른 글

EC2 instance prevent termination (KR)  (309) 2019.07.26
EC2 instance Change Source Dest Check 옵션  (161) 2019.06.28
[EC2] EBS 볼륨 추가하기  (8) 2018.08.16
Cloudwatch와 grafana 연동하기  (10) 2018.08.10
디스크 볼륨 사이즈 증가시키기  (10) 2018.06.22

사내 JIRA, WIKI 관리하는 서버의 디스크가 꽉차 간다.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      296G  263G   33G  89% /
devtmpfs        3.7G   56K  3.7G   1% /dev

tmpfs 3.7G 0 3.7G 0% /dev/shm




뒤져보니 작년부터 binary log가 쌓여왔다.

$ ls -al /var/lib/mysql/
... 중략 ...
-rw-rw---- 1 mysql mysql 1073772329 Jan  8  2017 mysql-bin.000179
-rw-rw---- 1 mysql mysql 1073766072 Jan 12  2017 mysql-bin.000180
-rw-rw---- 1 mysql mysql 1073750174 Jan 16  2017 mysql-bin.000181
-rw-rw---- 1 mysql mysql 1073750131 Jan 19  2017 mysql-bin.000182
-rw-rw---- 1 mysql mysql 1073778740 Jan 23  2017 mysql-bin.000183
-rw-rw---- 1 mysql mysql 1073785719 Jan 26  2017 mysql-bin.000184
-rw-rw---- 1 mysql mysql 1073742779 Jan 30  2017 mysql-bin.000185
-rw-rw---- 1 mysql mysql 1073754445 Feb  2  2017 mysql-bin.000186
-rw-rw---- 1 mysql mysql 1073779324 Feb  8  2017 mysql-bin.000187
-rw-rw---- 1 mysql mysql 1073757781 Feb 11  2017 mysql-bin.000188
-rw-rw---- 1 mysql mysql 1073764278 Feb 15  2017 mysql-bin.000189
-rw-rw---- 1 mysql mysql 1073742518 Feb 18  2017 mysql-bin.000190
... 중략 ...

 



삭제해야지라고 생각했지만 이런 파일은 생각없이 rm으로 지우면 안되지

뒤져보니 설정 1줄 추가하면 된다. 

저렇게 하면 3일치만 남겨놓고 나머지는 다 지운다.

/etc/my.cnf


[mysqld]

... 중략 ...

 

expire_logs_days=3



이게 서비스 중인데

2017년부터 안 건드렸다면 함부로 mysql 데몬을 restart할 수가 없다.

이 회사에 온지 몇달 안되서 그간 바뀐 설정이 뭐인지도 모르고, 

stop은 되겠지만 start 가 안되면... 괜히 여러사람 피곤해진다.


쫄아서 찾아보니 reload가 있다.

nginx reload하듯이 설정을 다 읽어와주는 것인가!! (결론은 아니었다. 😭)

% cat /etc/init.d/mysqld
 
... 중략 ...
  reload)
    exit 3
    ;;

 


exit 3이니까 SIGQUIT일테고 mysqld에서 지정한 시그널 핸들러에 의해 동작.

찾아보니 table의 grant를 reload 한다. 😭

https://dev.mysql.com/doc/refman/5.5/en/mysqladmin.html
 
reload
Reload the grant tables.

 



결국 SET GLOBAL을 이용해서 세팅을 바꿔주었다. 


mysql> SET GLOBAL expire_logs_days = 3;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show global variables like 'expire_logs_days';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 3     |
+------------------+-------+
1 row in set (0.00 sec)

 



세팅 바꿔주고 1시간 정도 있다가

df로 줄어들었나 확인해보았다. 

안 줄었다. 😭

언제 줄어드는지 검색해도 안나온다. 

(프로세스 내부에서 뭔가 특정 시간에 주기적으로 돌면서 처리할듯한데.. )

아직 디스크 full 되려면 2~3주 남았으니 일단 퇴근하자.


다음날 출근해서 df로 확인해보니 지워졌다.

$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/xvda1     309503980 94337032 215066700  31% /
devtmpfs         3822500       56   3822444   1% /dev
tmpfs            3831692        0   3831692   0% /dev/shm


 



물론 정말 급한 경우였다면 PURGE를 이용해서 바로 지워버릴 수도 있다.


https://dev.mysql.com/doc/refman/8.0/en/purge-binary-logs.html


PURGE BINARY LOGS TO 'mysql-bin.010'; 

PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26'; 



반응형

+ Recent posts