MySQL 8.0에서 제거된 주요 기능 개요
MySQL 8.0으로 업그레이드하면서 일부 기능이 더 이상 사용되지 않게 되었고, 최종적으로 제거되었습니다. 제거된 항목에 대한 대체 방법이 제공되는 경우, 향후 발생할 수 있는 호환성 문제를 피하기 위해 반드시 해당 대체 방법을 사용해야 합니다.
가장 대표적인 예로, innodb_locks_unsafe_for_binlog 시스템 변수가 MySQL 8.0에서 완전히 제거되었습니다. 이 변수와 유사하게 동작하는 READ COMMITTED 격리 수준(isolation level)을 대신 사용할 수 있으므로, 기존 설정을 사용 중이었다면 격리 수준 변경으로 전환하는 것이 좋습니다.
또한 MySQL 8.0.3 이상 버전으로 업그레이드한 후에는, 기존 InnoDB INFORMATION_SCHEMA 뷰 이름을 참조하던 스크립트를 새로운 뷰 이름에 맞게 수정해야 합니다.
계정 관리 관련 변경 사항
MySQL 8.0에서는 계정 관리와 관련된 여러 속성도 함께 제거되었습니다. 주요 내용은 다음과 같습니다.
- 더 이상 'GRANT' 문으로 사용자를 생성할 수 없습니다. 사용자 생성 시에는 반드시 'CREATE USER' 문을 사용해야 합니다.
쿼리 캐시(Query Cache) 제거
- MySQL 8.0에서는 쿼리 캐시 기능 자체가 완전히 제거되었습니다.
- 기존에 지원 중단(deprecated)되었던 쿼리 캐시 관련 항목들은 여전히 지원 중단 상태로 남아 있으며 아무런 효과가 없습니다. 이러한 항목들은 향후 MySQL 릴리스에서 완전히 삭제될 수 있습니다.
데이터 딕셔너리 관련 변경 사항
- 데이터 딕셔너리가 데이터베이스 객체에 대한 정보를 직접 관리하기 때문에, 서버가 더 이상 데이터 디렉터리의 디렉터리 이름을 검사하여 데이터베이스를 찾지 않습니다.
- 이로 인해 '--ignore-db-dir' 옵션과 'ignore_db_dirs' 시스템 변수는 더 이상 필요하지 않아 제거되었습니다.
제거된 시스템 변수 및 옵션 목록
- 'tx_isolation'과 'tx_read_only' 시스템 변수가 제거되었습니다. 대신 'transaction_isolation'과 'transaction_read_only'를 사용해야 합니다.
- 'secure_auth'와 'multi_range_count' 시스템 변수, '--secure-auth' 클라이언트 옵션, 그리고 'mysql_options()' C API 함수의 'MYSQL_SECURE_AUTH' 옵션이 모두 제거되었습니다.
- 'log_warnings' 시스템 변수와 --log-warnings 서버 옵션이 제거되었습니다. 대신 'log_error_verbosity' 시스템 변수를 사용해야 합니다.
- 'ignore_builtin_innodb' 시스템 변수도 제거되었습니다.
- --temp-pool 서버 옵션이 제거되었습니다.
SQL 문법 및 유틸리티 관련 변경 사항
- SQL 파서가 더 이상 \N을 NULL의 동의어로 취급하지 않습니다. 따라서 SQL 문에서는 반드시 'NULL' 값을 명시적으로 사용해야 합니다.
- PROCEDURE ANALYSE() 문법이 제거되었습니다.
- 'resolveip' 유틸리티가 제거되었습니다. 대신 'nslookup', 'host', 또는 'dig' 같은 표준 네트워크 도구를 사용할 수 있습니다.
- DTrace에 대한 지원이 제거되었습니다.
JSON 함수 변경 사항
- 'JSON_APPEND()' 함수가 제거되었습니다. 대신 'JSON_ARRAY_APPEND()' 함수를 사용해야 합니다.
업그레이드 전 체크리스트
MySQL 8.0으로 마이그레이션하기 전에 위에 나열된 제거된 기능들을 현재 환경에서 사용하고 있는지 점검하는 것이 중요합니다. 특히 오래된 버전에서 운영 중인 시스템이라면 설정 파일(my.cnf)과 애플리케이션 코드, 배치 스크립트 등을 사전에 검토하여 제거된 변수나 문법에 대한 의존성을 정리해 두면 업그레이드 과정에서 발생할 수 있는 장애를 크게 줄일 수 있습니다.