Guest User

Untitled

a guest
Oct 18th, 2018
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.92 KB | None | 0 0
  1. ### Replication
  2.  
  3. * mysql 5.6
  4. * Mater IP Address = 192.168.1.1
  5. * Slave IP Address = 192.168.1.2
  6.  
  7. ### Master に repl ユーザーを作成する
  8. 以下の例では、repl ユーザーが192.168.1.2 からレプリケーション用の接続をできるようにしている。
  9. レプリケーションなので、`ON *.*` で全データベース、全テーブルに対して許可している。
  10.  
  11. ```MySQL
  12. GRANT REPLICATION SLAVE
  13. ON *.*
  14. TO 'repl'@'192.168.1.2/255.255.255.255'
  15. IDENTIFIED BY 'repl_password'
  16. ```
  17.  
  18. ## 2. MySQL サーバの設定を変更する
  19. Master に server-id と、bin_log の設定をする
  20.  
  21. ```my.cnf
  22. # Master
  23. server-id = 1
  24. log_bin = /var/log/mysql/mysql-bin.log
  25. ```
  26.  
  27. Slave には Master とは違う server-id を設定する。
  28. \# server-id はサーバ間で重複しないように設定する
  29.  
  30. ```my.cnf
  31. # Slave
  32. server-id = 2
  33.  
  34. # Slave log
  35. relay-log = mysqld-relay-bin
  36. relay-log-index = mysqld-relay-bin
  37. log-slave-updates
  38. slave-skip-errors=1062
  39.  
  40. ```
  41.  
  42. * その後 Master、Slave 共に再起動する `service mysql restart`
  43.  
  44. ## 3. Slave で CHANGE MASTER TO 〜 する
  45. Slave に Master の場所を教える。 MASTER_LOG_FILE や MASTER_LOG_POS は、
  46. mysqldump に含めるので、ここでは指定しない。
  47.  
  48. root などでログインして以下を実行する。
  49.  
  50. ```MySQL
  51. CHANGE MASTER TO
  52. MASTER_HOST='192.168.1.1',
  53. MASTER_USER='repl',
  54. MASTER_PASSWORD='repl_password';
  55. ```
  56.  
  57. ## 4. Master で dump をとる
  58. --master-data=1 で MASTER_LOG_FILE、MASTER_LOG_POS が dump に含まれる。
  59. --flush-logs で その時点のログを吐き出しておく。
  60. --single-transaction で、dump が一貫性を保つようにする。dump が開始された以降の変更はふくまれなくなる。また、ロックされなくなるので、Master は止まらない。
  61.  
  62. ```Shell
  63. mysqldump -uroot -p --master-data=1 --single-transaction db_name --flush-logs > replication.mysqldump
  64. ```
  65.  
  66. そして、scp などで、Slave に dump をコピーする
  67.  
  68. ## 5.Slave に dump を入れ、`SLAVE START` する
  69.  
  70. ```Shell
  71. mysql -uroot -p db_name < replication.mysqldump
  72. ```
  73.  
  74. ``` MySQL
  75. START SLAVE
  76. ```
  77. ## 6. 確認する
  78. 1. Master で何か変更してみる `update members set name = 'hoge' where id = 1`
  79. 1. Slave で変更を確認する `select name from members where id = 1`
  80. 1. Positionの確認
  81.  
  82.  
  83. * Mater
  84.  
  85. ```
  86. mysql> show master status\G
  87. *************************** 1. row ***************************
  88. File: mysql-bin.0000XX
  89. Position: XXX
  90. Binlog_Do_DB:
  91. Binlog_Ignore_DB:
  92. Executed_Gtid_Set:
  93. 1 row in set (0.00 sec)
  94.  
  95. mysql> exit
  96. ```
  97.  
  98. * Slave
  99.  
  100. ```
  101. mysql> show slave status\G
  102. *************************** 1. row ***************************
  103. Slave_IO_State: Waiting for master to send event
  104. Master_Host: 192.168.1.1
  105. Master_User: repl
  106. Master_Port: 3306
  107. Connect_Retry: 60
  108. Master_Log_File: mysql-bin.0000XX
  109. Read_Master_Log_Pos: XXX
  110. Relay_Log_File: mysqld-relay-bin.000002
  111. Relay_Log_Pos: 283
  112. Relay_Master_Log_File: mysql-bin.0000XX
  113.  
  114. ```
  115.  
  116. ### トラブルシューティング
  117.  
  118.  
  119. * ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
  120.  
  121. * Masterから再dumpいてimportする
  122.  
  123. ```
  124.  
  125. mysql> show master status\G
  126. *************************** 1. row ***************************
  127. File: mysql-bin.0000XXX
  128. Position: XXX
  129.  
  130.  
  131. # mysqldump -uroot -p --master-data=1 --single-transaction --all-databases --flush-logs > replication.mysqldump
  132.  
  133. ```
  134.  
  135.  
  136. * Slave 再設定
  137. ```
  138. mysql > STOP SLAVE;
  139.  
  140. # mysql -u root -p < replication.mysqldump
  141.  
  142. mysql > RESET SLAVE;
  143.  
  144. mysql > CHANGE MASTER TO
  145. MASTER_HOST='192.168.1.1’,
  146. MASTER_USER='repl',
  147. MASTER_PASSWORD='repl_password',
  148. MASTER_LOG_FILE='mysql-bin.0000XXX',// Master_Log_Fileのファイル名をセット
  149. MASTER_LOG_POS=XXX;// Exec_Master_Log_Posの値をセット
  150.  
  151. mysql > START SLAVE;
  152. ```
  153.  
  154. * Positionの確認
Add Comment
Please, Sign In to add comment