MySQL 8.1 간단하게 살펴보기

2023. 8. 2. 13:41데이터베이스

https://www.percona.com/blog/a-quick-peek-at-mysql-8-0-34-and-mysql-8-1-0/

 

A Quick Peek at MySQL 8.0.34 and MySQL 8.1.0

Taking a look at what Oracle delivered with MySQL 8.0.34 and 8.1.0 on July 17th, 2023.

www.percona.com

 

드디어 8.1이 나왔습니다.

공식문서 보다가 버전 선택란에 8.1이 있길래 깜짝 놀람 -_-;

 

아직 엄청나게 큰 변화는 없는 것 같습니다.

8.0의 지원이 벌써 2년 반 밖에 남지 않은 시점에서, 슬슬 8.1의 추이도 잘 지켜봐야 할 것 같습니다.

 

아래는 단순 번역본입니다.

 

 


 

이것은 Oracle이 2023년 7월 17일에 MySQL 8.0.34 및 8.1.0과 함께 제공한 내용에 대한 Quick Peek입니다. MySQL은 이전에 새로운 기능을 사용할 수 있는 지속적 제공 시스템의 일부로 소프트웨어를 분기별로 출시했습니다. 많은 사람들이 위험할 수 있는 새로운 기능에 대한 액세스를 좋아했지만 다른 사람들은 안정성과 버그 수정만을 원했습니다. 이제 더 보수적이고 위험을 회피하는 사람들을 위한 장기 지원(LTS) 버전이 있습니다. 이 버전은 주요 릴리스 사이에 약 2년의 수명을 갖습니다.

새로운 기능이 포함된 릴리스는 Innovation 시리즈라고 하며 MySQL 8.1.0은 이러한 릴리스 중 첫 번째입니다. 그리고 LTS는 8.0.34를 기반으로 합니다. 이탤릭체로 된 의견은 제 의견이며 Percona의 견해를 반영하지 않으며 다른 사람도 반영하지 않을 수 있습니다.

빠른 알림

MySQL 8.0의 수명 종료는 2026년 4월이며 MySQL 5.7의 수명 종료는 2023년 10월입니다. Tempus Fugit!

그래서 새로운 것은 무엇입니까? 8.0.34는 MySQL 서버 및 관련 소프트웨어의 진화입니다. 8.1.0은 8.0.34의 진화 버전이므로 릴리스 노트에 중복되는 부분이 많습니다. 8.0.34 릴리스 정보 및 8.1 릴리스 정보 .

34년의 새로운 것은 무엇입니까?

이제 validate_password.changed_character_percentage 변수를 사용하여 이전 비밀번호와 달라야 하는 새 비밀번호의 문자 비율을 설정할 수 있습니다. 적절한 상황에서 대규모로 좌절감을 유발할 수 있으므로 이것을 실험해야 합니다.

지원 중단? mysqlpump 클라이언트 유틸리티는 더 이상 사용되지 않으며 제거됩니다. sync_relay_log_info, binlog_format 및 group_replication_recovery_complete_at 시스템 변수는 더 이상 사용되지 않으며 제거됩니다. 그리고 lz4_decompress 및 zlib_decompress도 mysqlpump 지원 중단의 일부로 지원 중단되었습니다. Mysqlpump에는 소수의 열애자가 있지만 더 큰 커뮤니티에서는 마음에 들지 않는 것 같습니다.

CURRENT_USER(), USER(), SESSION_USER() 및 SYSTEM_USER()는 이제 테이블을 정의할 때 기본값으로 사용할 수 있습니다. 이는 데이터 감사에 유용합니다.

8.0.34에는 131개의 버그 수정이 있고 8.1.0에는 199개의 주요 수정 사항이 있습니다. 이들 중 대부분은 라이브러리 버전 업데이트와 같이 실제로 사소한 것입니다.

8.1.0의 새로운 기능은 무엇입니까?

8.1.0은 8.0.34를 기반으로 하므로 위의 변경 사항과 함께 몇 가지 추가 자료를 얻을 수 있습니다. mysql_native_password 인증 플러그인은 더 이상 사용되지 않으며 향후 버전의 MySQL에서 제거될 수 있습니다. 이것은 보안상의 이유로 좋은 생각이지만 Stackoverflow와 같은 웹 사이트에는 이전 코드와 커넥터가 새 버전의 데이터베이스에 연결할 수 없다고 한탄하는 게시물이 더 많이 있을 것입니다.

8.1에는 데이터를 사용자 변수로 출력할 수 있는 EXPLAIN FORMAT=JSON이 있습니다. 이는 쿼리 튜닝 및 성능 감사를 추적하는 데 유용할 수 있습니다.

