โ ๊ณต์๋ฌธ์
https://docs.nhncloud.com/ko/TOAST/ko/Overview/
โฌ๏ธ MySQL ์ค์น ์ ์ ์ธ์คํด์ค ์์ฑํ๋ ๋ฐฉ๋ฒ โฌ๏ธ
2023.01.08 - [์ธํ๋ผ/NHN Cloud] - NHN Cloud ์ธ์คํด์ค ์์ฑํ๊ธฐ
์ธ์คํด์ค ํ๊ฒฝ
- OS : CentOS 7.9
- ์ํคํ ์ณ: x86_64
0. ์ค์น ์ ํ์ธ
์ธ์คํด์ค์ MySQL์ ์ฒ์ ์ค์นํ๋ค๋ ๊ฐ์ ์ผ๋ก ์ค์น๋ฅผ ์งํํ๋ค.
- ์ค์น ์ฌ๋ถ ํ์ธ
mysql --version
์๋์ ๊ฐ์ ํ์์ผ๋ก ๋์ค๋ฉด ์ค์น๊ฐ ๋์ด ์๋ ๊ฒ์ด๋ค.
์ฌ์ค์น๋ฅผ ํ๊ธฐ ์ํด์๋ ์ญ์ ๋ฅผ ๋จผ์ ํ๊ณ ์ค์น๋ฅผ ์งํํ๋ค.
rm -rf /var/lib/mysql
๋ฐ์ดํฐ ํ์ผ์ด๋ config ํ์ผ๊น์ง ์ญ์ ํด์ผ ํ๋ค.
1. ์ค์น ๊ณผ์
( 1 / 12 ) ์ธ์คํด์ค์ SSH ๋ฐฉ์์ผ๋ก ์ ์
ssh -i [ํคํ์ด์ด๋ฆ.pem] centos@[ํ๋กํ
IP]
( 2 / 12 ) wget ๋ค์ด๋ก๋
sudo yum install wget
๐ก wget์ด๋?
'web get'์ ์ค์๋ง๋ก, ๋คํธ์ํฌ ์์์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ํ๋ ๊ธฐ๋ฅ์ ์ํํ๋ค. HTTP, HTTPS, FTP ํ๋กํ ์ฝ์ ์ง์ํ๋ฉฐ, HTTP proxy์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์๋ ์๋ค.
( 3 / 12 ) MySQL ๋ฐ์ด๋๋ฆฌ ๋ฒ์ ์์ถํ์ผ ๋ค์ด๋ก๋
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
( 4 / 12 ) ํธ๋ฆฌํ๋๋ก mv๋ฅผ ์ด์ฉํ์ฌ ํด๋ ์ด๋ฆ ๋ณ๊ฒฝ
mv mysql-8.0.27-linux-glibc2.12-x86_64/ mysql
( 5 / 12 ) mysql ํด๋ ์์ ์ ์ง์
# sudo chown -R [์ฌ์ฉ์๋ช
]:[์คํOS๋ช
] [์ง์ ํ ํด๋๋ช
]
sudo chown -R centos:centos mysql
- -R : ํด๋์ ํด๋ ๋ด๋ถ ํ์ผ๊น์ง ์ ๋ถ ์์ ์์ ๊ทธ๋ฃน์ด ๋ณ๊ฒฝ๋จ
( 6 / 12 ) mysql ํด๋์ my.cnf ํ์ผ ์์ฑ ๋ฐ ๋ด์ฉ ์ถ๊ฐ
๐กmy.cnf ํ์ผ์ด๋?
Unix ๊ณ์ด MySQL ์์ง์์ ์ฌ์ฉํ๋ configure ํ์ผ. Windows ๊ณ์ด์์๋ my.ini ๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ๋๋ค.
cd mysql
touch my.cnf
vi my.cnf
## ๋ด์ฉ ##
[client]
port=3306 # ์ ์์ ์ฌ์ฉํ Port ์ค์
socket=/home/centos/mysql/mysql.sock # ์ฌ์ฉํ ์์ผ ํ์ผ ์ค์
[mysqld]
socket=/home/centos/mysql/mysql.sock
basedir=/home/centos/mysql # base directory ์ค์
datadir=/home/centos/mysql/data # data directory ์ค์
user=mysql # ์ ์ ์ ์ ๋ช
key_buffer_size=64M # ๋ฉ๋ชจ๋ฆฌ์ ์๋ ์ธ๋ฑ์ค ๋ธ๋ก์์ ์ฌ์ฉ๋๋ ๋ฒํผ์ ํฌ๊ธฐ, MyISAM ํ
์ด๋ธ์์ ์ฌ์ฉํ๊ณ ์๋ ๋ชจ๋ ์ฐ๋ ๋์์ ๊ณต์ ํ๋ ๋ฒํผ ํฌ๊ธฐ
max_allowed_packet=32M # ๊ฐ์ฅ ํฌ๊ฒ ์์ฑ๋ ์ ์๋ packet 1๊ฐ ํฌ๊ธฐ(๋ฐ์ดํธ) ์ค์
#query_cache_size=32M
max_connections=2625 # ๋์์ ์ ๊ทผ ๊ฐ๋ฅํ ์ปค๋ฅ์
์ ์ค์
max_connect_errors=2000000 # ๋ฐ์ํ ์ ์๋ ์ต๋ ์๋ฌ ๊ฐ์
wait_timeout=60 # API๋ฅผ ์ด์ฉํ client ํ๋ก๊ทธ๋จ(PHP, JDBC, ODBC...) ์์์ ์ต๋ ์ฐ๊ฒฐ์๊ฐ
explicit_defaults_for_timestamp = 1
pid-file=/home/centos/mysql/mysqld.pid
log-error=/home/centos/mysql/logs/mysqld.log
bulk_insert_buffer_size=0
์ค์ ํ variable์ ๊ทธ๋ฃน๋ณ๋ก ๋ชจ์์ ์ค๊ดํธ๋ก ๊ธฐ์ ํ๋ ๊ฒ์ ์์น์ผ๋ก ํ๋ค.
variable ์์ฑ ๊ท์น
- ์ฃผ์์ # ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
- variable๊ณผ value ์ฌ์ด์๋ ๊ณต๋ฐฑ์ด ์์ด๋ ๋ฌด๋ฐฉํ๋ค.
- variable ์์ -, --๋ ์ฌ์ฉํ์ง ์๋๋ค.
- my.cnf์ ๊ธฐ์ ๋ variable์ ์ฒ์ ์๋ฒ๊ฐ ๋ก๋ ๋ ๋๋ง ์ ์ฉ๋๋ค.
- my.cnf์ ๊ธฐ์ ๋์ง ์์ variable์ default๊ฐ์ผ๋ก ์ค์ ๋๋ค.
- ๋ชจ๋ varaiable์ ๊ทธ๋ฃน ์์ ์ํด์ผ ํ๋ค.
( 7 / 12 ) libaio ๋ค์ด๋ก๋
mkdir data
mkdir logs
sudo yum install libaio -y
๐ก libaio์ด๋?
๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ํ์์ธ ๋น๋๊ธฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
libaio๊ฐ ์ค์น๋์ด ์์ง ์์ผ๋ฉด intialization ๋จ๊ณ๋ ์ดํ ์๋ฒ ์์ ๋จ๊ณ์์ ์คํจํ ์ ์์ผ๋ ์ค์น๋ฅผ ์งํํ๋ค.
( 8 / 12 ) my.cnf ํ์ผ ๊ฒฝ๋ก ์ง์
/home/centos/mysql/bin/mysqld --defaults-file=/home/centos/mysql/my.cnf --initialize
--default-file= ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ง์ ๋ ํ์ผ๋ง ์ฝ๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ผ ํ๋ค.
์ฐธ๊ณ ) my.cnf ์ธ์ ๋ค๋ฅธ cnf ํ์ผ์ ์ง์ ํ์ฌ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ --defaults-extra-files๋ก ์ค์ ํ ์ ์๋ค.
์๋ฅผ ๋ค๋ฉด ์ฌ๋ฌ ๋์ MySQL ์๋ฒ๋ฅผ ์ด์ํ๋ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ์ ์ธ ์ค์ ์ my.cnf๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ํ๊ณ , ์๋ฒ๋ณ ํน์ด ์ฌํญ์ ๋ค๋ฅธ cnf ํ์ผ์ ์์ฑํ์ฌ configuration ๋ด์ฉ์ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ์ด๋ค.
( 9 / 12 ) mysql ์คํ
/home/centos/mysql/bin/mysqld --defaults-file=/home/centos/mysql/my.cnf &
( 10 / 12 ) logs/mysqld.log ์์ ์์๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ
cd logs
cat mysqld.log
( 11 / 12 ) mysql ํด๋์์ ์คํ
cd ..
/home/centos/mysql/bin/mysql -uroot -p '์์๋น๋ฐ๋ฒํธ' -S/home/centos/mysql/mysql.sock
( 12 / 12 ) ๋ค์ด๋ก๋ ๋ฐ์ ์์ถํ์ผ ์ญ์
rm mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
โ๐ป ์ฌ๊ธฐ์ ์ ๊น ! PATH ์ค์ ํ๊ธฐ
โญ๏ธ ๊ฒฝ๋ก๋ฅผ ๋ฑ๋กํ๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด ํธ๋ฆฌํฉ๋๋ค.โญ๏ธ
- /etc/profile ์์ ํ๊ธฐ
# pwd ํ์ ๋ / ์ธ ์ํ์์
sudo vi /etc/profile
- GG ์ด์ฉํด์ ํ์ผ ๋งจ ๋์ผ๋ก ๊ฐ์ ์ถ๊ฐํ๊ณ ์ ์ฅํ๊ธฐ(:wp)
export PATH="$PATH:/home/centos/mysql/bin"
- ๋ณ๊ฒฝ๋ ํ์ผ ์ ์ฉํ๊ธฐ
source /etc/profile
์ฐธ๊ณ ) PATH์ ๋ฃ์ ๊ฒฝ๋ก๋ my.cnf ์ basedir ๊ฒฝ๋ก์ bin๋ง ์ถ๊ฐํ ๊ฒ๊ณผ ๊ฐ๋ค.
2. ์ค์น ๊ฒฐ๊ณผ