โœ… ๊ณต์‹๋ฌธ์„œ

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 ์ž‘์„ฑ ๊ทœ์น™

  1. ์ฃผ์„์€ # ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  2. variable๊ณผ value ์‚ฌ์ด์—๋Š” ๊ณต๋ฐฑ์ด ์žˆ์–ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.
  3. variable ์•ž์— -, --๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  4. my.cnf์— ๊ธฐ์ˆ ๋œ variable์€ ์ฒ˜์Œ ์„œ๋ฒ„๊ฐ€ ๋กœ๋“œ ๋ ๋•Œ๋งŒ ์ ์šฉ๋œ๋‹ค.
  5. my.cnf์— ๊ธฐ์ˆ ๋˜์ง€ ์•Š์€ variable์€ default๊ฐ’์œผ๋กœ ์„ค์ •๋œ๋‹ค.
  6. ๋ชจ๋“  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 ์„ค์ •ํ•˜๊ธฐ


โญ๏ธ ๊ฒฝ๋กœ๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.โญ๏ธ

  1. /etc/profile ์ˆ˜์ •ํ•˜๊ธฐ
# pwd ํ–ˆ์„ ๋•Œ / ์ธ ์ƒํƒœ์—์„œ
sudo vi /etc/profile
  1. GG ์ด์šฉํ•ด์„œ ํŒŒ์ผ ๋งจ ๋์œผ๋กœ ๊ฐ€์„œ ์ถ”๊ฐ€ํ•˜๊ณ  ์ €์žฅํ•˜๊ธฐ(:wp)
export PATH="$PATH:/home/centos/mysql/bin"
  1. ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ์ ์šฉํ•˜๊ธฐ
    source /etc/profile


์ฐธ๊ณ ) PATH์— ๋„ฃ์„ ๊ฒฝ๋กœ๋Š” my.cnf ์— basedir ๊ฒฝ๋กœ์— bin๋งŒ ์ถ”๊ฐ€ํ•œ ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

2. ์„ค์น˜ ๊ฒฐ๊ณผ

+ Recent posts