MariaDB를 업그레이드 할 일이 생겼습니다.
기존에 M-S 형태로 사용하던 중 서버를 새로 구입하여 M-S-S 로 하드웨어 스펙업과 동시에 소프트웨어 버전도 업그레이드 하려고합니다.
서버 설치 후 백업데이터를 통한 업그레이드 까지 진행하였으며 11월 중에 라이브서비스를 이관 할 예정이네요
엔진 업그레이드시 별다른 문제는 없었지만 몇몇 옵션들이 더이상 사용되지 않는 것이 확인되었으며 로그의 warning 메세지를 통해 확인 후 설정을 제거하면 됩니다.
1. 환경
Version
OS : CentOS 7 to Rocky Linux 8
DB : MariaDB 10.2 to MariaDB 10.7
Server Setting
Old_DB : 172.16.1.11
MariaDB-M : 172.16.1.21
MariaDB-S1 : 172.16.1.22
MariaDB-S2 : 172.16.1.23
MariaDB Setting ( my.cnf 예시 )
[client] socket = /tmp/mysql.sock [mysqld] port = 3306 sql_mode = "" socket = /tmp/mysql.sock pid-file = /apps/mariadb/mysql_data/mysql.pid datadir = /apps/mariadb/mysql_data innodb_data_home_dir = /apps/mariadb/mysql_data innodb_log_group_home_dir = /apps/mariadb/mysql_data character-set-client-handshake = FALSE character-set-server = utf8 init_connect=SET collation_connection = utf8_general_ci init_connect = SET NAMES utf8 # Common Config interactive_timeout = 600 join_buffer_size = 2M max_allowed_packet = 128M max_heap_table_size = 1G tmp_table_size = 1G max_connections = 2048 read_buffer_size = 1M read_rnd_buffer_size = 1M sort_buffer_size = 1M max_length_for_sort_data = 1024 table_open_cache = 20000 wait_timeout = 30 open_files_limit = 65536 thread_pool_max_threads = 65536 max_connect_errors = 10000 thread_cache_size = 500 optimizer_search_depth = 12 transaction-isolation = READ-COMMITTED lower_case_table_names = 1 skip-external-locking skip-name-resolve skip-host-cache log-error=/apps/mariadb/mysql_data/mariadb-err.err ## Innodb config slow_query_log_file = /apps/mariadb/mysql_data/mysql-slow-query.log slow_query_log = 1 long_query_time = 3 log_warnings = 1 ## Innodb config innodb_buffer_pool_size = 64G innodb_file_per_table = 1 innodb_flush_method = O_DIRECT_NO_FSYNC innodb_lock_wait_timeout = 40 innodb_log_buffer_size = 128M innodb_log_file_size = 1G #innodb_log_files_in_group = 5 #innodb_thread_sleep_delay = 0 innodb_fast_shutdown = 1 #innodb_thread_concurrency = 0 innodb_read_io_threads = 16 innodb_write_io_threads = 16 innodb_open_files = 32768 innodb_flush_log_at_trx_commit = 0 innodb_sort_buffer_size = 64M innodb_online_alter_log_max_size = 2G ## Thread Pool thread_handling = pool-of-threads thread_pool_stall_limit = 60 thread_pool_idle_timeout = 120 ## MyISAM Config bulk_insert_buffer_size = 64M key_buffer_size = 128M myisam_max_sort_file_size = 4G myisam_repair_threads = 1 myisam_sort_buffer_size = 64M [mysqldump] quick max_allowed_packet = 512M # Replication MariaDB-M server-id = 10 max_binlog_size = 1G expire_logs_days = 3 log-bin = /apps/mariadb/mysql_binlog/mysql-bin binlog-format=mixed binlog_commit_wait_usec=5000 binlog_commit_wait_count=50 # Replication MariaDB-S1 server-id = 11 relay-log = /apps/mariadb/mysql_relay/relay-log log_slave_updates=1 read_only = 1 # Replication MariaDB-S2 server-id = 12 relay-log = /apps/mariadb/mysql_relay/relay-log log_slave_updates=1 read_only = 1 |
2. Install & upgrade
Step1
MariaDB-M, MariaDB-S1, MariaDB-S2
공통작업 : 10.7 기본설치 , mariadb-backup버전이 낮을 경우 10.5버전 이후에서 캐릭터셋에 문제 발생
cd /usr/local/src
curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup sh /usr/local/src/mariadb_repo_setup --mariadb-server-version=10.7 dnf install mariadb-server mariadb-client mariadb-backup qpress systemctl enable mariadb systemctl stop mariadb mkdir -p /apps/mariadb/{mysql_data,mysql_binlog}
chown -R mysql.mysql /apps/mariadb
|
Step2
OLD_DB
Mariabackup 사용
mariabackup --backup --user=root --password='password' --target-dir=/apps/mariadb/backup
cd /apps/mariadb tar cvf - backup | ssh -p 9922 root@172.16.1.21 tar xf - -C /apps/mariadb/ |
MariaDB-M
10.2 to 10.3 ( 10.7이 설치되어잇는 MariaDB-M을 10.3으로 다운그레이드 )
dnf remove mariadb-server
mariadb_repo_setup --mariadb-server-version=10.3 dnf install mariadb-server
|
my.cnf 수정 ( 상단 예시 my.cnf 참고하여 각 서버에 맞게 수정 )
백업데이터 리스토어
cd /apps/mariadb
cd backupmariabackup --decompress --remove-original --target-dir ./ mariabackup --prepare --target-dir=./ mariabackup --copy-back --target-dir=/apps/mariadb/backup --datadir=/apps/mariadb/mysql_data/ --innodb-data-home-dir=/apps/mariadb/mysql_data
chown -R /apps/mariadb systemctl start mariadb
mysql_upgrade -uroot -p
|
10.3 to 10.4
systemctl stop mariadb
dnf -y remove mariadb-server cd /usr/local/src sh mariadb_repo_setup --mariadb-server-version=10.4
dnf -y install mariadb-server
systemctl start mariadb
mysql_upgrade -uroot -p
|
10.4 to 10.5
systemctl stop mariadb
dnf -y remove mariadb-server sh mariadb_repo_setup --mariadb-server-version=10.5 dnf -y install mariadb-server
systemctl start mariadb
mysql_upgrade -uroot -p
|
10.5 to 10.6
systemctl stop mariadb
dnf -y remove mariadb-server sh mariadb_repo_setup --mariadb-server-version=10.6 dnf -y install mariadb-server
systemctl start mariadb
mysql_upgrade -uroot -p
|
10.6 to 10.7
systemctl stop mariadb
dnf -y remove mariadb-server sh mariadb_repo_setup --mariadb-server-version=10.7 dnf -y install mariadb-server
systemctl start mariadb
mysql_upgrade -uroot -p
|
Step3
Replication
MariaDB-M
rm -rf /apps/mariadb/backup* mariabackup --backup --user=root --password='패스워드' --target-dir=/apps/mariadb/backup cd /apps/mariadb tar cvf - backup | ssh -p 9922 root@172.16.1.21 tar xf - -C /apps/mariadb/ |
MariaDB-S1
cd /apps/mariadb/ mariabackup --prepare --target-dir=/apps/mariadb/backup bariabackup --copy-back--target-dir=/apps/mariadb/backup --datadir=/apps/mariadb/mysql_data/ --innodb-data-home-dir=/apps/mariadb/mysql_Data mkdir /apps/mariadb/mysql_relay chown -R mysql.mysql /apps/mariadb |
mysql shell
cat /apps/mariadb/mysql_data/xtrabackup_info ( binlog_pos Value check ) mysql -uroot -p CHANGE MASTER TO MASTER_HOST='172.16.1.21',MASTER_PORT=3306 , MASTER_USER='복제계정',MASTER_PASSWORD='패스워드', MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=328;
start slave; show slave status\G; |
MariaDB-S2
S1과 동일
3. ETC
1. 설치 과정에서 mariabackup 버전으로 인한 캐릭터셋 이슈와 기본적인 selinux firewalld iptalbes 등은 설명하지 않았습니다.
2. mariadb.service 자체 보안중 /var/경로 또는 /home경로일 경우
vi /usr/lib/systemd/system/mariadb.service ProtectHome=true > ProtectHome=false 로 변경 후 systemctl daemon-reload systemctl start mariadb |
3. 업그레이드시 하나의 버전을 올릴때마다 error로그를 확인 하는 것은 기본입니다.
4. 10.6까지 작업한 분이 순차업그레이드를 하는것이 정신 건강에 좋다고 하여 버전을 건너뛰지 않고 차례대로 진행했으며 여러 단계를 넘는것이 불가능하다는 말은 아니니 참고하시기 바랍니다.
'SYSTEM > Software' 카테고리의 다른 글
MongoDB 6.0.2 sharding replica set (0) | 2022.11.11 |
---|---|
Rocky Linux 8 / cockpit / system monitoring / management (0) | 2022.08.31 |
linux software raid / mdadm 사용 방법 (0) | 2022.08.31 |
lsyncd + unison 양방향 동기화 / NFS 대체 (0) | 2022.08.31 |
hpsmh - HP Smart Management Home Page on CentOS (0) | 2022.08.31 |