반응형
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을 서비스하도록 설정합니다.
728x90
반응형
'리눅스' 카테고리의 다른 글
GitHub Actions 워크플로우에서 변수를 사용하는 방법 (0) | 2025.01.19 |
---|---|
Docker 실험적 기능(Docker Experimental Features) (0) | 2025.01.19 |
우분투에서 RackTables를 설치하는 방법 (1) | 2025.01.18 |
우분투에서 Logrotate를 설정하는 방법 (0) | 2025.01.18 |
우분투에서 python 명령어를 사용할 수 있도록 설정하는 방법 (0) | 2025.01.17 |