전산쟁이의 기억노트

mysql to mariadb 업그레이드 수행 본문

mysql&mariadb

mysql to mariadb 업그레이드 수행

잘나가는전산쟁이 2022. 10. 21. 16:51
728x90
반응형
SMALL

사전사항

  1. Centos6버전에서 사용할 수 있는 Mariadb는 Mariadb 10.5.16버전이 사용할 수 있는 최고 높은 버전(이후 버전은 glibc버전에 종속되어서 설치가 안됨)
  2. Cnetos7 / Rocky8버전에서는 Mariadb 10.6, 10.7버전 설치 가능 (OS교체까지 이루어지는 경우, 10.6이상으로 설치 / 운영하면 됨), 다만 업그레이드 plan은 Mariadb + Galera Cluster + Keepalived 구조가 아닌 Mariadb +  Replication + Mysql-MMM 구조로 유지
  3. Mariadb 10.0버전에서 gtid값에 slave pos를 저장하는 기능이 추가되었는데, gtid값을 이용해 리플리케이션 슬레이브모드에서 에러가 발생해도 sync할수 있도록 위치를 저장하는 테이블
    이 기존 mysql과는 다른 스키마로 되어 있어서 warning 메시지가 출력되기 때문에 추가 조치가 필요

작업절차

  1. DB#2에서 리플리케이션 중지
     
  2. mysql> stop slave; Query OK, 0 rows affected (0.007 sec)
  3. mysql-mmm-agent / mysql 프로세스 중지
     
  4. $> /etc/init.d/mysql-mmm-agent sotp $> /etc/init.d/mysqld stop
  5. DB데이터, DB엔진 데이터 백업
     
  6. $> mv /usr/local/mysql /usr/local/mysql_ori $> mv /home/data/mysql /home/data/mysql_ori
  7. Mariadb 엔진설치
     
  8. $> tar -zxvf mariadb-10.5.16-linux-x86_64.tar.gz -C /usr/local/ $> cd /usr/local/mariadb-10.5.16-linux-x86_64/ /usr/local/mysql $> cd /usr/local/mysql $> ./support-files/mysql.server start
  9. DB데이터 업그레이드
     
  10. $> cd /usr/local/mysql $> ./mysql_upgrade -u root -p Enter password: MariaDB upgrade detected Phase 1/7: Checking and upgrading mysql database Processing databases mysql mysql.columns_priv OK mysql.db OK mysql.event OK mysql.func OK ... mysql.user OK Upgrading from a version before MariaDB-10.1 Phase 2/7: Installing used storage engines Checking for tables with unknown storage engine Phase 3/7: Fixing views from mysql Phase 4/7: Running 'mysql_fix_privilege_tables' Phase 5/7: Fixing table and database names Phase 6/7: Checking and upgrading tables Processing databases ... information_schema performance_schema Phase 7/7: Running 'FLUSH PRIVILEGES' OK
  11. 리플리케이션 재구성을 위한 테이블 정보 수정
    1. 리플리케이션 오류메시지 출력 확인
       
    2. mysql> show slave status \G; *************************** 1. row *************************** ... Slave_IO_Running: Yes Slave_SQL_Running: Yes ... Last_Errno: 1146 Last_Error: Unable to load replication GTID slave state from mysql.gtid_slave_pos: Table 'mysql.gtid_slave_pos' doesn't exist Skip_Counter: 0 ... Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 1146 Last_SQL_Error: Unable to load replication GTID slave state from mysql.gtid_slave_pos: Table 'mysql.gtid_slave_pos' doesn't exist Replicate_Ignore_Server_Ids: Master_Server_Id: 101 Master_SSL_Crl: Master_SSL_Crlpath: Using_Gtid: No Gtid_IO_Pos: Replicate_Do_Domain_Ids: Replicate_Ignore_Domain_Ids: Parallel_Mode: optimistic SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Slave_DDL_Groups: 0 Slave_Non_Transactional_Groups: 0 Slave_Transactional_Groups: 0 1 row in set (0.000 sec) ERROR: No query specified
    3. slave 중지
       
    4. mysql> stop slave; Query OK, 0 rows affected (0.007 sec)
    5. gtid테이블 form 파일 삭제
       
    6. $> rm -rf /home/data/mysql/mysql/gtid*
    7. gtid 테이블 재생성
       
    8. mysql> CREATE TABLE `gtid_slave_pos` ( `domain_id` int(10) unsigned NOT NULL, `sub_id` bigint(20) unsigned NOT NULL, `server_id` int(10) unsigned NOT NULL, `seq_no` bigint(20) unsigned NOT NULL, PRIMARY KEY (`domain_id`,`sub_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Replication slave GTID state';
    9. slave 시작 후 리플리케이션 오류 수정 확인
       
    10. mysql> start slave; Query OK, 0 rows affected (0.007 sec) MariaDB [mysql]> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event ... Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 976074661 Relay_Log_Space: 5142886 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 101 Master_SSL_Crl: Master_SSL_Crlpath: Using_Gtid: No Gtid_IO_Pos: Replicate_Do_Domain_Ids: Replicate_Ignore_Domain_Ids: Parallel_Mode: optimistic SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Slave_DDL_Groups: 0 Slave_Non_Transactional_Groups: 0 Slave_Transactional_Groups: 0 1 row in set (0.000 sec)
  12. DB#1에서도 동일한 절차 반복 수행

 

참조

http://igoni.kr/books/dbms/page/mysql-to-mariadb

 

mysql to mariadb 업그레이드 수행 | igoni.kr

사전사항 Centos6버전에서 사용할 수 있는 Mariadb는 Mariadb 10.5.16버전이 사용할 수 있는 최고 높은...

igoni.kr

 

728x90
반응형
LIST

'mysql&mariadb' 카테고리의 다른 글

corosync / pacemaker 기반의 DB이중화  (0) 2022.08.01
mytop 설치하기  (0) 2022.08.01
mysqlcheck 유틸리티 사용법  (0) 2022.08.01
mysql에서 binlog 삭제  (0) 2022.08.01
mysql utf8설정  (0) 2022.08.01
Comments