태그 정보 저장을 위해 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 |
---|
댓글