M2(Mac)용 VMWare로 가상화 만들기 - (6) In-place upgrade

2024. 2. 27. 23:17MySQL/Class

반응형

# mysql의 basedir 을 교체하여 업그레이드 하는 방법이 있습니다. 이러한 방법을 In-place upgrade 라고 합니다.

저는 현재 버전이 8.0.33 이라, 상위 버전이 얼마 있지 않아, 8.0.35 버전으로 업그레이드를 진행하도록 하여, In-place upgrade가 무엇이지를 알아 보겠습니다.

 

# 만약 5.5 버전에서 8.0으로 업그레이드를 해야 한다면, 5.5->5.6->5.7->8.0 방식으로 안정성을 위해 한 단계씩 업그레이드를 해야한다고 합니다. 그러나 5.5 에서 5.7로 바로 넘어갈 수도 있다는 것도 참고해 두시면 좋겠죠.

 

1. 현재 버전

 

2. 다운로드

 

 - OS에 맞는 필요한 버전을 다운 받아주세요. 저는 Mac 버전인 aarc;h64 버전을 다운 받았습니다.

https://downloads.mysql.com/archives/community/

 

MySQL :: Download MySQL Community Server (Archived Versions)

Please note that these are old versions. New releases will have recent bug fixes and features! To download the latest release of MySQL Community Server, please visit MySQL Downloads. MySQL open source software is provided under the GPL License.

downloads.mysql.com

 

3. 압축풀기 & 파일 권한

- 압축을 풀어보니 3개의 파일의 또다른 압축 파일이 존재하네요.

- 여기서 우리가 필요한 것은 mysql-8.0.35-linux-glibc2.28-aarch64.tar.xz 입니다.

# mysql-8.0.35-linux-glibc2.28-aarch64.tar.xz 압축 풀기

tar -xvf mysql-8.0.35-linux-glibc2.28-aarch64.tar.xz -C /mysql/local/.

압축 풀기 화면

# 권한 변경

[root@test03 local]# cd /mysql/local/
[root@test03 local]# ls -ltr
합계 0
drwxr-xr-x. 10 mysql mysql 141 12월 25 23:36 mysql_8033
drwxr-xr-x.  9 root  root  129  2월 27 21:53 mysql_8035
[root@test03 local]# chown -R mysql:mysql mysql_8035
[root@test03 local]# ls -ltr
합계 0
drwxr-xr-x. 10 mysql mysql 141 12월 25 23:36 mysql_8033
drwxr-xr-x.  9 mysql mysql 129  2월 27 21:53 mysql_8035

 

4. shutdown

# 이중화가 된 서버라면
mysql> show replica status;
mysql> stop replica;

# 인스턴스 종료
mysql> exit
Bye
[root@test03 ]# mysql.server stop
Shutting down MySQL. SUCCESS!

 

5. my.cnf & mysql.server 복사 및 수정

 # 구동했던 기존 버전 파일을 복사해서 필요한 부분만 수정을 하겠습니다.

# my.cnf
[root@test03 ]# cp /etc/my_8033.cnf /etc/my_8035.cnf

# mysql.server
[root@test03 ]# mv /usr/bin/mysql.server /usr/bin/mysql_8033.server
[root@test03 ]# cp /usr/bin/mysql_8033.server /usr/bin/mysql.server

- 위 파일 내용의 설명은 여기를 참고해주세요.

 

# 수정된 내용

# my.cnf
basedir = /mysql/local/mysql_8035
socket  = /tmp/mysql_8035.sock

# mysql.server
basedir=/mysql/local/mysql_8035
mysqld_pid_file_path=/data/mysql_data/mysqld_8035.pid
$bindir/mysqld_safe --defaults-extra-file=/etc/my_8035.cnf --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &

 

6. MySQL 8.0.35 시작

[root@test03 local]# mysql.server start
Starting MySQL.. SUCCESS!

mysql.log

 - 만약 5.x 에서 8.0 으로 업그레이드를 할 경우, 로그정보에는 my.cnf에서 기존 사용되던 파라미터 값들이 deprecated 된 경우가 많아, warning 또는 Error가 나올 것입니다. 로그를 꼼꼼히 확인하여, 제거하거나 대체 파라미터를 찾아 수정을 해주시면 됩니다.

 

7. upgrade

 (1) MySQL 8.0.16 미만에서는 다음과 같은 작업을 해줘야합니다. 

[root@test03 bin]# ./mysql_upgrade -uroot -p -S /tmp/mysql_8035.sock

 

 - 만약 8.0.16 상위 버전에서 이 작업을 실행했다면 다음과 같은 문구를 보여줍니다. --upgrade 옵션을 사용하라고 나옵니다.

종료가 됐다는 메세지를 보여준다.

 

(2) 저는 8.0.35 버전이기 때문에 mysqld --upgrade 를 사용해야합니다.

# --upgrade 옵션에는 MINIMAL, FORCE, NONE 이 존재합니다. 3가지 모두 필요에 의해 사용되고 있겠지만 해당 옵션값을 사용한다면 업그레이드를 하는 의미가 없지 않을까 생각됩니다. 

 - FORCE : 업그레이드를 강제로 시킴.(안정성을 위해 추천하지 않습니다.)

 - NONE : 업그레이드를 안함.

 - MINIMAL : 최소 업그레이드 진행(허용된 기능이 제한적이라, 기능을 제대로 사용 못할 수가 있습니다.)

 

# 앞서 우리는 mysql.server 를 실행하여 인스턴스를 실행시켰습니다. mysql.server를 열어보면 mysqld_safe 를 실행 시키는 부분이 있습니다. 이 부분에 --upgrade의 옵션을 넣어주면 내가 선택한 옵션으로 계속 구동이 될 것이지만, 저는 해당 옵션을 넣지 않았기 때문에자동으로 업그레이드 진행했다고 볼 수 있을 것 같습니다.(추측)

mysqld_safe --default-extra_file=/etc/my.cnf..........

 

# 초기 인스턴스 실행했을 때 mysql.log 를 보면 아래와 같은 문구가 보이는데, 이것은 업그레이드를 자동으로 했다는 것을 말하는게 아닐까 생각됩니다.

저는 버전 차이가 얼마 나지 않아서 내용이 빈약할 수 있겠으나, 5.x에서 8.0으로 넘어갔을때는 좀더 많은 내용이 출력되지 않을까 생각합니다.

8033 에서 8055로 업그레이드 함.

 

8. mysqlcheck

 - 마지막으로 mysqllcheck를 통하여 업그레이드가 문제없이 진행되었는지 확인을 해보겠습니다.

./mysqlcheck -u root -p --all-databases --check-upgrade -S/tmp/mysql_8035.sock

문제 없이 정상적으로 업그레이드가 되었다.

 

업그레이드 된 버전 확인

 

# In-place upgrade 에 대해서 알아보았습니다. dump를 이용한 업그레이드 방식에 대해 알고 싶으시면 여기를 누르세요.

 

 

반응형