์ด์ ๊ธ์์ ์ด์ด์ง๋๋ค
์ธ์คํด์ค ์ฌ์
Server | Spec | OS | Volume | Public IP | Application | Version |
Bastion | t2.micro | Amazon Linux | 8 GB | O | X | X |
WEB01 | t2.small | Amazon Linux | 20 GB | X | Apache | 2.4.X |
WEB02 | t2.small | Amazon Linux | 20 GB | X | Apache | 2.4.X |
WAS01 | t2.small | Amazon Linux | 30 GB | X | Tomcat | 9.0.97 |
WAS02 | t2.small | Amazon Linux | 30 GB | X | Tomcat | 9.0.97 |
DB | t2.medium | Amazon Linux | 30 GB | X | MySQL | 8.X |
12. DB
12-1 ๋ณด์๊ทธ๋ฃน ์์ฑ
DB ์ ์ฉ ๋ณด์๊ทธ๋ฃน์ ์์ฑํ๋ค
์ธ๋ฐ์ด๋๋ WAS ์๋ฒ์ 3306๋ฒ ํฌํธ์ Bastion ์๋ฒ์ 22๋ฒ ํฌํธ๋ฅผ ํ์ฉํ๋ค
์์๋ฐ์ด๋ ๋ชจ๋ ๋์๊ณผ ํธ๋ํฝ์ ์ด์ด๋ ์ด์ ๋ DB๋ฅผ ์ค์นํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ค์น๊ณผ์ ํ ์ญ์ ํ ์์ ์ด๋ค
Bastion ๋ณด์๊ทธ๋ฃน ์์๋ฐ์ด๋๋ก DB ๋ณด์๊ทธ๋ฃน์ 22๋ฒ ํฌํธ๋ฅผ ํ์ฉํ๋ค
WAS ๋ณด์๊ทธ๋ฃน ์์๋ฐ์ด๋๋ก DB ๋ณด์๊ทธ๋ฃน์ 3306๋ฒ ํฌํธ๋ฅผ ํ์ฉํ๋ค
12-2 ์ธ์คํด์ค ์์ฑ
์ฌ์ํ์ ๋ง๊ฒ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ค
13. MySQL
13-1 MySQL ์์ค ์ค์น
- root ์ง์
# sudo su -
- ๊ทธ๋ฃน๊ณผ ์ฌ์ฉ์ ์์ฑ
# groupadd mysql
# useradd -g mysql -s /bin/bash -m mysql
- ํ์ ํจํค์ง ์ค์น
# yum install -y --allowerasing gcc gcc-c++ openssl curl autoconf ncurses-devel bison zlib curl bzip2-devel rpcgen libtirpc libtirpc-devel cmake
allowerasing : ์ข ์์ฑ ํด๊ฒฐ์ ์ํด ๊ธฐ์กด ์ค์น๋ ํจํค์ง๋ฅผ ์ญ์ ํ๊ณ ์ข ์์ฑ์ด ํด๊ฒฐ๋ ํจํค์ง๋ฅผ ์ค์นํ๋ ์ต์
- mysql ์์คํ์ผ ๋ค์ด๋ก๋
# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.23.tar.gz
- ์์ถํ์ผ ํด์ ํ ๋๋ ํฐ๋ฆฌ ์ด๋
# tar xvf mysql-boost-5.7.23.tar.gz
# cd mysql-5.7.23
- cmake์ ์ฌ์ฉํ์ฌ MAKEFILE ์์ฑ
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 -DMYSQL_DATADIR=/usr/local/mysql57/data -DMYSQL_UNIX_ADDR=/usr/local/mysql57/mysql.sock -DSYSCONFDIR=/usr/local/mysql57 -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DDOWNLOAD_BOOST=0 -DWITH_BOOST=./boost
- ์์์ ์์ฑํ MAKEFILE ํ์ผ์ ์ฐธ์กฐํ์ฌ ๋น๋(์ปดํ์ผ) & ๋น๋๋ ์คํ ํ์ผ์ ์์คํ
๊ฒฝ๋ก์ ์ค์น
# make && make install
13-2 MySQL ์ค์
- my.cnf ์์ฑ
# sudo vi /usr/local/mysql57/my.cnf
[mysqld]
port=3306
# basedir=/usr/local/mysql57
# datadir=/usr/local/mysql57/data
# pid-file=/usr/local/mysql57/mysqld.pid
# log_error=/usr/local/mysql57/mysql_error.log
# lc-messages-dir=/usr/local/mysql57/share
init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
character-set-server=utf8
collation-server=utf8_general_ci
# table_cache=1024
max_connections=2048
max_user_connections=500
max_connect_errors=10000
wait_timeout=300
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 5M
slow_query_log
long_query_time=3
max_allowed_packet=16M
sort_buffer_size = 2M
# skip-innodb
skip-name-resolve
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
my.cnf ํ์ผ์ ์์ฑํ๊ณ ๋ด์ฉ์ ์ถ๊ฐํ๋ค
my.cnf ํ์ผ์ MySQL ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ค์ ์ ์ ์ฅํ๋ ๊ตฌ์ฑ ํ์ผ์ด๋ค
MySQL์ ์ด ํ์ผ์ ์ฝ์ด์ ์๋ฒ ๋ฐ ํด๋ผ์ด์ธํธ์ ๋์ ๋ฐฉ์์ ์ ์ดํ๋ค
- ์์ ์์ ๊ทธ๋ฃน์ ๋ณ๊ฒฝ
# chown -R mysql:mysql /usr/local/mysql57
/usr/local/mysql57 ๋๋ ํฐ๋ฆฌ์ ๊ทธ ํ์์ ์๋ ๋ชจ๋ ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ์ ์์ ์์ ๊ทธ๋ฃน์ mysql๋ก ๋ณ๊ฒฝํ๋ค
- ๋๋ ํฐ๋ฆฌ ์ด๋
# cd /usr/local/mysql57
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์นํ์ฌ ์ด๊ธฐํ
# bin/mysql_install_db --no-defaults --user=mysql --datadir=/usr/local/mysql57/data --basedir=/usr/local/mysql57 -v
/usr/local/mysql57์ ์ค์น๋ MySQL ์๋ฒ์ ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ(/usr/local/mysql57/data)๋ฅผ ์ด๊ธฐํํ๋ค
- ํ๊ฒฝ๋ณ์ ์ถ๊ฐ
# vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql57/bin
export PATH
MySQL ๋ช ๋ น์ด๋ฅผ ์ด๋์๋ ์คํํ๊ธฐ ์ํ ์์ ์ด๋ค
13-3 MySQL ์๋น์ค ๋ฑ๋ก ๋ฐ ์คํ
- ํ์ผ ๋ณต์ฌ
# cp /usr/local/mysql57/support-files/mysql.server /etc/init.d/mysqld57
- ์๋น์ค ํ์ผ ์์
# sudo vi /etc/init.d/mysqld57
basedir=/usr/local/mysql57
datadir=/usr/local/mysql57/data
์๋น์ค ํ์ผ์์ MySql ์ค์น ๋๋ ํ ๋ฆฌ์ ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ค์ ํ๋ค
- ์๋น์คํ์ผ ๋ฑ๋ก
# chkconfig --add mysqld57
# chmod +x /etc/init.d/mysqld57
# chkconfig --level 345 mysqld57 on
chkconfig๋ ์์คํ ๋ถํ ์ mysqld57 ์๋น์ค๋ฅผ ์๋์ผ๋ก ์์ํ๋๋ก ๋ฑ๋กํ๋ ๋ช ๋ น์ด์ด๋ค
์๋น์คํ์ผ์ ์คํ๊ถํ์ ๋ถ์ฌํ๊ณ ๋ฐ๋ ๋ฒจ3/4/5 ๋ถํ ์ ์๋์คํ์ ์ค์ ํ๋ค
# service mysqld57 start
13-4 MySQL ์ ์ ๋ฐ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ
- ์์ ๋น๋ฐ๋ฒํธ ํ์ธ
# cat /root/.mysql_secret
Password set for user 'root@localhost' at 2024-11-25 11:45:20
(oAq6jyW-qAc
MySql 5.7 ๋ถํฐ๋ root ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ๊ธํด์ค๋ค
- ์์ ๋น๋ฐ๋ฒํธ๋ก root ์ ์
# bin/mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.23-log
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
- ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ
# ALTER USER 'root'@'localhost' IDENTIFIED BY 'P@ssw0rd';
- ๋ณ๊ฒฝ์ฌํญ ์ ์ฉ
# flush privileges;
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ธ
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
- ํฌํธ๋ฒํธ ํ์ธ
mysql> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
1 row in set (0.00 sec)
- ์ ์ ์์ฑ
mysql> CREATE USER tomcatuser@10.0.118.76 identified by 'P@ssw0rd';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE USER tomcatuser@10.0.118.85 identified by 'P@ssw0rd';
Query OK, 0 rows affected (0.00 sec)
- ์์ฑํ ์ ์ ์ ๋ํ์ฌ SELECT ๊ถํ ๋ถ์ฌ
mysql> grant select on *.* to tomcatuser@10.0.118.76 identified by 'P@ssw0rd';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant select on *.* to tomcatuser@10.0.118.85 identified by 'P@ssw0rd';
Query OK, 0 rows affected, 1 warning (0.00 sec)
- ๋ณ๊ฒฝ์ฌํญ ์ ์ฉ
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
WAS ์๋ฒ์์ ์ ์ํ tomcat ์ ์ ๊ณ์ ์ ๋ง๋ ๋ค
๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๋ํ์ฌ SELECT ๊ถํ๋ง ๋ถ์ฌํ๋ค
- mysql ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
- user ํ
์ด๋ธ์์ ์์ฑํ ์ ์ ํ์ธ
mysql> select user,host from user;
+---------------+-------------+
| user | host |
+---------------+-------------+
| tomcatuser | 10.0.118.76 |
| tomcatuser | 10.0.118.85 |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-------------+
5 rows in set (0.00 sec)
13-5 MySQL ์๊ฒฉ์ ์ ์ค์
# netstat -ntlp | grep mysqld
tcp6 0 0 :::3306 :::* LISTEN 3407/mysqld
Mysql server 3306ํฌํธ์ ๋ํด ipv6๋ง ์ด๋ ค์๋ ์ํ์ด๋ค
- ์ค์ ํ์ผ ์์
# vi /usr/local/mysql57/my.cnf
..
bind-address = 0.0.0.0
..
- ์๋น์ค ์ฌ์์
# service mysqld57 restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
- ํฌํธ ํ์ธ
# netstat -ntlp | grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4338/mysqld
ipv4 3306ํฌํธ๊ฐ ์ด๋ฆฐ ๊ฒ์ ํ์ธํ๋ค
13-6 MySQL Table ์์ฑ
- mysql ์ ์
# mysql -u root -p
- ์ DB ์์ฑ
mysql> create database TOMCATDB;
- ์์ฑํ DB ์ ํ
mysql> use TOMCATDB;
- TABLE ์์ฑ
mysql> CREATE TABLE TESTTABLE( id Int(11) NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, location VARCHAR(20) NOT NULL, CONSTRAINT TESTTABLE_PK PRIMARY KEY(id) );
TESTTABLE ํ ์ด๋ธ์ id, name, location ์ปฌ๋ผ์ ์์ฑํ๋ค
์ ์ฝ ์กฐ๊ฑด์ ์ด๋ฆ์ TESTTABLE_TK์ด๋ฉฐ, PRIMARY KEY๋ฅผ id ์ปฌ๋ผ์ผ๋ก ์ง์ ํ๋ ์ ์ฝ ์กฐ๊ฑด์ด๋ค
AUTO INCREMENT : ์๋์ผ๋ก ๊ฐ์ด 1์ฉ ์ฆ๊ฐ
NOT NULL : ๊ฐ์ ๋น์๋ ์ ์๋ค
PRIMARY KEY : ํด๋น ์ด์ด ๊ณ ์ ํ ๊ฐ์ ๊ฐ์ง๋ฉฐ, ์ค๋ณต๋ ๊ฐ์ด ํ์ฉ๋์ง ์๋๋ก ๋ณด์ฅํ๋ค
- ์์ฑ๋ ํ
์ด๋ธ ํ์ธ
mysql> desc TESTTABLE;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| location | varchar(20) | NO | | NULL | |
+----------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
- ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ
mysql> insert into TESTTABLE(name,location) values('suah','noryangjin');
mysql> insert into TESTTABLE(name,location) values('dani','yeonsugu');
mysql> insert into TESTTABLE(name,location) values('mungi','sinlim');
- ํ
์ด๋ธ ํ์ธ
mysql> select * from TESTTABLE;
+----+-------+------------+
| id | name | location |
+----+-------+------------+
| 1 | suah | noryangjin |
| 2 | dani | yeonsugu |
| 3 | mungi | sinlim |
+----+-------+------------+
3 rows in set (0.00 sec)
14. WAS-DB
14-1 MySQL Connector ์ค์น
WAS ์๋ฒ์์ MySQL Connector๋ฅผ ๋ค์ดํด์ผ ํ๋ฏ๋ก ์์๋ก ๋ชจ๋ ํธ๋ํฝ์ผ๋ก ๋๊ฐ๋ ๊ท์น์ ์ถ๊ฐํ๋ค
14-2 MySQL Connector ์์ถํ์ผ ์ค์น ๋ฐ ํด์
- root ๊ณ์ ์ ์
$ sudo su -
- ์ค์น ๋ฐ ์์ถํด์
# wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.23.tar.gz
# tar xvfz mysql-connector-java-8.0.23.tar.gz
- jar ํ์ผ ํ์ธ
# cd mysql-connector-java-8.0.23/
# ls
CHANGES INFO_SRC README mysql-connector-java-8.0.23.jar
INFO_BIN LICENSE build.xml src
JAR ( Java Archive ) : ์ฌ๋ฌ ๊ฐ์ ์๋ฐ Class ํ์ผ๊ณผ ๊ด๋ จ ๋ฆฌ์์ค ๋ฑ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ํ์ผ๋ก ๋ชจ์์
์๋ฐ ํ๋ซํผ์ ์์ฉ ์ํํธ์จ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ํ ์ํํธ์จ์ด ํจํค์ง ํ์ผ ํฌ๋งท์ด๋ค
- jar ํ์ผ ๋ณต์ฌ
# cp -a mysql-connector-java-8.0.23.jar /usr/lib/jvm/jre/lib/ext/
# cp -a mysql-connector-java-8.0.23.jar /usr/local/tomcat9.0/lib/
14-3 Tomcat ์ค์
# vi /usr/local/tomcat9.0/conf/context.xml
<Context>
...
<Resource name="jdbc/test"
auth="Container"
type="javax.sql.DataSource"
username="tomcatuser" //MySQL ์ ์ ๊ณ์
password="P@ssw0rd" //MySQL ๊ณ์ ๋น๋ฐ๋ฒํธ
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://10.0.118.104:3306/TOMCATDB" //MySQL ์๋ฒ์ฃผ์์ DB๋ช
maxActive="15"
maxIdle="3"/>
...
</Context>
<Context>๋ ์์ ์์ค์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค
context.xml์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์์์ ๋ช ์ํด์ฃผ๋ ํ์ผ์ด๋ค
์ ๊ณผ์ ์์ MySQL tomcat ๊ณ์ ์ ์์ฑํ๋ ์ ๋ณด ๊ทธ๋๋ก ์ ๋ ฅํ๋ค
(username, password, url ํญ๋ชฉ)
# vi /usr/local/tomcat9.0/conf/web.xml
<web-app>
...
<resource-ref>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
...
</web-app>
<web-app>๋ ์์ ์์ค์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค
web.xml์ Tomcat์ ์คํ ํ๊ฒฝ ์ ๋ณด๊ฐ ์๋ ํ๊ฒฝ์ค์ ํ์ผ๋ก
Tomcat์ ๋ชจ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ณธ ์ค์ ์ ์ ์ํ๋ ํ์ผ์ด๋ค
- ์๋น์ค ์ฌ์์
# systemctl restart tomcat
14-4 Web Page ์์ฑ
# vi /usr/local/tomcat9.0/webapps/ROOT/index.jsp
<%@ page import = "java.sql.*" %>
<%
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://10.0.118.104:3306/TOMCATDB"; //DB์๋ฒ ip, DB๋ช
์
๋ ฅ
Connection conn = DriverManager.getConnection(url, "tomcatuser", "P@ssw0rd"); //MySQL ๊ณ์ ๊ณผ PW
out.println("SHOW NAME AND LOCATION - WEB 1");
out.println("<BR>");
out.println("-------------------------------");
out.println("<BR>");
PreparedStatement ps=(PreparedStatement)conn.prepareStatement("SELECT * from TESTTABLE");
ResultSet rs=ps.executeQuery();
while(rs.next()){
String name=rs.getString("name");
String location=rs.getString("location");
out.println("name : "+ name);
out.println("<BR>");
out.println("location : "+location);
out.println("<BR>");
out.println("-----------------------------");
out.println("<BR>");
}
}
catch(Exception e){
out.print(e.toString());
}
%>
MySql ์๋ฒ์ ์๊ฒฉ์ผ๋ก Select Query ๋ฌธ์ ๋ณด๋ด์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ํ์ด์ง๋ฅผ ์์ฑํ๋ค
- ์๋น์ค ์ฌ์์
# systemctl restart tomcat
14-5 ๋ณด์๊ทธ๋ฃน ๊ท์น ์ญ์
๋ชจ๋ ๊ตฌ์ถ์ด ๋๋ฌ์ผ๋ฏ๋ก, WAS ์๋ฒ์ ์์๋ฐ์ด๋์์ ๋ชจ๋ ํธ๋ํฝ์ผ๋ก ๋๊ฐ๋ ์์๋ฐ์ด๋ ๊ท์น์ ์ญ์ ํ๋ค
14-6 ์ฐ๋ ํ ์คํธ
DB์ ๋ฃ์ ๋ฐ์ดํฐ๊ฐ ์ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ๋ค
WAS-DB ์ฐ๋์ ์ฑ๊ณตํ์๋ค
14-7 ์ถ๊ฐ ํ ์คํธ
- ๋ฐ์ดํฐ ์ถ๊ฐ
mysql> insert into TESTTABLE(name,location) value('nengin','incheon');
- ํ์ธ
mysql> select * from TESTTABLE;
+----+--------+------------+
| id | name | location |
+----+--------+------------+
| 1 | suah | noryangjin |
| 2 | dani | yeonsugu |
| 3 | mungi | sinlim |
| 4 | nengin | incheon |
+----+--------+------------+
๋ฐ์ดํฐ๋ฅผ ํ๋ ๋ ์ถ๊ฐํ๋ค
๋ณ๊ฒฝ์ฌํญ์ด ์ ์ฉ๋ ๊ฒ์ ํ์ธํ๋ค
WEB-WAS-DB ๋ชจ๋ ์ฐ๋์ ์๋ฃํ๋ค!
๋ค์์ ๊ตฌ์ถ ํ๋ฆ๋์ ๊ฒฐ๊ณผ ์ ๋ฆฌ์ผ๋ก ์ด์ด์ง๋๋ค
'AWS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
AWS : 3 Tier [๊ตฌ์ฑ๋ ๋ฐ ์ค์ ์ค๋ช ] (0) | 2024.11.27 |
---|---|
AWS : 3 Tier [WAS & NLB ์์ฑ] (0) | 2024.11.23 |
AWS : 3 Tier [WEB & ALB ์์ฑ] (0) | 2024.11.23 |
AWS : 3 Tier [์ด๊ธฐ ์ค์ ๋ฐ ์์ ] (0) | 2024.11.19 |
AWS : ALB๋ฅผ ์ด์ฉํ LoadBalancer (0) | 2024.11.07 |