SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
5.6のレプリケーション周りを
    試してみた
    MySQL Casual Talks in Fukuoka vol.2
                            2012/10/18
自己紹介

名前: 松崎 学

所属: 株式会社キャム http://www.cam-net.co.jp/
      (自社オリジナルの統合基幹業務システムをSaaSで提供中)

Twitter: matsumana

最近のお仕事:Javaプログラマ(Rubyもほんの少し)、 インフラ

最近の興味: Ruby, Python, Groovy, Scala
            Fluentd, Hadoop, Asakusa Framework
MySQLと私
使用歴5ヶ月程
(前回のMySQL Casual参加後、
業務でも使い始めました)
まだまだアウェー感がありますが、
よろしくお願いします!
今回は、5.6の中で
個人的に一番気になった
レプリケーションについて
  調べてみました。
まずは、
とても重要な機能となる
  GTIDから。
@rkajiyamaさんのブログより

  http://d.hatena.ne.jp/rkajiyama/20120726/p1

  GTID

5.6.5から実装された、バイナリログに書かれたトランザクション
単位にユニークなIDを割り当てる機能。

レプリケーション環境での状況の確認やスレーブ間での進                      の比較
が簡単になります。
binlogの中身を見てみると、
SQL実行前にGTIDがSETされている事が確認できます。
  実行したSQLは、”create database aaa”です。
スレーブ側で
    CHANGE MASTERしてみます。
GTIDを使ってレプリケーションするには、

MASTER_LOG_FILE, MASTER_LOG_POSの代わりに

MASTER_AUTO_POSITION = 1を指定します。

(MySQL Utilitiesに含まれるmysqlreplicateでも出来るみたいです)
GTID使ってレプリケーション出来た!




      (途中は省略)
試してわかった事 その1
マスタから物理ファイルをスレーブにコピーした後、
auto.cnfのserver-uuidを書き換えないと
START SLAVEする時にエラーが出て、
レプリケーション出来ない。

The slave I/O thread stops because master and slave have equal MySQL server
UUIDs; these UUIDs must be different for replication to work.



スレーブ側で以下のコマンドを実行
$ echo "[auto]nserver-uuid=`uuidgen`" > /var/lib/mysql/auto.cnf
※auto.cnfのパスは自分の環境に合わせて読み替えてください。
試してわかった事 その2

gtid-mode=ON
disable-gtid-unsafe-statements
をmy.cnfに書いた状態では、
mysql_install_dbとmysql_secure_installationの
実行時にエラーが出る。

ERROR: 1785 Updates to non-transactional tables are forbidden when
DISABLE_GTID_UNSAFE_STATEMENTS = 1.

mysql_install_dbとmysql_secure_installationを実行する時だけ、
上記2つのオプションはコメントアウトする。
試してわかった事 その3
START SLAVEでエラーが出て、
レプリケーション出来ない。
mysql_install_dbとmysql_secure_installation を実行
した時のbinlogも実行されているっぽい。

Last_Error: Error 'Updates to non-transactional tables are forbidden when
DISABLE_GTID_UNSAFE_STATEMENTS = 1.' on query. Default database: ''.
Query: 'UPDATE mysql.user SET Password=PASSWORD('hoge') WHERE
User='root' and plugin = 'mysql_old_password''

とりあえず、my.cnfに以下を指定(いいのかな・・・?)
replicate-ignore-db=information_schema,performance_schema,mysql
試してわかった事 その4


master-info-repository=TABLE
をmy.cnfに書かないとmysqlfailoverでエラーが出る。


$ mysqlfailover --master=root@mysqlmaster:3306 --slave=root@mysqlslave:3306


CRITICAL Failover requires --master-info-repository=TABLE for all slaves.
今からmysqlfailoverで
自動フェールオーバーを
  やってみます!
フェールオーバー テストの内容
以下の構成でレプリケーション構築済。


マスタ → debian00
スレーブ → debian01, debian02


debian01はDelayed Replicationしておく
(反映までの残り時間はSHOW SLAVE STATUSGして
SQL_Remaining_Delayで確認できる)
CHANGE MASTER TO MASTER_HOST='debian00',
MASTER_USER='repl', MASTER_PASSWORD='repl',
MASTER_AUTO_POSITION=1, MASTER_DELAY=30;
こうなるはず

debian02の方が進んでるので、マスタになる。

