English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MySQL 업그레이드의 최고 전략

MySQL5.7신기능이 많이 추가되었습니다. 예를 들어 Online DDL, 다원 복제, 강화된 반동기 동기화, 테이블 공간 전송, sys 라이브러리, Group Replication 등이 있습니다. 최근에 마침내 MySQL을 업그레이드할 기회를 얻었습니다.5.7매우 기쁩니다.

MySQL 업그레이드의 개요

MySQL 업그레이드의 본질:

데이터 딕셔너리의 업그레이드

데이터 딕셔너리는 mysql, information_schema, performance_schema, sys schema입니다.

MySQL 업그레이드의 두 가지 방식:

in-place upgrade:

소 버전 업그레이드에 적합합니다.

즉: 현재 MySQL을 종료하고 현재 바이너리 파일이나 패키지를 대체한 후, 현재 데이터 디렉토리에서 MySQL을 다시 시작하고 mysql_upgrade를 실행합니다.

특징: 데이터 파일을 변경하지 않고 업그레이드 속도가 빨라지지만, 다른 운영 체제, 큰 버전 간에도 사용할 수 없습니다.5.5-->5.7)。

logical upgrade:

다른 운영 체제와의 MySQL 업그레이드, 큰 버전 간 업그레이드에 적합합니다.

즉: mysqldump 또는 mydumper를 사용하여 데이터를 가져오거나 내보내어 버전을 업그레이드합니다.

특징: 다른 운영 체제, 큰 버전 간에도 가능하지만, 업그레이드 속도가 느리며 애매함 문제가 많습니다.

업그레이드 전 준비:

먼저 백업을 준비하세요

새 버전의 변경 사항에 대한 정보를 이해하세요 (지원되지 않는 것이 무엇인지, 지원되지 않는 기능이 무엇인지)

공식 웹사이트의 general information-->what is new in mysql 5.7

업그레이드 주의사항:

새 버전이 중요한 변경 사항이 있는지 확인하세요

SQL mode의 변경 사항에 주의하세요

예를 들어: MySQL5.7에서 SQL mode가 변경되었습니다. 지원되지 않는 SQL mode에 대해 일부 SQL이 실행되지 않을 수 있으며, 이 경우 SQL mode를 비우고 실행한 후 SQL mode를 설정할 수 있습니다.

업그레이드가 성공하면, 비즈니스 SQL이 정상적으로 실행되는지 확인해야 합니다

프로그램 레이어가 모두 정상적으로 작동하는지 확인해야 합니다

원래 사용한 프로그램의 일부 내용이 새 버전 데이터베이스에서 지원되지 않을 수 있습니다. 예를 들어, 한 번에5.1을 사용하여 업그레이드를 수행했습니다4.0까지는 지원되지만,5.6PHP의 일부 함수는 지원되지 않습니다.

업그레이드가 완료된 후, 테스트할 때 실제 라인 버전과 동일한 프로그램을 사용하여 문제가 있는지 확인해야 합니다.

스토리지 엔진의 변경

예를 들어: 미래의5.8버전부터 myisam 엔진을 지원하지 않습니다.

문자셋의 애매함 문제에 주의하세요

다음은, in을 사용하여-place upgrade 방식으로 MySQL을5.6MySQL로 업그레이드5.7。

In-MySQL을 업그레이드하려면 place upgrade를 사용하세요

환경:

5.6.15 -->5.7.20

업그레이드 전 준비:

백업+새 버전의 변경 사항을 주의하세요
업그레이드 작업:

1와5.7의 소프트웨어 패키지를 다운로드하고 압축을 풀어야 합니다

# tar -xzvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
# ln -s mysql-5.7.20-linux-glibc2.12-x86_64 mysql5.7

2、현재 MySQL을 종료합니다(5.6)

# mysql -u root -p -S /data/mysql3308/mysql3308.sock --execute="SET GLOBAL innodb_fast_shutdown=0"
# mysqladmin -u root -p -S /data/mysql3308/mysql3308.sock shutdown

3、이진 파일을 대체합니다(5.7 대체 5.6)

# cd /usr/local
# mv mysql  mysql5.6
# mv mysql5.7 mysql

4、기존 데이터 디렉토리를 사용하여 MySQL을 시작합니다

# mysqld_safe --user=mysql --socket=/data/mysql3308/mysql3308.sock -p --skip-grant-tables --datadir=/data/mysql3308/data

5、모든 테이블이 현재 버전과 호환되는지 확인하고, 시스템 레퍼런스를 업데이트합니다

# mysql_upgrade -uroot -p -S /data/mysql3308/mysql3308.sock
주의: mysql_upgrade는 모든 데이터베이스의 모든 테이블이 현재의 새로운 버전과 호환되는지 확인하고, 시스템 레퍼런스를 업데이트하는 역할을 합니다.

6、재시작하여 시스템 테이블에 대한 변경사항이 적용되도록 보장합니다

# mysqld --defaults-file=/data/mysql3308/my3308.cnf &
# mysql -uroot -p -S /data/mysql3308/mysql3308.sock

그래서 업그레이드가 완료되었습니다.

문제: MySQL을 업그레이드할 때, 업그레이드가 실패하면 어떻게 합니까?

업그레이드를 수행할 때, 일반적으로 서브 레퍼런스를 생성하여 업그레이드를 수행합니다. 업그레이드가 실패하면 메인 레퍼런스에 영향을 미치지 않습니다. 업그레이드가 성공하면 테스트도 성공하면 다른 서브 레퍼런스도 점차 새로운 버전으로 업그레이드되고, 마지막으로 메인 레퍼런스를 오프라인으로 하여 새로운 메인 레퍼런스로 업그레이드된 서브 레퍼런스를 선택하여 메인 레퍼런스로 업그레이드합니다.

선언: 이 문서의 내용은 인터넷에서 수집되었으며, 저작권자는 모두입니다. 내용은 인터넷 사용자가 자발적으로 기여하고 업로드한 것이며, 이 사이트는 소유권을 가지지 않으며, 인공 편집되지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 위반이 의심되는 내용이 있으시면, notice#w로 이메일을 보내 주세요.3codebox.com(보고서를 작성할 때, #을 @으로 변경하여 보고하고, 관련 증거를 제공해 주세요. 확인되면, 이 사이트는 즉시 위반된 내용을 제거합니다。)

당신이 좋아할 만한 것