mysql replicationに基づく問題のまとめ
3896 ワード
Replicationに触れてから、自分が配置してみることを考え始めました.インターネットで資料を調べても、同級生に聞いても、やっと解決しました.まず、masterを構成するmyが問題です.cnf、順番に配置
ここの配置はインストール本に書いてある配置なので、自分ではlogbinの問題を意識していませんでしたが、私のmysqlはapt-get自動インストールなのでmysqlファイルもどこにあるか分かりませんでした.これにより、後に生成されたmysql-bin 000001というログファイルがどこに置かれているのか分かりません.長い間悩んでいましたが、最後に最本の方法でfindし(当時パソコンが一瞬熱くなりました)、/var/lib/mysql/このディレクトリの下を探しました.
このときmysqlを再起動し、statusの状況を確認します.
ログが開いていることを証明するのにいいです.しかし、2回目に私はまた発見しました.
もとは、mysqlサービスが再起動すると、自動的に1日のファイルが再オープンし、すべてのファイルディレクトリがmysql-binにあります.indexで.
それから、私のslaveを配置して、資源が足りないため台windowsのpc機を使って測定して、しかしmysqlディレクトリの下の配置ファイルはとても多くて、私もその配置を使うのか分からないで、どうせmyにあります.iniではserver-id=2になります.その後mysqlサービスを再起動し、mysqladminというコマンドでmysqlを停止して起動します.次にコマンドを使用します.
slaveを再起動して起動した後、現在の状態をクエリーして、私のio-threadが開いていないことに葛藤しました.start slave io-thread、実行は成功したがioは開かない.
それからサーバーをpingして、いいです.それから私はまたリモートでmysqlにログインして原因がどこにあるかを知っていて、mysql自体はプライマリサーバに接続されていません:
ネットで長い間調べていたが、やっと解決策を見て興奮した.私のサーバーmysqlの中のmyだ.cnfプロファイル
•bind-address=127.0.0.1それを注ぐだけでいいです.もう一度接続し直して終わりました.
•この問題が解決したばかりで、新しい問題が発生しました.プライマリ・サーバにデータを挿入した結果、slaveで表示されたステータスはこうです.
ここで問題が簡単なのは、サーバ上のデータベースからこのテーブルがないため、メインライブラリのテーブルshow createを見て、ライブラリ上にテーブルを構築することです....を片付ける
server-id = 1
log_bin =mysql-bin
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
ここの配置はインストール本に書いてある配置なので、自分ではlogbinの問題を意識していませんでしたが、私のmysqlはapt-get自動インストールなのでmysqlファイルもどこにあるか分かりませんでした.これにより、後に生成されたmysql-bin 000001というログファイルがどこに置かれているのか分かりません.長い間悩んでいましたが、最後に最本の方法でfindし(当時パソコンが一瞬熱くなりました)、/var/lib/mysql/このディレクトリの下を探しました.
このときmysqlを再起動し、statusの状況を確認します.
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
ログが開いていることを証明するのにいいです.しかし、2回目に私はまた発見しました.
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 106 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
もとは、mysqlサービスが再起動すると、自動的に1日のファイルが再オープンし、すべてのファイルディレクトリがmysql-binにあります.indexで.
それから、私のslaveを配置して、資源が足りないため台windowsのpc機を使って測定して、しかしmysqlディレクトリの下の配置ファイルはとても多くて、私もその配置を使うのか分からないで、どうせmyにあります.iniではserver-id=2になります.その後mysqlサービスを再起動し、mysqladminというコマンドでmysqlを停止して起動します.次にコマンドを使用します.
mysql> CHANGE MASTER TO
-> MASTER_HOST='10.5.110.234',
-> MASTER_USER='replica',
-> MASTER_PASSWORD='replica',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=228;
Query OK, 0 rows affected (0.01 sec)
slaveを再起動して起動した後、現在の状態をクエリーして、私のio-threadが開いていないことに葛藤しました.start slave io-thread、実行は成功したがioは開かない.
それからサーバーをpingして、いいです.それから私はまたリモートでmysqlにログインして原因がどこにあるかを知っていて、mysql自体はプライマリサーバに接続されていません:
ERROR 2003 (HY000): Can't connect to MySQL server on '10.5.110.234' (111)
ネットで長い間調べていたが、やっと解決策を見て興奮した.私のサーバーmysqlの中のmyだ.cnfプロファイル
•bind-address=127.0.0.1それを注ぐだけでいいです.もう一度接続し直して終わりました.
•この問題が解決したばかりで、新しい問題が発生しました.プライマリ・サーバにデータを挿入した結果、slaveで表示されたステータスはこうです.
Last_Error: Error 'Table 'test.chen' doesn't exist' on query. Default database: 'test'. Query: 'insert into chen values(112,'chen','chen')'
ここで問題が簡単なのは、サーバ上のデータベースからこのテーブルがないため、メインライブラリのテーブルshow createを見て、ライブラリ上にテーブルを構築することです....を片付ける
1 row in set (0.02 sec)
mysql> insert into chen values(1111,'chen','chen');
Query OK, 1 row affected (0.00 sec)
:
mysql> select * from chen;
+------+------+---------+
| id | name | address |
+------+------+---------+
| 112 | chen | chen |
| 1111 | chen | chen |
+------+------+---------+
2 rows in set (0.01 sec)