설치와 설정 #1

minstone·2022년 3월 14일
0

Real MySQL 8.0

목록 보기
1/3
post-thumbnail

MySQL 서버 설치

해당 페이지에서는 LINUX 설치 방법을 다룬다.

  • YUM 설치
  • RPM 설치
  • 소스코드 빌드

버전과 에디션 선택

  • 제약 사항이 없다면, 최신버전 설치 권장.
  • 메이저버전 업그레이드의 경우 15 ~ 20번 이상 릴리즈된 버전을 사용해야 안정적 운영가능.
엔터프라이즈와 커뮤니티는 5.5버전부터 기능이 달라졌고, 엔터프라이즈 소스코드는 비공개 되었다.

엔터프라이즈 에디션 추가 기능

  • Thread Pool
  • Enterprise Audit
  • Enterprise TDE(Master Key 관리)
  • Enterprise Authentication
  • Enterprise Firewall
  • Enterprise Monitor
  • Enterprise Backup
  • MySQL 기술지원

MySQL 설치

설치환경

YUMRPM
HOSTNAME191192
OSCenOS6.7CenOS6.6

리눅스 서버의 Yum 인스톨러 설치

1. 리포지토리 설치용 RPM 다운로드


2. yum 리포지토리 등록

[root@191 mysql]# ls -al
합계 51672
drwxr-xr-x. 2 root     root         4096 2022-03-15 13:38 .
drwx------. 5 minstone minstone     4096 2022-03-15 13:37 ..
-rw-r--r--. 1 root     root     52891142 2021-06-07 17:24 mysql-boost-5.7.34.tar.gz
-rw-r--r--. 1 root     root        11012 2022-03-15 13:38 mysql80-community-release-el6-5.noarch.rpm
[root@191 mysql]# sudo rpm -Uvh mysql80-community-release-el6-5.noarch.rpm
경고: mysql80-community-release-el6-5.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
준비 중...               ########################################### [100%]
   1:mysql80-community-relea########################################### [100%]

3. 설치된 리포지토리 경로

[root@191 mysql]# ls -alh /etc/yum.repos.d/*mysql*
-rw-r--r--. 1 root root 2.1K 2022-01-11 22:24 /etc/yum.repos.d/mysql-community-source.repo
-rw-r--r--. 1 root root 2.1K 2022-01-11 22:24 /etc/yum.repos.d/mysql-community.repo

4. 설치가능한 소프트웨어 목록 조회

[root@191 mysql]# sudo yum --showduplicates list mysql-community-server
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * epel: ftp.iij.ad.jp
Available Packages
mysql-community-server.x86_64          8.0.11-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.12-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.13-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.14-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.15-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.16-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.16-2.el6           mysql80-community
mysql-community-server.x86_64          8.0.17-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.18-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.19-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.20-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.21-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.22-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.23-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.24-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.25-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.26-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.27-1.el6           mysql80-community
mysql-community-server.x86_64          8.0.28-1.el6           mysql80-community

CentOS 6 yum/update 오류


5. 버전선택, 설치

버전의 경우 패키지명뒤에 '-'로 구분해서 입력

[root@191 mysql]# sudo yum install mysql-community-server-8.0.28
=================================================================================================================
 Package                                  Arch            Version               Repository                  Size
=================================================================================================================
Installing:                                                                                      
 mysql-community-server                   x86_64          8.0.28-1.el6          mysql80-community          744 M
Installing for dependencies:                                                                     
 mysql-community-client                   x86_64          8.0.28-1.el6          mysql80-community           79 M
 mysql-community-client-plugins           x86_64          8.0.28-1.el6          mysql80-community          8.1 M
 mysql-community-common                   x86_64          8.0.28-1.el6          mysql80-community          837 k
 mysql-community-icu-data-files           x86_64          8.0.28-1.el6          mysql80-community          2.1 M
 mysql-community-libs                     x86_64          8.0.28-1.el6          mysql80-community          6.8 M

Transaction Summary
=================================================================================================================
Install       6 Package(s)

Total download size: 841 M
Installed size: 3.4 G
Is this ok [y/N]:
.
.
.
Installed:
  mysql-community-server.x86_64 0:8.0.28-1.el6

Dependency Installed:
  mysql-community-client.x86_64 0:8.0.28-1.el6    mysql-community-client-plugins.x86_64 0:8.0.28-1.el6    mysql-community-common.x86_64 0:8.0.28-1.el6    mysql-community-icu-data-files.x86_64 0:8.0.28-1.el6
  mysql-community-libs.x86_64 0:8.0.28-1.el6

Complete!

💡 CentOS 6 버전은 YUM/RPM으로 설치시에도 Initialize 작업을 별도로 진행 해야 함.

[root@191 lib]# mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql
[root@191 lib]# service mysqld start
mysqld ()를 시작 중:                                     [  OK  ]

이외 설치 방법


MySQL 서버의 시작과 종료

우분투 명령어CentOS6 명령어CentOS7 명령어
시작service mysql startservice mysql startsystemctl start mysqld
정지service mysql stopservice mysql stopsystemctl start stop
재시작service mysql restartservice mysql restartsystemctl start restart
상태확인service mysql statusservice mysql statussystemctl start status

