레이블이 mariadb인 게시물을 표시합니다. 모든 게시물 표시
레이블이 mariadb인 게시물을 표시합니다. 모든 게시물 표시

2014년 9월 5일 금요일

Mysql 4.0 -> 마리아 5.5.37 마이그레이션


  1. mysql 4.0  dump

  2. mysql 4.1.22 업그레이드

  3. mysql 5.5 업그레이드

  4. 마리아 db 설치.


mysql 4.1 버젼에서 마리아db 로 변경하는 부분은 그냥 덮어 쓰면 됨.

문제는 mysql 4.0 에서 mysql 4.1 로 업그레이드 부분.

binary로 그냥 덮어써도 되지만,  field size 가 반으로 줄어 버리기 때문에 문제가 발생 할 수 있다고 함.

그래서 dump 파일을 생성 해서 써야 함.
mysqldump -u root -ppass --opt --quick --quote-names --all-databases > allBackup.sql

-opt 옵션은 문제가 없다면 쓰는 게 좋음. 백업, 복구 시간을 엄청 단축시킴.
-quote-name 옵션은 테이블 필드명 중, sql 쿼리명이 들어가 있어서 문제를 발생시켜 넣어줌.

restore 완료후에는 mysql_install_db 를 실행 시켜줌.

아래는 마이그레이션시 사용한 스크립트.
#!/usr/bin/bash

#mysql 4.1.22 설치
#killall mysqld
echo "kill mysql"
service mysqld stop
rm -rf /usr/local/mysql/

cd /usr/local/src/mysql-4.1.22/
make install #컴파일 되어 있음. 설치만 하면 됨.
/usr/local/mysql/bin/mysql_install_db
chown -R mysql.mysql /usr/local/mysql
cp -f /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
service mysqld start

#패스워드 설정
/usr/local/mysql/bin/mysqladmin password 'test01'

/usr/local/mysql/bin/mysql -uroot -ptest01 -e 'select now();' #그냥 확인용 or 복구 시간 확인.
#echo $?
#1 이면 제대로 안된거.

#덤프 복구시 필요. 안하면 에러남.
/usr/local/mysql/bin/mysql -uroot -ptest01 -e "set global max_allowed_packet=1000000000;"
/usr/local/mysql/bin/mysql -uroot -ptest01 -e "set global net_buffer_length=1000000;"
#--------------------------------------------------------------------------------------

echo "Start Restoring..."
#43번 dump 복구.
# --debug : 에러 확인용.
# -f 에러 무시 : 43번 덤프파일 duplication 에러남.
/usr/local/mysql/bin/mysql --debug -f -uroot -ptest01 < /usr/local/src/43_DB_ALL_20140820.sql

#설치시 나오는 duplication 정상.
#그외에 오류는 안 나야 됨.
#복구 끝나면 root 패스는 pass 이 됨.
#비교를 위해 test01로 설정.
/usr/local/mysql/bin/mysql -uroot -ptest01 -e 'select now();' #복구 시간 확인.
#--------------------------------------------------------------------------------------

#mysql 5.5.39 설치
#killall mysqld
service mysqld stop
cd /usr/local/src/mysql-5.5.39/
make install
cp -f /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chown -R mysql.mysql /usr/local/mysql
service mysqld start
#/usr/local/mysql/bin/mysql_fix_privilege_tables --password=pass
/usr/local/mysql/bin/mysql_upgrade --password=pass
/usr/local/mysql/bin/mysql -uroot -ppass -e 'select now();' #그냥 확인용.
chkconfig mariadb on

#마리아DB 설치 yum
service mysqld stop
service mariadb stop
ln -fs /usr/local/mysql/data/ /var/lib/mysql
yum -y remove mariadb mariadb-devel mariadb-libs mariadb-server
yum -y install mariadb mariadb-devel mariadb-libs mariadb-server
service mariadb start
mysql_upgrade --password=pass

완벽하지 않음.

마리아db 설치 완료 my.cnf 에 euckr 추가.
[mysqld]
...
#charset config
character-set-server=euckr
init_connect=SET collation_connection=euckr_korean_ci
init_connect=SET NAMES euckr
character-set-server=euckr
collation-server=euckr_korean_ci
...