[과제] 4. MySQL / Redis 자동설치 스크립트 생성

Jaehyeon Yoo·2022년 1월 14일

What? 무엇을 진행하나요?

NHN Cloud 환경에서 자동으로 MySQL과 Redis를 설치하기 위한 쉘 스크립트를 제작합니다.

Why? 쉘 스크립트를 이용하나요?

반복되는 작업을 자동화하기 위해서 이용합니다. 스케줄링을 통해 파일만 실행할 수 있고 스크립트의 내용을 이해하지 못해도, 누구나 실행할 수 있습니다.

여기서 잠깐! 쉘 스크립트란?

쉘 커맨드가 들어 있는 실행 가능한 텍스트 파일입니다. 순차적으로 실행되며, 프로그래밍에서 사용되는 컴포넌트들을 사용할 수 있습니다.

How? 제 코드를 참조하시면 됩니다.

NHN Cloud 인스턴스를 생성 및 접근은 다음 링크를 참조합니다.

[과제] 3. NHN Cloud에서 DB 설치

1. MySQL 자동설치 스크립트 생성

  1. NHN Cloud 생성 시, 예약 스크립트를 다음과 같이 설정합니다.
#!/bin/bash
sudo yum remove -y mariadb-libs.x86_64
# NHN Cloud 인스턴스에 설치되어 있는 MariaDB를 제거합니다.
sudo yum install libaio -y
# libaio를 설치합니다.
mkdir home
cd /home 
version=8.0.27
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-$version-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-$version-linux-glibc2.12-x86_64.tar.xz
sudo mv mysql-$version-linux-glibc2.12-x86_64/ mysql
cd mysql
sudo chown -R centos:centos /home/mysql
touch my.cnf
echo "
[client]       
port=3306
socket=/home/mysql/tmp/mysql.sock        
[mysqld]        
socket=/home/mysql/tmp/mysql.sock        
basedir=/home/mysql        
datadir=/home/mysql/data        
user=centos        
key_buffer_size=64M        
max_allowed_packet=32M        
#query_cache_size=32M        
max_connections=2625        
max_connect_errors=2000000        
wait_timeout=60        
explicit_defaults_for_timestamp = 1        
#pid-file=/home/mysql/mysqld.pid        
log-error=/home/mysql/logs/mysqld.log        
bulk_insert_buffer_size=0" > my.cnf        
mkdir data        
mkdir logs        
mkdir tmp        
cd /home/mysql/support-files        
sed -i '1,50s|'datadir='|'datadir=/home/mysql/data'|g' mysql.server        
sed -i '1,50s|'basedir='|'basedir=/home/mysql'|g' mysql.server
# support-files의 datadir와 basedir를 수정합니다.
cd ../
sudo chown -R centos:centos /home/mysql
# mysql의 소유자를 centos로 변경합니다.
/home/mysql/bin/mysqld --defaults-file=/home/mysql/my.cnf --initialize-insecure
/home/mysql/support-files/mysql.server start
  1. NHN Cloud 인스턴스에 접속하여, 설치가 올바르게 진행됐는지 확인합니다.

  2. /home/mysql/bin/mysql -uroot -S /home/mysql/tmp/mysql.sock
    명령어로 MySQL에 접속합니다.


    cf. 임시 비밀번호를 이용하여 MySQL을 초기화 하고 싶다면,
    /home/mysql/bin/mysqld --defaults-file=/home/mysql/my.cnf --initialize-insecure 부분을 수정합니다.

    /home/mysql/bin/mysqld --defaults-file=/home/mysql/my.cnf --initialize

    string=$(sudo grep 'temporary password' /home/mysql/logs/mysqld.log | rev | cut -d " " -f1 | rev)

    string="$(echo -e "${string}" | sed -e 's/^[[:space:]]*//')"

    echo "${string}"


    최종 명령은 다음 코드를 사용합니다.

    /home/centos/mysql/bin/mysql -uroot -p'패스워드 입력' -S/home/centos/mysql/mysql.sock

2. Redis 자동설치 스크립트 생성

  1. NHN Cloud 생성 시, 예약 스크립트를 다음과 같이 설정합니다.
#!/bin/bash
mkdir home
cd /home
version=6.2.3
sudo yum install gcc -y
alias redis-cli='./redis-cli'
#redis-cli 명령어로 redis에 접속하기 위한 alias입니다.
wget http://download.redis.io/releases/redis-${version}.tar.gz 
tar -xvf redis-${version}.tar.gz 
cd redis-${version}       
cd deps        
sudo make hiredis jemalloc linenoise lua       
cd ../       
sudo make install      
cd src      
./redis-server
  1. NHN Cloud 인스턴스에 접속하여, 설치가 올바르게 진행됐는지 확인합니다.


  2. 미리 alias 해 놓은 redis-cli 명령어로 redis에 접근합니다.

0개의 댓글