본문 바로가기
Skills/Database

MariaDB 버전 업그레이드 (10.1 -> 10.4)

by 부르르 2021. 9. 15.

태그 정보 저장을 위해 MariaDB에서 JSON_OBJECT 기능을 사용하던 중,

동일한 코드에 대해 한쪽 DB는 문제가 없는 반면, 다른 DB에서 1305에러 - JSON_OBJECT DOES NOT EXIST가 발생했다.

확인해보니, JSON_OBJECT 기능은 MariaDB 10.2.3 에 추가된 기능인데 문제가 된 DB는 10.1.x 버전을 사용하고 있었다. (참고: JSON_OBJECT)

 

따라서 JSON_OBJECT 기능 사용을 위해 MariaDB 버전 업그레이드를 수행하였다.


1. [Option] DB ALL 백업 & Data Directory 복사

실제로 덤프파일을 다시 임포트하거나 카피한 데이터 디렉토리를 덮어씌어주진 않았지만

만약을 대비해 기존 데이터는 백업&복사 한다.

 

DB ALL 백업

# mysqldump -uroot -p --all-databases > ~/hcmp_mysqldump_210915.sql

datadir 확인 & 복제 & 소유권 변경 (mysql)

[mysqld]
datadir=/var/lib/mysql
#...
# cp -R /var/lib/mysql ~/
# ll ~
total 82952
-rwxr--r--  1 root root 15333881 Sep 15 09:54 hcmp_mysqldump_210915.sql
drwxr-xr-x  7 root root      268 Sep 15 10:02 mysql
# chown -R  mysql:mysql mysql
# ll
total 82952
-rwxr--r--  1 root  root  15333881 Sep 15 09:54 hcmp_mysqldump_210915.sql
drwxr-xr-x  7 mysql mysql      268 Sep 15 10:02 mysql

 

2. 기존 MariaDB 10.1 삭제

서비스 정지 후 패키지 삭제

# systemctl stop mariadb
# yum remove mariadb*
Removed:
  MariaDB-client.x86_64 0:10.1.48-1.el7.centos                                                                                                                      

Dependency Removed:
  MariaDB-server.x86_64 0:10.1.48-1.el7.centos         

Complete!

 

3. MariaDB 10.4 설치

MariaDB 10.4 레포지토리 추가

# vim /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

MariaDB 10.4 설치

# yum install MariaDB
Installed:
  MariaDB-server.x86_64 0:10.4.21-1.el7.centos                                                                                                                      

Dependency Installed:
  MariaDB-client.x86_64 0:10.4.21-1.el7.centos                                                                                                                      

Complete!

서비스 시작 및 확인

# systemctl start mariadb
# systemctl status mariadb
● mariadb.service - MariaDB 10.4.21 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Wed 2021-09-15 10:13:25 KST; 3s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 31545 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 31466 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
  Process: 31464 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
 Main PID: 31513 (mysqld)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─31513 /usr/sbin/mysqld

Sep 15 10:13:25 dev-hcmp-db-1 mysqld[31513]: 2021-09-15 10:13:25 0 [ERROR] Missing system table mysql.roles_mapping; please run mysql_upgrade to create it
Sep 15 10:13:25 dev-hcmp-db-1 mysqld[31513]: 2021-09-15 10:13:25 0 [ERROR] Incorrect definition of table mysql.event: expected column 'sql_mode' at posi...TE','POST
Sep 15 10:13:25 dev-hcmp-db-1 mysqld[31513]: 2021-09-15 10:13:25 0 [ERROR] mysqld: Event Scheduler: An error occurred when initializing system tables. D...cheduler.
Sep 15 10:13:25 dev-hcmp-db-1 mysqld[31513]: 2021-09-15 10:13:25 6 [Warning] Failed to load slave replication state from table mysql.gtid_slave_pos: 114...n't exist
Sep 15 10:13:25 dev-hcmp-db-1 mysqld[31513]: 2021-09-15 10:13:25 0 [Note] Reading of all Master_info entries succeeded
Sep 15 10:13:25 dev-hcmp-db-1 mysqld[31513]: 2021-09-15 10:13:25 0 [Note] Added new Master_info '' to hash table
Sep 15 10:13:25 dev-hcmp-db-1 mysqld[31513]: 2021-09-15 10:13:25 0 [Note] /usr/sbin/mysqld: ready for connections.
Sep 15 10:13:25 dev-hcmp-db-1 mysqld[31513]: Version: '10.4.21-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
Sep 15 10:13:25 dev-hcmp-db-1 systemd[1]: Started MariaDB 10.4.21 database server.
Sep 15 10:13:28 dev-hcmp-db-1 mysqld[31513]: 2021-09-15 10:13:28 

기존 10.1 버전 테이블 10.4 버전으로 업그레이드 시작

# mariadb-upgrade --user=root --password
Enter password: 
Phase 1/7: Checking and upgrading mysql database
Processing databases
mysql
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
...
information_schema
performance_schema
test
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK
# systemctl restart mariadb

 

버전 업그레이드 성공
괴정은 PostgreSQL 보다도 더 간단한 것 같은데
차이점이 있다면 PostgreSQL은 기존 버전 패키지를 굳이 지우지않았어도 되었으나.
MariaDB의 경우 기존 버전 패키지를 지워야만 했다.

728x90
반응형

'Skills > Database' 카테고리의 다른 글

Install MongoDB 5.0 on CentOS 7  (0) 2021.07.30

댓글