이 내용은 sqlite 로 운영되던 mediawiki 의 1.20(구형버전)을 1.29 버전으로 올리면서 일어난 일에 대한 간단한 메모입니다.
- 내가 원래 쓰던 wiki db 는 sqlite
- 최근에 php 의 버전을 올림에 따라 mediawiki 의 버전을 올려야할 필요성이 생겼다
- mediawiki 를 올렸다. 일단 mediawiki 의 버전을 먼저 올렸으며 mediawiki 가 급한대로 동작하는걸 확인.
- 몇가지 자잘한 문제가 생겼는데.. 대개는 해결이 가능했으나 sqlite 의 성능문제로 한계에 다다르기 시작했다. wiki 페이지를 몇번정도 refresh 하면 db 에러가 발생.
- 그걸 해결하고자 하였으나 그 과정에서 sqlite db schema 가 꼬임..(오노)
- 몇가지 원인은 있었으나 sqlite 를 mysql 로 바꾸기로 결정. 이에 upgrade 가 끝난 기존의 mediawiki 는 mediawiki_sqlite 등으로 이름을 변경하고 mediawiki 를 mysql 버전으로 다시 신규설치
- mediawiki 의 기능중 하나인 dumpBackup.php / importDump.php 로 해결을 보려 했으나 완벽하게는 처리가 안됨. 페이지의 image 정보 부분을 제대로 가져오지 못함. 그리고 importDump.php 는 wiki 페이지 숫자에 비례해서 시간이 꽤 걸리니 반드시 참고할것. 3000 페이지 가량의 wiki 를 Import 할 때 걸리는 시간은 대략 3시간…..(물론 서버가 좀 구리기는…-.-)
- sqlite 와 mysql 버전의 해당 db table 의 schema 를 분석하고 별 이상이 없겠다 싶어서 sqlite 에서 해당되는 테이블을 추적해서 sql 형태로 dump 을 떠냄. 이렇게 sqlite 에서 dump 된 sql 은 상단 부분에 잡다한 부분이 있으니 그 부분은 손으로 걷어내 주어야함
- 물론 dump 뜬 sql 을 mysql db 에 넣음. 두줄정도? 에러가 발생했으나.. 그정도는 손으로 잡을 수 있음
- 신규 mediawiki 의 메인페이지는 importDump.php 로 복구가 되지 않음. 때문에 이전의 old wiki 에서 메인페이지는 손으로 직접 옮겨주는 센스!
- 몇가지 템플릿을 비롯해서 정상 동작할 수 있도록 mediawiki 의 조정을 마무리
- 기존에 mediawiki 를 올리면서 동작이 되지 않았던 syntexhighlight_geshi 플러그인까지 정상동작하게 작업. 이 부분은 해당 플러그인의 pygmentize 부분을 참조할것
- 작업이 다 끝나면 mediawki 의 index 를 다시 잡아주는 일을 잊지 말것.
- mediawiki 의 mysql 버전 기본설치가 끝났을때 mysql 을 백업받는걸 잊지 마세요. 그래야 작업을 실패했을 때 이후 복구가 빨라집니다.
아울러 사용했던 명령어중에 중요한 부분을 메모삼아 남겨놓습니다.
- mysqldump -u사용자이름 -p비밀번호 mysqlDB이름 > db_backup_default.sql
- nice -19 php maintenance/importDump.php –report –uploads < ~/덤프XML파일이름.xml
- sqlite3 sqlite3DB이름.sqlite ‘.dump image’ > dump_image_table_fromsqlite.sql
- php maintenance/update.php –quick
- nice -19 php maintenance/rebuildall.php
- php maintenance/initSiteStats.php –update