最近、レプリケーションスレーブの1つをmysql 5.6に更新しました。マスターから最近のダンプをインポートした後、エラーなしでmysql_upgradeを実行します。
データベースデーモンはエラーなしで正常に起動しました。
問題は私がスレーブを起動しようとしたときに始まりました。スレーブのエンジンはほぼ即座にクラッシュし、クラッシュ/リスタートのエンドレスループになりました。
これは私がすでに試したことです
スレーブを5.1から5.5にアップグレードし(5.5でのレプリケーションに問題はありませんでした)、次に5.6にアップグレードします(クラッシュ)
マスターとスレーブの両方のバイナリログを行形式に変更します(binlog-format = ROWin config file)
マスターとスレーブの両方を休ませる
私の設定は
ここにログダンプがあります:
2014-11-13 14:03:07 1022 [注意]スレーブI/Oスレッド:マスター '[email protected]:3306'に接続され、レプリケーションがログ3131248706のログ 'mysql-bin.000069'で開始されました
2014-11-13 14:03:07 1022 [警告]スレーブSQL:クラッシュが発生した場合、この構成はリレーログ情報が一貫していることを保証しません、Error_code:0
2014-11-13 14:03:07 1022 [注意]スレーブSQLスレッドが初期化され、位置3940のログ 'mysql-bin.000069'でレプリケーションが開始され、リレーログ '/data/relay-bin.000003 '位置:4103
2014-11-13 14:03:07 1022 [警告]スレーブI/O:SETによるマスターへの通知@ master_binlog_checksum = @@ global.binlog_checksum failed with error:Unknown system variable 'binlog_checksum'、Error_code:1193
2014-11-13 14:03:07 1022 [警告]スレーブI/O:マスターの不明なシステム変数 'SERVER_UUID'。推定される原因は、変数がスレーブ(バージョン:5.6.21-log)にあるにもかかわらず、マスター(バージョン:5.1.71-log)でサポートされていないことです。Error_code:1193
2014-11-13 14:03:07 1022 [エラー]サーバーからのパケットの読み取りエラー:バイナリログインデックスファイルに最初のログファイル名が見つかりませんでした(server_errno = 1236)
2014-11-13 14:03:07 1022 [エラー]スレーブI/O:バイナリログからデータを読み取るときに致命的なエラー1236が発生しました: 'バイナリログインデックスファイルで最初のログファイル名が見つかりませんでした'、エラーコード:1236
2014-11-13 14:03:07 1022 [注意]スレーブI/Oスレッドが終了し、ログ 'mysql-bin.000069'まで読み込まれ、位置31248706
2014-11-13 14:03:07 1022 [エラー]スレーブSQL:テーブルtpportal.player_game_playsでWrite_rows_v1イベントを実行できませんでした。キー 'PRIMARY'のエントリ '5890402'が重複しています。Error_code:1062;ハンドラエラーHA_ERR_FOUND_DUPP_KEY;イベントのマスターログmysql-bin.000069、end_log_pos 5048、Error_code:1062
2014-11-13 14:03:07 1022 [警告]スレーブ:キー 'PRIMARY'の重複したエントリ '5890402' Error_code:1062
2014-11-13 14:03:07 1022 [エラー]クエリの実行中にエラーが発生し、スレーブSQLスレッドが中止されました。問題を修正し、スレーブSQLスレッドを「SLAVE START」で再起動します。ログ「mysql-bin.000069」の位置3940で停止しました
14:03:07 UTC-mysqldはシグナル11を受け取りました。
バグが発生したことが原因である可能性があります。このバイナリが
またはそれがリンクされたライブラリの1つが破損しているか、不適切に構築されている、
または誤った構成。このエラーは、ハードウェアの誤動作によっても発生します。
私たちは、うまくいくと思われるいくつかの情報をかき集めるために全力を尽くします
問題を診断しますが、すでにクラッシュしているため、
何かが明らかに間違っており、これは失敗する可能性があります。
key_buffer_size = 8388608
read_buffer_size = 131072
max_used_connections = 1
max_threads = 100
thread_count = 2
connection_count = 1
Mysqldは最大で
key_buffer_size +(read_buffer_size + sort_buffer_size)* max_threads = 47962 Kバイトのメモリ
大丈夫だと思います。そうでない場合は、方程式の一部の変数を減らします。
スレッドポインター:0x7fc53c000990
バックトレースを試みています。次の情報を使用して調べることができます
mysqldが停止した場所。この後にメッセージが表示されない場合は、問題が発生しています
ひどく間違っている...
stack_bottom = 7fc547ffe7e0 thread_stack 0x40000
/usr/sbin/mysqld(my_print_stacktrace + 0x35)[0x8dbbb5]
/usr/sbin/mysqld(handle_fatal_signal + 0x494)[0x665f24]
/lib64/libpthread.so.0(+ 0xf710)[0x7fc695957710]
/usr/sbin/mysqld(_Z10free_blobsP5TABLE + 0x13)[0x76c103]
/usr/sbin/mysqld(_ZN14Relay_log_info20clear_tables_to_lockEv + 0x31)[0x8b5e91]
/usr/sbin/mysqld(_ZN14Relay_log_info15cleanup_contextEP3THDb + 0x84)[0x8b6064]
/usr/sbin/mysqld(handle_slave_sql + 0x1e6)[0x8b1ea6]
/usr/sbin/mysqld(pfs_spawn_thread + 0x12a)[0xb00b1a]
/lib64/libpthread.so.0(+ 0x79d1)[0x7fc69594f9d1]
/lib64/libc.so.6(clone + 0x6d)[0x7fc6946a0b6d]
いくつかの変数を取得しようとしています。
一部のポインタが無効であり、ダンプが中止される可能性があります。
クエリ(0):無効なポインタです
接続ID(スレッドID):4
ステータス:NOT_KILLED
http://dev.mysql.com/doc/mysql/en/crashing.html のマニュアルページには、
クラッシュの原因を見つけるのに役立つ情報。
141113 14:03:07 mysqld_safe現在実行中のプロセスの数:0
141113 14:03:07 mysqld_safe mysqldが再起動されました
2014-11-13 14:03:08 0 [警告]暗黙のDEFAULT値を持つTIMESTAMPは非推奨です。 --explicit_defaults_for_timestampサーバーオプションを使用してください(詳細については、ドキュメントを参照してください)。
2014-11-13 14:03:08 1091 [注意]プラグイン「FEDERATED」は無効になっています。
2014-11-13 14:03:08 1091 [注] InnoDB:アトミックを使用してカウントバッファプールページを参照する
2014-11-13 14:03:08 1091 [注] InnoDB:InnoDBメモリヒープが無効になっています
2014-11-13 14:03:08 1091 [注] InnoDB:ミューテックスとrw_locksはGCCアトミックビルトインを使用します
2014-11-13 14:03:08 1091 [注] InnoDB:メモリバリアは使用されません
2014-11-13 14:03:08 1091 [注意] InnoDB:圧縮テーブルはzlib 1.2.3を使用します
2014-11-13 14:03:08 1091 [注] InnoDB:LinuxネイティブAIOの使用
2014-11-13 14:03:08 1091 [注] InnoDB:CPU crc32命令の使用
2014-11-13 14:03:08 1091 [注] InnoDB:初期化バッファープール、サイズ= 4.0G
2014-11-13 14:03:08 1091 [注] InnoDB:バッファプールの初期化が完了しました
2014-11-13 14:03:08 1091 [注] InnoDB:最高のサポートされているファイル形式はバラクーダです。
2014-11-13 14:03:08 1091 [注] InnoDB:ibdataファイルのログシーケンス番号115242901774および115242901774がib_logfilesのログシーケンス番号115242901784と一致しません!
2014-11-13 14:03:08 1091 [注意] InnoDB:データベースは正常にシャットダウンされませんでした!
2014-11-13 14:03:08 1091 [注] InnoDB:クラッシュリカバリを開始しています。
2014-11-13 14:03:08 1091 [注] InnoDB:.ibdファイルからテーブルスペース情報を読み込んでいます...
2014-11-13 14:03:08 1091 [注] InnoDB:半分書き込まれた可能性のあるデータページの復元
2014-11-13 14:03:08 1091 [注] InnoDB:ダブルライトバッファから...
InnoDB:最後のMySQL binlogファイルの位置0 1405、ファイル名mysql-bin.000010
2014-11-13 14:03:09 1091 [注意] InnoDB:128個のロールバックセグメントがアクティブです。
2014-11-13 14:03:09 1091 [注] InnoDB:パージの開始を待機しています
2014-11-13 14:03:09 1091 [注意] InnoDB:5.6.21が開始されました。ログシーケンス番号115242901784
2014-11-13 14:03:09 1091 [注]/data/mysql-binを使用してクラッシュした後のリカバリ
2014-11-13 14:03:09 1091 [注]クラッシュリカバリを開始しています...
2014-11-13 14:03:09 1091 [注]クラッシュのリカバリが終了しました。
2014-11-13 14:03:09 1091 [注]サーバーホスト名(バインドアドレス): '*';ポート:3306
マスターは5.6スレーブと互換性がありません。 binlog_checksum
は5.6でのみ使用でき、UUIDも使用できます。 5.5と5.6の間でサーバーを正常に複製しました。おそらく、これらのオプションを無効にできるかどうかを確認できます。
2014-11-13 14:03:07 1022 [警告]スレーブI/O:SET @ master_binlog_checksum = @@ global.binlog_checksumによるマスターへの通知がエラーで失敗しました:不明なシステム変数 'binlog_checksum'、Error_code:1193 2014-11-13 14:03:07 1022 [警告]スレーブI/O:マスターのシステム変数 'SERVER_UUID'が不明です。推定される原因は、変数がスレーブ(バージョン:5.6.21-log)にあるにもかかわらず、マスター(バージョン:5.1.71-log)でサポートされていないことです。Error_code:1193