레이블이 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 mysqldecho "kill mysql"service mysqld stoprm -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/mysqlcp -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 mysqldservice mysqld stopcd /usr/local/src/mysql-5.5.39/make installcp -f /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldchown -R mysql.mysql /usr/local/mysqlservice 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 설치 yumservice mysqld stopservice mariadb stopln -fs /usr/local/mysql/data/ /var/lib/mysqlyum -y remove  mariadb  mariadb-devel mariadb-libs mariadb-server yum -y install mariadb  mariadb-devel mariadb-libs mariadb-server service mariadb startmysql_upgrade --password=pass

완벽하지 않음.

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