1. 설정파일

리눅스 서버에서 yum,rpm을 사용해 MySQL서버를 설치하면 서버에 필요한 프로그램,디렉터리는 일부 준비되지만, 로그파일과 데이터파일은 따로 생성하는 과정을 거쳐야 한다.

설치 시 기본적인 옵션만 가지는 /etc/my.cnf 파일이 생성되며 아래 구문으로 데이터파일을 생성한다.
자동으로 생성된 my.cnf는 운영을 하기에는 부족한 상태이기에 설정옵션을 추가 해 주어야 한다.

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
~

2. Initialization

트랜잭션로그파일(redo log)과 시스템 테이블 생성과정

--initialize-insecure 옵션은 패스워드가 없는 관리자 계정을 생성하며 --initialize 옵션으로 사용 시 관리자 계정의 패스워드를 에러로그에 기록한다.

[root@191 mysql]# mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
[root@191 mysql]# ls -al
합계 176584
-rw-r-----.  1 mysql dba    196608 2022-03-18 11:02 #ib_16384_0.dblwr
-rw-r-----.  1 mysql dba   8585216 2022-03-18 11:02 #ib_16384_1.dblwr
drwxr-x---.  2 mysql dba      4096 2022-03-18 11:02 #innodb_temp
drwxr-x--x.  6 mysql dba      4096 2022-03-18 11:02 .
drwxr-xr-x. 38 root  root     4096 2022-03-18 10:59 ..
-rw-r-----.  1 mysql dba        56 2022-03-18 11:02 auto.cnf
-rw-------.  1 mysql dba      1676 2022-03-18 11:02 ca-key.pem
-rw-r--r--.  1 mysql dba      1112 2022-03-18 11:02 ca.pem
-rw-r--r--.  1 mysql dba      1112 2022-03-18 11:02 client-cert.pem
-rw-------.  1 mysql dba      1676 2022-03-18 11:02 client-key.pem
-rw-r-----.  1 mysql dba      5526 2022-03-18 11:02 ib_buffer_pool
-rw-r-----.  1 mysql dba  50331648 2022-03-18 11:02 ib_logfile0
-rw-r-----.  1 mysql dba  50331648 2022-03-18 11:02 ib_logfile1
-rw-r-----.  1 mysql dba  12582912 2022-03-18 11:02 ibdata1
drwxr-x---.  2 mysql dba      4096 2022-03-18 11:02 mysql
-rw-r-----.  1 mysql dba  25165824 2022-03-18 11:02 mysql.ibd
drwxr-x---.  2 mysql dba      4096 2022-03-18 11:02 performance_schema
-rw-------.  1 mysql dba      1676 2022-03-18 11:02 private_key.pem
-rw-r--r--.  1 mysql dba       452 2022-03-18 11:02 public_key.pem
-rw-r--r--.  1 mysql dba      1112 2022-03-18 11:02 server-cert.pem
-rw-------.  1 mysql dba      1680 2022-03-18 11:02 server-key.pem
drwxr-x---.  2 mysql dba      4096 2022-03-18 11:02 sys
-rw-r-----.  1 mysql dba  16777216 2022-03-18 11:02 undo_001
-rw-r-----.  1 mysql dba  16777216 2022-03-18 11:02 undo_002

에러로그를 통해 초기 패스워드 확인

[root@191 mysql]# cat /var/log/mysqld.log |grep password
2022-03-18T02:02:08.438693Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: FEOeXO)6C5oR

3. 관리자계정 패스워드 수정

로그인 후 패스워드 수정을 우선적으로 진행한다.
자동 생성되는 패스워드로 로그인 시 명령어/SQL 사용이 제한된다.

초기 패스워드 입력

[root@191 mysql]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.28

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

패스워드 변경

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Study3306!';
Query OK, 0 rows affected (0.03 sec)

4. 시작과 종료

MySQL 서버는 트랜잭션은 커밋됐으나 데이터파일에 반영되지 않는 경우가 있다. 때문에 종료를 해야하는 상황에는 버퍼와 리두로그를 데이터파일에 동기화 시키는 과정이 필요 하다.

해당 과정을 클린 셧다운이라 표현하며, 서버가 기동할 때 트랜잭션 복구가 필요 없어 빠르게 기동된다.

mysql> show variables where variable_name like 'innodb_fast_shutdown';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| innodb_fast_shutdown | 1     |
+----------------------+-------+
1 row in set (0.00 sec)

mysql> SET GLOBAL innodb_fast_shutdown=0;

동적 변수 반영 후 재기동하면 해당옵션은 my.cnf 옵션/Default옵션으로 초기화된다.
급하게 변수를 변경하고 잊을 때가 있는데 이를 방지하는 SET PERSIST 명령이 도입됐다.




# 참조
백은빈,이성욱. 2021. Real MySQL 8.0 (1권). 위키북스.
MySQL 8.0 Reference Manual

profile
🌚Stone Kid

0개의 댓글