debian01がdebian02をマスタとして参照する。

しばらく待つとスレーブ(debian01)が
マスタ(debian02)に追いつく。
すみません、
ちゃんと動かすことが
出来ませんでした><

GAがリリースされたら
もう一回試してみます。
mysqlfailoverのログ
Failover starting in 'auto' mode...
# Checking eligibility of slave debian01:3306 for candidate.
# GTID_MODE=ON ... Ok
# Replication user exists ... Ok
# Candidate slave debian01:3306 will become the new master.
# Preparing candidate for failover.
# LOCK STRING: FLUSH TABLES WITH READ LOCK
# Connecting candidate to debian02:3306 as a master to retrieve unprocessed GTIDs.
# Change master command for debian01:3306
# CHANGE MASTER TO MASTER_HOST = 'debian02', MASTER_USER = 'repl', MASTER_PASSWORD = '3306',
MASTER_PORT = 3306, MASTER_AUTO_POSITION=1
# UNLOCK STRING: UNLOCK TABLES
# Waiting for candidate to catch up to slave debian02:3306.
# Slave debian01:3306:
# QUERY = SELECT SQL_THREAD_WAIT_AFTER_GTIDS('1EABB17C-52B6-483C-82F7-7292D4AB0373:1-91', 3)
# Return Code = 0
# Slave debian01:3306:
# QUERY = SELECT SQL_THREAD_WAIT_AFTER_GTIDS('E16A96E0-1787-11E2-96F7-000C299AE524:1-6', 3)
# Return Code = -1
# Creating replication user if it does not exist.
# Stopping slaves.
# Performing STOP on all slaves.
# Executing stop on slave debian01:3306 Ok
# Executing stop on slave debian02:3306 Ok
# Switching slaves to new master.
# Change master command for debian01:3306
# CHANGE MASTER TO MASTER_HOST = 'debian01', MASTER_USER = 'repl', MASTER_PASSWORD = '3306',
MASTER_PORT = 3306, MASTER_AUTO_POSITION=1
# Change master command for debian02:3306
# CHANGE MASTER TO MASTER_HOST = 'debian01', MASTER_USER = 'repl', MASTER_PASSWORD = '3306',
MASTER_PORT = 3306, MASTER_AUTO_POSITION=1
# Starting slaves.
# Performing START on all slaves.
# Executing start on slave debian02:3306 Ok
# Checking slaves for errors.
# debian02:3306 status: Ok
# Failover complete.
mysqlfailoverの疑問点
mysqlfailover使うと
  自動フェールオーバーが
    楽なのは良いけど、
どういう感じに運用するのかな?

mysqlfailoverって対話型ツールだけ
ど、デーモン化できるの?

mysqlfailover自身の監視方法は?
ご清聴ありがとう
ございました。

Mais conteúdo relacionado

Mais procurados

hktstudy #01 LT 20120616
hktstudy #01 LT 20120616hktstudy #01 LT 20120616
hktstudy #01 LT 20120616
学 松崎
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented feature
tamtam180
 
はてなのNagios - モニカジ#3
はてなのNagios - モニカジ#3はてなのNagios - モニカジ#3
はてなのNagios - モニカジ#3
Shoichi Masuhara
 
動画共有ツール
動画共有ツール動画共有ツール
動画共有ツール
tamtam180
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
hiro345
 
第4回 インフラ勉強会@福岡 Fluentdハンズオン
第4回 インフラ勉強会@福岡 Fluentdハンズオン第4回 インフラ勉強会@福岡 Fluentdハンズオン
第4回 インフラ勉強会@福岡 Fluentdハンズオン
学 松崎
 

Mais procurados (20)

hktstudy #01 LT 20120616
hktstudy #01 LT 20120616hktstudy #01 LT 20120616
hktstudy #01 LT 20120616
 
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
 
MySQL clients
MySQL clientsMySQL clients
MySQL clients
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
 
MHAを検証して導入した話
MHAを検証して導入した話MHAを検証して導入した話
MHAを検証して導入した話
 
100615分散nagios
100615分散nagios100615分散nagios
100615分散nagios
 
How to backup your mroonga database?
How to backup your mroonga database?How to backup your mroonga database?
How to backup your mroonga database?
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented feature
 
MySQL 初めてのチューニング
MySQL 初めてのチューニングMySQL 初めてのチューニング
MySQL 初めてのチューニング
 
