이 튜토리얼에서는 공식 MyBB Importer 스크립트를 사용하여 MyBB 포럼을
플랫폼으로 마이그레이션하는 방법을 배웁니다.
마이그레이션 가능한 항목
- 카테고리
- 루트 카테고리 => 루트 카테고리
- 하위 카테고리 => 하위 카테고리
- 루트 포럼 => 하위 카테고리
- 하위 포럼 => 하위 카테고리
- 스레드 및 답변 => 토픽 및 게시물
- 사용자
- 사용자 이름
- 이메일
- 권한 상태
- 가입 상태
- 리다이렉트
우리의 계획은 매우 간단합니다:
- 로컬 DEV 환경 설정.
- 프로덕션 데이터베이스 내보내기.
- Discourse로 프로덕션 데이터베이스 가져오기.
- MyBB importer 스크립트 실행.
시작해 보겠습니다 ![]()
로컬 DEV 환경 설정
우선, 다음 가이드 중 하나를 따라 Discourse 플랫폼 자체를 설치해야 합니다. 문제가 발생하면 이 가이드를 참조하세요.
MySQL 데이터베이스 서버를 설치합니다;
MacOS:
$ brew install mysql@5.7
$ echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
서비스 상태를 확인합니다:
$ brew services list
다음과 같은 내용이 표시되어야 합니다:
mysql@5.7 started
그렇지 않다면, 다음을 실행하고 다시 시도하세요:
$ brew services start mysql@5.7
Ubuntu 18.04:
$ sudo apt update
$ sudo apt install mysql-server -y
MySQL 설치가 완료된 후, 그 상태를 확인합니다:
$ systemctl status mysql.service
실행 중이 아니라면, 다음을 실행하세요:
$ sudo systemctl start mysql
Windows의 경우, 공식 설치 가이드를 따를 수 있습니다.
이 환경을 Discourse 서버라고 부를 것입니다.
프로덕션 데이터베이스 내보내기
다음 명령을 실행하여 프로덕션 데이터베이스(MyBB 프로덕션 서버에서)를 내보내거나 백업합니다:
$ mysqldump -u USER_NAME -p DATABASE_NAME > mybb_dump.sql
- 이 데이터베이스 덤프를 Discourse 서버로 복사합니다.
![]()
scp또는rsync를 사용하여 데이터베이스를 복사할 수 있습니다.
Discourse로 프로덕션 데이터베이스 가져오기
Discourse 서버에서 데이터베이스를 생성합니다:
$ mysql -u root
DB 사용자가 비밀번호를 가지고 있다면,
mysql -u root -p를 사용해야 하며, 그런 다음 비밀번호를 입력해야 합니다.
mysql> CREATE DATABASE mybb;
다음 명령을 실행하여 데이터베이스가 성공적으로 생성되었는지 확인합니다:
mysql> SHOW DATABASES;
다음과 같은 내용이 표시되어야 합니다:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| mybb |
| sys |
+--------------------+
현재 mybb DB는 비어 있습니다. 다음 단계는 프로덕션 데이터베이스를 여기에 가져오는 것입니다.
$ mysql -u root mybb < mybb_dump.sql
나중에 테이블 접두사가 필요할 것입니다. 그러니 여기 있는 동안 이를 가져오겠습니다.
$ mysql -u root
mysql> USE mybb;
mysql> SHOW TABLES;
다음과 같은 내용이 표시됩니다:
+--------------------------+
| Tables_in_mybb |
+--------------------------+
| mybb_adminlog |
| mybb_adminoptions |
| mybb_adminsessions |
| mybb_adminviews |
| mybb_announcements |
| mybb_attachments |
| mybb_attachtypes |
| ...The rest of tables....|
+--------------------------+
```\n
출력이 보여주듯, 우리의 테이블 접두사는 `mybb_`입니다.
### MyBB Importer 스크립트 실행
- 먼저 importer의 종속성을 설치해 보겠습니다. *Discourse 서버*에서:
$ cd ~/discourse
$ echo “gem ‘mysql2’, require: false” >> Gemfile
$ bundle install
다음으로, 스크립트가 올바르게 실행되도록 구성해야 합니다. 다음을 셸에 복사하여 붙여넣으세요(필요한 경우 값을 변경):
export DB_HOST=“localhost”
export DB_NAME=“mybb”
export DB_PW=“”
export DB_USER=“root”
export TABLE_PREFIX=“mybb_”
스크립트를 구성하는 다른 옵션도 있습니다. `script/import_scripts/mybb.rb` 파일을 원하는 편집기로 열고, 이중 인용부호 안의 값을 필요에 맞게 변경하세요:
```ruby
DB_HOST ||= ENV['DB_HOST'] || "localhost"
DB_NAME ||= ENV['DB_NAME'] || "mybb"
DB_PW ||= ENV['DB_PW'] || ""
DB_USER ||= ENV['DB_USER'] || "root"
TABLE_PREFIX ||= ENV['TABLE_PREFIX'] || "mybb_"
깨끗한 Discourse 인스턴스로 importer를 실행합니다:
$ bundle exec rails db:drop
$ bundle exec rails db:create
$ bundle exec rails db:migrate
$ bundle exec ruby script/import_scripts/mybb.rb
importer는 MySQL 서버에 연결하여 MyBB 데이터베이스를 Discourse 데이터베이스로 마이그레이션합니다.
importer가 완료되면, 다음을 실행하여 Discourse 인스턴스를 시작합니다:
$ bundle exec rails server
다음으로, 마이그레이션된 데이터를 처리하기 위해 Sidekiq(백그라운드 작업 프로세서)를 시작합니다:
$ bundle exec sidekiq
![]()
http://localhost:3000/sidekiq/queues에서 sidekiq 진행 상황을 모니터링할 수 있습니다.
이 튜토리얼을 따라 Discourse 프로덕션 서버를 설정합니다.
이 튜토리얼을 따라 Discourse 플랫폼(로컬 Discourse Server)에 대한 백업을 수행하고, 이를 Discourse 프로덕션 서버에 업로드합니다.
![]()
과정에 대해 질문이 있으시면 기꺼이 도와드리겠습니다.
행복한 마이그레이션 되세요 ![]()
