Loading...
MySQL 9.5 Reference Manual 9.5의 3.7 Upgrading MySQL Binary or Package-based Installations on Unix/Linux의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
이 섹션에서는 Unix/Linux에서 MySQL 바이너리 및 패키지 기반 설치를 업그레이드하는 방법을 설명합니다. 인플레이스 및 논리적 업그레이드 방법을 설명합니다.
인플레이스 업그레이드는 기존 MySQL 서버를 중지하고, 기존 MySQL 바이너리 또는 패키지를 새로운 것으로 교체한 뒤, 기존 데이터 디렉터리에서 MySQL을 다시 시작하고, 업그레이드가 필요한 기존 설치의 나머지 부분을 업그레이드하는 작업을 포함합니다. 무엇을 업그레이드해야 할 수 있는지에 대한 자세한 내용은 Section 3.4, “What the MySQL Upgrade Process Upgrades”를 참조하십시오.
참고
여러 RPM 패키지를 설치하여 생성된 설치를 업그레이드하는 경우, 일부만이 아니라 모든 패키지를 업그레이드해야 합니다. 예를 들어, 이전에 서버 및 클라이언트 RPM을 설치한 경우, 서버 RPM만 업그레이드하지 마십시오.
일부 Linux 플랫폼에서, RPM 또는 Debian 패키지로 MySQL을 설치하면 MySQL 서버 시작 및 종료를 관리하기 위한 systemd 지원이 포함됩니다. 이러한 플랫폼에서는 mysqld_safe가 설치되지 않습니다. 이런 경우에는, 다음 지침에서 사용되는 방법 대신 서버 시작과 종료에 systemd를 사용하십시오. Section 2.5.9, “Managing MySQL Server with systemd”를 참조하십시오.
MySQL Cluster 설치로 업그레이드하는 경우에는 MySQL Cluster Upgrade도 참조하십시오.
인플레이스 업그레이드를 수행하려면:
Section 3.1, “Before You Begin”의 정보를 검토합니다.
Section 3.6, “Preparing Your Installation for Upgrade”에 설명된 예비 점검을 완료하여 설치가 업그레이드 준비가 되어 있는지 확인합니다.
InnoDB에서 XA 트랜잭션을 사용하는 경우,
업그레이드 전에 XA RECOVER를 실행하여
커밋되지 않은 XA 트랜잭션이 있는지 확인합니다. 결과가 반환되면,
XA COMMIT 또는
XA ROLLBACK statement를 실행하여
XA 트랜잭션을 커밋하거나 롤백하십시오.
일반적으로 MySQL 서버를
innodb_fast_shutdown을
2(cold shutdown)로 설정하여
실행하는 경우, 다음 statement 중 하나를 실행하여
fast 또는 slow shutdown을 수행하도록 설정합니다:
1SET GLOBAL innodb_fast_shutdown = 1; -- fast shutdown 2SET GLOBAL innodb_fast_shutdown = 0; -- slow shutdown
fast 또는 slow shutdown의 경우, `InnoDB`는
릴리스 간 파일 포맷 차이를 처리할 수 있는 상태로
undo 로그와 데이터 파일을 남겨 둡니다.
5. 기존 MySQL 서버를 종료합니다. 예를 들면 다음과 같습니다:
1mysqladmin -u root -p shutdown
MySQL 바이너리 또는 패키지를 업그레이드합니다. 바이너리 설치를 업그레이드하는 경우, 새로운 MySQL 바이너리 디스트리뷰션 패키지의 압축을 풉니다. Obtain and Unpack the Distribution을 참조하십시오. 패키지 기반 설치의 경우, 새 패키지를 설치합니다.
기존 데이터 디렉터리를 사용하여 MySQL 9.5 서버를 시작합니다. 예를 들면 다음과 같습니다:
1mysqld_safe --user=mysql --datadir=/path/to/existing-datadir &
암호화된 `InnoDB`
테이블스페이스가 있는 경우,
키링 플러그인을 로드하기 위해
[`--early-plugin-load`](https://dev.mysql.com/doc/refman/9.5/en/server-options.html#option_mysqld_early-plugin-load) 옵션을
사용합니다.
참고
--early-plugin-load
서버 시작 옵션은 deprecated되었으며,
향후 MySQL 버전에서 제거될 수 있습니다. 자세한 내용은
이 옵션에 대한 설명을 참조하십시오.
MySQL 9.5 서버를 시작하면
데이터 딕셔너리 테이블이 존재하는지 자동으로 감지합니다.
존재하지 않으면, 서버는 데이터 디렉터리에
이를 생성하고 메타데이터로 채운 다음
정상적인 시작 시퀀스를 진행합니다. 이 과정에서
서버는 데이터베이스, 테이블스페이스, 시스템 및 유저 테이블, 뷰,
저장 프로그램(스토어드 프로시저 및 함수, 트리거,
Event Scheduler 이벤트)을 포함한 모든 데이터베이스 객체의
메타데이터를 업그레이드합니다. 또한 이전에
메타데이터 저장에 사용되던 파일을 제거합니다. 예를 들어,
MySQL 9.4에서 MySQL
9.5로 업그레이드한 후에는
테이블에 더 이상 `.frm` 파일이
없다는 것을 알 수 있습니다.
이 단계가 실패하면, 서버는 데이터 디렉터리에 대한
모든 변경 사항을 되돌립니다. 이 경우, 모든 redo 로그
파일을 제거하고, 동일한 데이터 디렉터리에서
MySQL 9.4 서버를 시작한 후 오류의 원인을 수정해야
합니다. 그런 다음 9.4 서버를 다시 slow shutdown한 후,
MySQL 9.5 서버를 시작하여
다시 시도하십시오.
8. 이전 단계에서, 서버는 필요한 경우 데이터
딕셔너리를 업그레이드하여
MySQL 9.4와 MySQL 9.5 사이의
mysql 시스템 데이터베이스에 필요한 모든 변경을 수행하므로,
새로운 권한이나 기능을 사용할 수 있습니다.
또한 Performance Schema,
INFORMATION_SCHEMA, 및
sys 데이터베이스를 MySQL
9.5에 맞게 최신 상태로 만들고,
모든 유저 데이터베이스를 검사하여
현재 MySQL 버전과의 비호환성을 확인합니다.
참고
업그레이드 프로세스는 time zone 테이블의 내용을 업그레이드하지 않습니다. 업그레이드 지침은 Section 7.1.15, “MySQL Server Time Zone Support”를 참조하십시오.
논리적 업그레이드는 mysqldump와 같은 백업 또는 익스포트 유틸리티를 사용하여 기존 MySQL 인스턴스에서 SQL을 익스포트하고, 새 MySQL 서버를 설치한 후, 해당 SQL을 새로운 MySQL 인스턴스에 적용하는 작업을 포함합니다. 무엇을 업그레이드해야 할 수 있는지에 대한 자세한 내용은 Section 3.4, “What the MySQL Upgrade Process Upgrades”를 참조하십시오.
참고
일부 Linux 플랫폼에서, RPM 또는 Debian 패키지로 MySQL을 설치하면 MySQL 서버 시작 및 종료를 관리하기 위한 systemd 지원이 포함됩니다. 이러한 플랫폼에서는 mysqld_safe가 설치되지 않습니다. 이런 경우에는, 다음 지침에서 사용되는 방법 대신 서버 시작과 종료에 systemd를 사용하십시오. Section 2.5.9, “Managing MySQL Server with systemd”를 참조하십시오.
주의
이전 MySQL 릴리스에서 추출한 SQL을 새 MySQL 릴리스에 적용하면, 새로 도입되거나 변경·deprecated·제거된 기능 및 기능성으로 인한 비호환성 때문에 오류가 발생할 수 있습니다. 따라서, 이전 MySQL 릴리스에서 추출한 SQL은 논리적 업그레이드를 가능하게 하기 위해 수정을 필요로 할 수 있습니다.
최신 MySQL 9.5 릴리스로 업그레이드하기 전에 비호환성을 식별하려면, Section 3.6, “Preparing Your Installation for Upgrade”에 설명된 단계를 수행하십시오.
논리적 업그레이드를 수행하려면:
Section 3.1, “Before You Begin”의 정보를 검토합니다.
이전 MySQL 설치에서 기존 데이터를 익스포트합니다:
1mysqldump -u root -p \ 2 --add-drop-table --routines --events \ 3 --all-databases --force > data-for-upgrade.sql
참고
데이터베이스에 저장 프로그램이 포함되어 있는 경우,
위와 같이
mysqldump와 함께
--routines 및
--events 옵션을 사용하십시오.
--all-databases 옵션은
시스템 테이블을 보유한
mysql 데이터베이스를 포함하여
모든 데이터베이스를 덤프에 포함합니다.
주의
Generated column을 포함하는 테이블이 있는 경우,
덤프 파일을 생성하는 데
MySQL 5.7.9 이상에서 제공되는
mysqldump 유틸리티를 사용하십시오. 이전
릴리스에서 제공되는
mysqldump 유틸리티는
generated column 정의에 대해 올바르지 않은 구문을 사용합니다(Bug #20769542). Information
Schema COLUMNS 테이블을
사용하여 generated column이 있는 테이블을
식별할 수 있습니다.
1mysqladmin -u root -p shutdown
MySQL 9.5를 설치합니다. 설치 지침은 Chapter 2, Installing MySQL을 참조하십시오.
Section 2.9.1, “Initializing the Data Directory”에 설명된 대로 새 데이터 디렉터리를 초기화합니다. 예를 들면 다음과 같습니다:
1mysqld --initialize --datadir=/path/to/9.5-datadir
나중에 사용할 수 있도록 화면에 표시되거나
에러 로그에 기록된
임시 `'root'@'localhost'`
패스워드를 복사해 둡니다.
6. 새 데이터 디렉터리를 사용하여 MySQL 9.5 서버를 시작합니다. 예를 들면 다음과 같습니다:
1mysqld_safe --user=mysql --datadir=/path/to/9.5-datadir &
root 패스워드를 재설정합니다:1$> mysql -u root -p 2Enter password: **** <- enter temporary root password
1mysql> ALTER USER USER() IDENTIFIED BY 'your new password';
1mysql -u root -p --force < data-for-upgrade.sql
참고
서버에서 GTID가 활성화되어 있는 경우
(gtid_mode=ON),
덤프 파일에 시스템 테이블이 포함되어 있다면
덤프 파일을 로드하는 것은 권장되지 않습니다.
mysqldump는
논리 로그 기반 MyISAM
스토리지 엔진을 사용하는 시스템 테이블에 대해
DML 명령을 실행하며,
이 조합은 GTID가 활성화되어 있을 때 허용되지 않습니다.
또한 GTID가 활성화된 서버에서 생성된 덤프 파일을
다른 GTID 활성화 서버에 로드하면,
서로 다른 트랜잭션 식별자가
생성된다는 점에 유의해야 합니다.
남은 업그레이드 작업을 수행합니다:
서버를 종료한 다음,
나머지 업그레이드 작업을 수행하기 위해
--upgrade=FORCE 옵션을 사용하여
다시 시작합니다:
1mysqladmin -u root -p shutdown 2mysqld_safe --user=mysql --datadir=/path/to/9.5-datadir --upgrade=FORCE &
[`--upgrade=FORCE`](https://dev.mysql.com/doc/refman/9.5/en/server-options.html#option_mysqld_upgrade)로
다시 시작하면, 서버는
MySQL 9.4와 MySQL
9.5 사이의 `mysql`
시스템 스키마에 필요한 변경을 수행하여
새로운 권한이나 기능성을 사용할 수 있도록 합니다.
또한 Performance
Schema, `INFORMATION_SCHEMA`, 및
`sys` 스키마를 MySQL
9.5에 맞게 최신 상태로 만들고,
모든 유저 스키마를 검사하여
현재 MySQL 버전과의 비호환성을 확인합니다.
참고
업그레이드 프로세스는 time zone 테이블의 내용을 업그레이드하지 않습니다. 업그레이드 지침은 Section 7.1.15, “MySQL Server Time Zone Support”를 참조하십시오.
이 섹션의 정보는 인플레이스 업그레이드 절차( In-Place Upgrade에 설명됨)에 대한 보충 자료로, MySQL Cluster를 업그레이드하는 경우에 사용합니다.
MySQL Cluster 업그레이드는 일반적인 롤링 업그레이드로 수행할 수 있으며, 통상적인 세 가지 순차 단계는 다음과 같습니다:
MGM 노드를 업그레이드합니다.
데이터 노드를 한 번에 하나씩 업그레이드합니다.
API 노드( MySQL 서버 포함)를 한 번에 하나씩 업그레이드합니다.
각 개별 mysqld를 업그레이드하려면 두 단계가
필요합니다:
데이터 딕셔너리를 임포트합니다.
데이터 딕셔너리는 업그레이드하되 시스템 테이블은
업그레이드하지 않도록
--upgrade=MINIMAL 옵션을 사용하여
새 서버를 시작합니다.
이 단계가 완료되려면 MySQL 서버가 NDB에
연결되어 있어야 합니다. NDB 또는
NDBINFO 테이블이 존재하고
서버가 클러스터에 연결할 수 없으면,
서버는 다음과 같은 오류 메시지와 함께 종료합니다:
1Failed to Populate DD tables.
--upgrade=MINIMAL 옵션 없이
다시 시작하여 시스템 테이블을 업그레이드합니다.3.6 Preparing Your Installation for Upgrade
3.8 Upgrading MySQL with the MySQL Yum Repository