blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2020.04.09 DeNAインフラノウハウ発信プロジェクト

MySQL5.7化移行の流れ

by babata

#infrastructure #software-architecture #mysql #data-store #infra-delivery

はじめに

皆様はじめまして。IT基盤部の馬場田と申します。
主に様々なゲームタイトルやプラットフォーム、オートモーティブ事業等のインフラ運用等を担当しています。
今回のブログでは先日実施したMySQL5.7移行作業の流れについて紹介します。
先日弊社竹内が紹介させていただいたblogの移行作業にフォーカスした内容になります。(https://engineer.dena.com/posts/2020.03/mysql5.7-migration/)
MySQLの移行を予定している方の参考になればと思います。

移行前の構成

移行前の構成としてはMySQL5.1を使っており以下のような構成で運用 していました。

移行の為の準備

MySQL5.7に移行する為にはMySQL5.1と直接レプリケーション構成を組めないのでMySQL5.6も準備する必要があります。
何故組めないかについては過去のblogで解説している為ここでは割愛します。
MySQL5.7とMySQL5.1は直接レプリケーションが組めない理由
その為1サービスにつき3台構築する必要がありました。

  • MySQL5.7 新しいMasterになるホスト
  • MySQL5.7 新しいSlaveになるホスト
  • MySQL5.6 MySQL5.7とMySQL5.1をレプリケーションさせる為のホスト

移行準備後の構成

これで移行の為の第一段階は完了です。
しかしこのままではMySQL5.7とMySQL5.1は直接レプリケーションが組めない為、切り替え後にMySQL5.1が使えなくなってしまいます。
切り替え後には不測の事態で切り戻す事もあり暫くはMySQL5.1も使える状態にしておく必要があります。
その為MySQL5.7移行後にMySQL5.1を使えるように構成変更を実施します。
具体的にはMySQL5.6がMasterになるようにMySQL5.1で change master を実行します。

MySQL5.6のホストで実施

show master status\G
*************************** 1. row ***************************
            File: mysqld-bin.xxxxx
        Position: xxx
    Binlog_Do_DB:
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)

exit

show master status で得た結果からchange masterを実行します。

MySQL5.1のホストで実施

show slave status\G
stop slave;
show slave status\G
reset slave;
 
CHANGE MASTER TO MASTER_HOST='MySQL5.6host',
MASTER_PORT=3306, MASTER_USER='xxxx', 
MASTER_LOG_FILE='File', MASTER_LOG_POS='Position';
show slave status\G
start slave;
show slave status\G

構成変更後の構成

最終的にMySQL5.7への移行

これでMySQL5.7へ移行する為の事前準備が完了です。 そして最後にMySQL5.7へ移行します。 MHA を実行しMySQL5.7をMasterに昇格させます。

最終的な構成

このようにしてMySQL5.7への移行を完了させました。
MHAを実行した段階で旧Masterはレプリケーション構成から外しています。

最後に

このような流れでMySQL5.1からMySQL5.7への移行を完了する事が出来ました。
読者の皆様の参考になればと思います。

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。