mysql replicationに基づく問題のまとめ

3896 ワード

Replicationに触れてから、自分が配置してみることを考え始めました.インターネットで資料を調べても、同級生に聞いても、やっと解決しました.まず、masterを構成するmyが問題です.cnf、順番に配置
 
  
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)