はてなのNagios - モニカジ#3
はてなのNagios - モニカジ#3はてなのNagios - モニカジ#3
はてなのNagios - モニカジ#3
 
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
 
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
 
Migr8.rb チュートリアル
Migr8.rb チュートリアルMigr8.rb チュートリアル
Migr8.rb チュートリアル
 
動画共有ツール
動画共有ツール動画共有ツール
動画共有ツール
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
第4回 インフラ勉強会@福岡 Fluentdハンズオン
第4回 インフラ勉強会@福岡 Fluentdハンズオン第4回 インフラ勉強会@福岡 Fluentdハンズオン
第4回 インフラ勉強会@福岡 Fluentdハンズオン
 
MySQL5.7とMariaDB10.1の性能比較(簡易)
MySQL5.7とMariaDB10.1の性能比較(簡易)MySQL5.7とMariaDB10.1の性能比較(簡易)
MySQL5.7とMariaDB10.1の性能比較(簡易)
 
AWSのRedHatにMySQL最速インストール
AWSのRedHatにMySQL最速インストールAWSのRedHatにMySQL最速インストール
AWSのRedHatにMySQL最速インストール
 

Destaque (9)

光のMySQL 5.7
光のMySQL 5.7光のMySQL 5.7
光のMySQL 5.7
 
fukinfra Vol3 LT 20120629
fukinfra Vol3 LT 20120629fukinfra Vol3 LT 20120629
fukinfra Vol3 LT 20120629
 
OSC福岡2012 LT 20121208
OSC福岡2012 LT 20121208OSC福岡2012 LT 20121208
OSC福岡2012 LT 20121208
 
クラウド・SaaS型 統合基幹業務システム 「CAM MACS」を支える PostgreSQL ~雲に乗ったゾウ~
クラウド・SaaS型 統合基幹業務システム 「CAM MACS」を支える PostgreSQL ~雲に乗ったゾウ~クラウド・SaaS型 統合基幹業務システム 「CAM MACS」を支える PostgreSQL ~雲に乗ったゾウ~
クラウド・SaaS型 統合基幹業務システム 「CAM MACS」を支える PostgreSQL ~雲に乗ったゾウ~
 
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
 
Fukuokaphp vol12 talk_20140225
Fukuokaphp vol12 talk_20140225Fukuokaphp vol12 talk_20140225
Fukuokaphp vol12 talk_20140225
 
福岡Ruby会議01 20121201 LT
福岡Ruby会議01 20121201 LT福岡Ruby会議01 20121201 LT
福岡Ruby会議01 20121201 LT
 
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfkSpring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
 
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
 

Semelhante a MySQL Casual Talks in Fukuoka vol.2

配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
yut148atgmaildotcom
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Yoshinori Matsunobu
 
MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012
Mikiya Okuno
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
2bo 2bo
 

Semelhante a MySQL Casual Talks in Fukuoka vol.2 (20)

MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQl 5.6新機能解説@第一回 中国地方DB勉強会MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境
 
5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境
 
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
 
What's New in MySQL 5.7 Replication
What's New in MySQL 5.7 ReplicationWhat's New in MySQL 5.7 Replication
What's New in MySQL 5.7 Replication
 
MySQLトラブル解析入門
MySQLトラブル解析入門MySQLトラブル解析入門
MySQLトラブル解析入門
 
わたしを支える技術
わたしを支える技術わたしを支える技術
わたしを支える技術
 
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術
 
Zabbixを2分でインストール
Zabbixを2分でインストールZabbixを2分でインストール
Zabbixを2分でインストール
 
MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012
 
Mysql casual talks vol4
Mysql casual talks vol4Mysql casual talks vol4
Mysql casual talks vol4
 
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
 
Puppet on AWS
Puppet on AWSPuppet on AWS
Puppet on AWS
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
PostgreSQLのソース・ターゲットエンドポイントとしての利用
PostgreSQLのソース・ターゲットエンドポイントとしての利用PostgreSQLのソース・ターゲットエンドポイントとしての利用
PostgreSQLのソース・ターゲットエンドポイントとしての利用
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
WindowsでMySQL入門
WindowsでMySQL入門WindowsでMySQL入門
WindowsでMySQL入門
 

MySQL Casual Talks in Fukuoka vol.2