수년 전에 Docker용 MariaDB 10.4(mariadb:latest가 10.4.22이던 시절) 기반으로 만든 C# ASP.NET Core 3.1 프로그램을 만들어서 사용/운영 중인데, 이 MariaDB가... 은근 버그도 많고 성능도 좀 거시기...한 점이 있어 가급적 최신버전을 사용하려고 노력했으나 몇 가지 심각한 문제가 있어 업그레이드를 하지 못하고 있었다.
우선, 10.6 버전부터는 데이터베이스 UTF8 기본 문자셋이 utf8mb3가 되었다는 점.
이게 뭐가 문제냐면... .NET MySql 라이브러리인 MySql.Data v8.0.20을 사용하고 있었는데, 여기에서 utf8mb3를 지원하지 않기 때문에 접속 자체가 되지 않는다. 문자셋이 호환되지 않는다는 오류만 뻑뻑~
>> 참조: https://jira.mariadb.org/browse/MDEV-26105
다행히 작년 초에 업데이트된 MySql.Data v8.0.28부터는 utf8mb3가 지원된다고 하는 뉴스를 최근에야 접하고,
이제 MariaDB를 최신버전으로 업그레이드를 한번 해보려고 큰 결심을 했는데...
당연하게도?!! 여러가지 문제를 겪고 있다.
우선, 위 utf8mb3 지원 문제부터 해결하기 위해 현재 시점 기준 최신버전인 MySql.Data v8.0.33으로 업데이트부터.
그 다음에 MariaDB 최신버전이 어디까지 나왔나 확인해 봤다. 음... latest 안정화 버전은 10.11.3이군.
무턱대고 일단 최신버전부터 다운로드 받아서 설치, 테스트해 봤다.
엇! 이전 10.4에서 사용하던 DB 스키마를 볼륨(volume) 그대로 10.11에다 올렸더니 동작이 안된다.
10.11 기본 스키마를 기반으로 데이터베이스마다 일일이 백업/복원하는 방식으로 올려야 한다. ㄷㄷ
이건 좀... 시간 많이 잡아 먹으면 안되는 작업인데... 제길슨!
아무튼, 일일이 한땀한땀 작업해서 올렸다.
정상 동작 확인!
그 다음으로, 기존 사용하던 프로그램을 올려봤다.
읭???? 접속부터 안된다.
"Object cannot be cast from DBNull to other types."
이런 해괴망측한 오류가 접속 시점부터 발생한다.
인터넷을 뒤져보니 MariaDB 10.10 버전부터 기본 문자셋 정렬 ID가 Nullable로 바뀌었는데, MySql.Data에서는 이 ID를 Not Null로 취급하기 때문에 오류가 발생해서 접속 자체가 되지 않는 것이라고 한다.
해결 방법은 10.10 이전 버전, 즉 10.9 버전을 쓰거나, MySql.Data를 삭제하고 MySqlConnector를 사용하는 것뿐이라고.
응? MySqlConnector? 그런 게 생겼나?
찾아봤다.
>> 참조: https://mysqlconnector.net/tutorials/migrating-from-connector-net/
오... 뭔가 성능이나 안정성이 더 좋은 라이브러리라고 한다. 왜 이걸 몰랐지?
바로 바꾸기로 했다.
MySql.Data v8.0.28 삭제!
MySqlConnector v.2.2.6 설치! (현재 최신버전은 2.2.6이다.)
using 네임스페이스만 바꾸니 바로 정상 동작한다. 완벽한 대체품!
접속도 되지 않던 문제가 바로 해결됐다. 대충 확인해 본 바로는 모든 기능들이 다 정상인 듯.
이제 AKS Kubenetes 운영 환경에 반영하는 일만 남았군.
마지막으로, MariaDB 버전 업그레이드를 하기 위한 필요 검토 사항들을 정리하고 마친다. (Docker 환경, Spider 엔진을 통한 Sharding/Partitioning 사용 시 기준)
|
'Tech: > 일반·기타' 카테고리의 다른 글
git log 활용팁 정리 (1) | 2023.10.19 |
---|---|
AKS 환경: MariaDB 10.4 -> 10.11 업그레이드 절차 (0) | 2023.06.02 |
HTML: autocomplete="off" (0) | 2023.01.10 |
M365 서비스 계정: 회의실 일정 연동 (0) | 2022.12.08 |
Google Workspace 서비스 계정: 회의실 리소스 캘린더 API 연동 (0) | 2022.12.08 |