MySQL 데이터베이스 마이그레이션하는 방법
MariaDB 10.3.28(RackTables 0.21.4)에서 MySQL 8.0.40(RackTables 0.22.0)으로 마이그레이션하는 방법입니다.
기존 시스템 백업(필수)
데이터베이스 백업
- mysqldump를 사용하여 MariaDB 데이터베이스를 백업합니다. 모든 테이블과 데이터를 포함하는 전체 백업을 수행하는 것이 좋습니다.
mysqlpump -u [사용자명] -p[비밀번호] [원본_데이터베이스명] > backup.sql
mysqldump -u root -p'your_mariadb_password' racktables_db > racktables_db_backup.sql
RackTables 파일 백업
- RackTables 설치 디렉터리 전체를 백업합니다.
tar -czf racktables_files_backup.tar.gz /path/to/racktables
스키마 직접 비교
스키마 덤프 생성
- RackTables 0.21.4 스키마 덤프
mysqldump -u root -p racktables_db --no-data > schema_0.21.4.sql
- RackTables 0.22.0 스키마 덤프
mysqldump -u root -p racktablesdb --no-data > schema_0.22.0.sql
비교
colordiff schema_0.21.4.sql schema_0.22.0.sql
데이터베이스 사용자 이름 변경
sed -i.bak "s/DEFINER=\`racktables_user\`/DEFINER=\`racktables\`/g" schema_0.22.0.sql
1. 새 MySQL 서버에 RackTables 데이터베이스를 생성
문자 집합은 utf8mb4로 설정하는 것을 권장합니다. 콜레이션은 utf8mb4_unicode_ci를 권장합니다.
CREATE DATABASE racktablesdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2. 데이터베이스 복원
이전에 백업한 SQL 파일을 사용하여 새 MySQL 데이터베이스에 데이터를 복원합니다.
mysql -u [사용자명] -p[비밀번호] [대상_데이터베이스명] < backup.sql
mysql -u root -p'your_mysql_password' racktablesdb < racktables_db_backup.sql
3. 문자 집합 및 콜레이션 변경 (권장)
데이터 복원 후, 모든 테이블의 문자 집합과 콜레이션을 utf8mb4 및 utf8mb4_unicode_ci로 변경합니다.
ALTER DATABASE racktablesdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 모든 테이블에 대해 다음 쿼리 실행
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
4. RackTables 0.22.0 설치
5. SQL 모드 확인 및 설정
MySQL 서버의 SQL 모드를 확인합니다.
SELECT @@GLOBAL.sql_mode;
ONLY_FULL_GROUP_BY 모드가 활성화되어 있다면, RackTables 애플리케이션에서 SQL 오류가 발생할 수 있습니다. 가능한 한 애플리케이션 코드를 수정하여 이 모드에 맞추는 것이 좋지만, 임시적으로 SQL 모드를 변경할 수도 있습니다.
- 권장하지 않음
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
애플리케이션 코드 수정이 어렵다면, MySQL 설정 파일 (my.cnf 또는 my.ini)에서 sql_mode 설정을 변경할 수 있습니다
6. RackTables 설정 파일 수정
RackTables 설정 파일 (inc/secret.php)을 수정하여 데이터베이스 연결 정보를 업데이트합니다.
7. 웹 서버 설정
웹 서버 (Apache, Nginx 등) 설정을 업데이트하여 RackTables 0.22.0을 서비스하도록 설정합니다.
upgrade.php 스크립트를 사용하여 RackTables 애플리케이션을 업그레이드
RackTables 업그레이드 디렉토리에서 upgrade.php를 실행하여 자동으로 스키마를 업그레이드합니다.
1. MariaDB에서 데이터베이스 덤프하기
MariaDB에서 MySQL로 데이터를 이동하기 위해, 먼저 mysqldump 명령어를 사용하여 MariaDB 데이터베이스를 덤프합니다.
mysqldump -u root -p racktables_db --single-transaction --routines --triggers --events --flush-logs > backup_mariadb_to_mysql.sql
2. MySQL로 데이터 복원하기
MySQL 8.0.40 서버에서 mysqldump로 생성한 SQL 덤프 파일을 복원합니다.
mysql -u root -p < backup_mariadb_to_mysql.sql
3. MariaDB에서 MySQL로 사용자 권한 이동
MySQL과 MariaDB의 권한 시스템은 다를 수 있습니다. 따라서 GRANT 명령어를 통해 사용자 권한을 새로 설정해야 할 수도 있습니다. 예를 들어, MySQL에서 racktables 사용자 권한을 재설정합니다.
GRANT ALL PRIVILEGES ON racktablesdb.* TO 'racktables'@'localhost' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
4. RackTables 애플리케이션 업그레이드(upgrade.php 스크립트 실행)
RackTables의 새로운 버전인 RackTables-0.22.0으로 업그레이드해야 합니다.
ls -l /usr/share/nginx/RackTables-0.22.0/wwwroot/inc/upgrade.php
5. 업그레이드 스크립트 실행
RackTables 애플리케이션 업그레이드를 위한 upgrade.php 스크립트를 실행합니다. 이 스크립트는 기존 데이터베이스를 새로운 버전에 맞게 업그레이드하는 데 사용됩니다.
upgrade.php 스크립트를 실행하려면 웹 브라우저에서 http://your-server-ip/racktables/inc/upgrade.php로 접속합니다.
https://racktables.scbyun.com/racktables/inc/upgrade.php
업그레이드 프로세스를 따라가며 지침을 따릅니다.
6. MySQL 서버 구성
업그레이드가 완료되면 MySQL 8.0.40에서 적절한 성능과 호환성을 보장하기 위해 몇 가지 서버 설정을 변경할 수 있습니다. 예를 들어, my.cnf 파일에서 다음과 같은 설정을 확인하고 최적화합니다.
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
RackTables UI에 접속하여 데이터 무결성을 확인하고, 기능 테스트를 통해 정상 작동 여부를 확인합니다.
RackTables는 upgrade.php를 통해 이를 자동으로 처리하도록 설계되어 있습니다.
'리눅스' 카테고리의 다른 글
우분투에서 RackTables를 설치하는 방법 (0) | 2025.01.18 |
---|---|
우분투에서 Logrotate를 설정하는 방법 (0) | 2025.01.18 |
우분투에서 python 명령어를 사용할 수 있도록 설정하는 방법 (0) | 2025.01.17 |
Docker 이미지를 효율적으로 빌드하기 위한 방법 (0) | 2025.01.17 |
sort 명령어 (0) | 2025.01.16 |