SQL > EXPLAIN FORMAT=JSON INTO @myvar SELECT * FROM City WHERE District='Texas';
Query OK, 0 rows affected (0.0043 sec)
SQL > SELECT @myvarG
*************************** 1. row ***************************
@myvar: {
"query_block": {
  "select_id": 1,
  "cost_info": {
   "query_cost": "428.50"
  },
  "table": {
    "table_name": "City",
    "access_type": "ALL",
    "rows_examined_per_scan": 4035,
    "rows_produced_per_join": 403,
    "filtered": "10.00",
    "cost_info": {
      "read_cost": "388.15",
      "eval_cost": "40.35",
      "prefix_cost": "428.50",
     "data_read_per_join": "97K"
    },
   "used_columns": [
      "ID",
      "Name",
      "CountryCode",
      "District",
      "Population"
    ],
    "attached_condition": "(`world`.`city`.`District` = 'Texas')"
   }
}
}
1 row in set (0.0008 sec)

쿼리 주석은 더 이상 제거되지 않습니다.

SOURE_RETRY_COUNT의 기본값은 이제 CHANGE_SOURCE_REPLICATION_TO의 경우 10입니다. 

이는 기본적으로 SOURCE_CONNECT_RETRY가 기본값 60인 경우 복제본이 시간 초과 및 장애 조치 전에 60초 간격으로 10분 동안 재연결을 시도함을 의미합니다.

새 기본 항목을 선택하기 전에 GROUP_REPLICATION_SET_AS_PRIMRY group_replication_set_as_primary() 함수는 이제 모든 트랜잭션이 완료될 때까지 ALTER TABLE과 같은 진행 중인 DDL 문을 기다립니다. 명령문에는 ALTER TABLE, ANALYZE TABLE, CACHE INDEX, CHECK TABLE, CREATE INDEX, CREATE TABLE, DROP INDEX, LOAD INDEX, OPTIMIZE TABLE, REPAIR TABLE, TRUNCATE TABLE, DROP TABLE 및 열린 커서가 포함됩니다. 서버에 장애가 있는 동안 할 일이 많은 것 같지만 데이터를 더 나은 상태로 저장해야 합니다.

의심스러운 그룹 복제 서버가 나타나고 있습니까? 새 MEMBER_FAILURE_SUSPICIONS_COUNT 열이 성능 스키마 replication_group_communication_information 테이블에 추가되었습니다. 이 열의 내용은 키가 그룹 구성원 ID이고 값이 그룹 구성원이 의심되는 횟수인 JSON 배열로 형식화됩니다. 수상한 서버?

네트워크 불안정의 진단 및 문제 해결을 개선하기 위해 그룹 복제에 몇 가지 새로운 상태 변수가 추가되어 각 그룹 구성원에 대한 네트워크 사용, 제어 메시지 및 데이터 메시지에 대한 통계를 제공합니다. 이것은 매우 편리할 것입니다.

8.1.0에서는 종료 시 MySQL 오류 로그에 기록되는 여러 가지 새로운 메시지를 도입하여 여기에 나열된 메시지를 포함하여 과도하게 긴 서버 종료 시 문제 해결을 지원합니다.

  • –initialize로 시작된 경우를 포함하여 MySQL 서버에 대한 시작 및 종료 로그 메시지입니다.
  • 플러그인 및 구성 요소에 대한 종료 단계의 시작 및 종료를 보여주는 로그 메시지입니다.
  • 연결 종료 단계에 대한 단계 시작 및 단계 종료 로그 메시지.
  • 강제로 연결이 끊어지고 잠재적으로 대기가 발생한 후에도 여전히 활성 상태인 스레드의 수와 ID를 표시하는 로그 메시지입니다.

Enterprise Linux 6(및 관련 glibc 2.12 일반), SUSE 12, Debian 10, MacOS 12, Ubuntu 18.04 및 20.04, Windows 10 및 Server 2012R2에 대한 지원이 중단되었습니다. 32비트 버전은 더 이상 빌드되지 않습니다.

디버그 모드가 활성화된 상태에서 서버를 빌드하면 선택에 대한 구문 분석 트리를 볼 수 있습니다. 이것은 생산용이 아닙니다.

서버 시작 옵션은 NULL일 수 없습니다. 지정할 필요가 없는 일부 옵션에 대해 설명서에 나열된 예외가 있습니다.

그리고 달러 기호로 시작하고 하나 이상의 달러 기호(첫 번째 기호 외에)를 포함하는 인용 부호가 없는 식별자를 사용하면 이제 구문 오류가 발생합니다.

결론

저는 장기 지원 에디션이라는 아이디어가 마음에 듭니다. 분기별 릴리스의 일부 조정에 너무 많은 사람들이 포착되었기 때문입니다. 이것은 프로덕션 환경에 안정성을 추가하고 많은 사람들의 삶을 더 단순하게 만듭니다.

8.1의 발표는 오랫동안 기대되어 왔으며 새로운 기능은 항상 흥미롭고 도움이 되기를 바랍니다. EOL 날짜까지 향후 몇 년 동안만 8.0이 버그 수정이 되는 것을 보는 것은 약간 씁쓸해 보입니다.