<code>一、準備(主從都需要配置):</code>
<code> </code><code>yum </code><code>-</code><code>y install mysql mysql</code><code>-</code><code>server </code><code>#安裝mysql</code>
<code> </code><code>yum </code><code>-</code><code>y install ntpdate </code><code>#安裝時間同步</code>
<code> </code><code>echo </code><code>'*/1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null'</code> <code>>></code><code>/</code><code>var</code><code>/</code><code>spool</code><code>/</code><code>cron</code><code>/</code><code>root </code><code>#配置網絡時間同步</code>
<code> </code><code>service mysqld start </code><code>#啟動服務</code>
<code> </code><code>chkconfig </code><code>-</code><code>-</code><code>add mysqld </code><code>#添加為系統服務</code>
<code> </code><code>chkconfig mysqld on </code><code>#開啟預設運作級别</code>
<code> </code>
<code>二、主伺服器配置:主配置檔案預設為:</code><code>/</code><code>etc</code><code>/</code><code>my.cnf</code>
<code> </code><code>[mysqld]</code>
<code> </code><code>datadir</code><code>=</code><code>/</code><code>var</code><code>/</code><code>lib</code><code>/</code><code>mysql</code>
<code> </code><code>socket</code><code>=</code><code>/</code><code>var</code><code>/</code><code>lib</code><code>/</code><code>mysql</code><code>/</code><code>mysql.sock</code>
<code> </code><code>user</code><code>=</code><code>mysql</code>
<code> </code><code>symbolic</code><code>-</code><code>links</code><code>=</code><code>0</code>
<code> </code><code>log</code><code>-</code><code>bin</code><code>=</code><code>master</code><code>-</code><code>bin</code> <code>#開啟二進制日志檔案</code>
<code> </code><code>server</code><code>-</code><code>id</code><code>=</code><code>1</code> <code>#設定伺服器id,保證全局唯一</code>
<code> </code><code>sync</code><code>-</code><code>binlog</code><code>=</code><code>1</code> <code>#全局唯一的server-id</code>
<code> </code><code>innodb</code><code>-</code><code>flush</code><code>-</code><code>logs</code><code>-</code><code>at</code><code>-</code><code>trx</code><code>-</code><code>commit</code><code>=</code><code>1</code>
<code> </code><code>innodb</code><code>-</code><code>support</code><code>-</code><code>xa</code><code>=</code><code>1</code>
<code> </code>
<code> </code><code>service mysqld restart </code><code>#重新開機動服務</code>
<code> </code><code>mysql> show </code><code>global</code> <code>variables like </code><code>'%server%'</code><code>; </code><code>#資料庫id</code>
<code> </code><code>mysql> show master logs; </code><code>#檢視資料庫二進制日志</code>
<code> </code><code>mysql> show master status; </code><code>#檢視主伺服器狀态,記住二進制日志名,配置從伺服器會用</code>
<code> </code><code>mysql> grant replication slave,replication client on </code><code>*</code><code>.</code><code>*</code> <code>to </code><code>'copy'</code><code>@</code><code>'192.168.0.50'</code> <code>identified by </code><code>'123.com'</code><code>;</code>
<code> </code><code>#授權192.168.0.50主機上的copy使用者對所有庫有複制權限</code>
<code> </code><code>mysql> select Host,User,Password </code><code>from</code> <code>mysql.user; </code><code>#檢視使用者</code>
<code>三、從伺服器配置:</code>
<code> </code><code>datadir</code><code>=</code><code>/</code><code>var</code><code>/</code><code>lib</code><code>/</code><code>mysql</code>
<code> </code><code>socket</code><code>=</code><code>/</code><code>var</code><code>/</code><code>lib</code><code>/</code><code>mysql</code><code>/</code><code>mysql.sock</code>
<code> </code><code>user</code><code>=</code><code>mysql</code>
<code> </code><code>symbolic</code><code>-</code><code>links</code><code>=</code><code>0</code>
<code> </code><code>relay</code><code>-</code><code>log</code><code>=</code><code>slave</code><code>-</code><code>log </code><code>#啟用中繼日志</code>
<code> </code><code>server</code><code>-</code><code>id</code><code>=</code><code>10</code> <code>#伺服器id,全局唯一</code>
<code> </code><code>read</code><code>-</code><code>only</code><code>=</code><code>1</code> <code>#将伺服器設定為隻讀模式(對擁有root權限的使用者無效)</code>
<code> </code><code>service mysqld restart </code><code>#重新開機動服務</code>
<code> </code><code>mysql> change master to master_host</code><code>=</code><code>'192.168.0.10'</code><code>,master_user</code><code>=</code><code>'copy'</code><code>,</code>
<code> </code><code>master_password</code><code>=</code><code>'123.com'</code><code>,master_log_file</code><code>=</code><code>'master-bin.000001'</code><code>,master_log_pos</code><code>=</code><code>590</code><code>;</code>
<code> </code><code>master_host </code><code>#主伺服器位址</code>
<code> </code><code>master_user </code><code>#擁有複制權限的使用者</code>
<code> </code><code>master_password </code><code>#密碼</code>
<code> </code><code>master_log_file </code><code>#從哪個二進制日志開始複制</code>
<code> </code><code>master_log_pos </code><code>#從二進制日志的什麼位置開始複制</code>
<code> </code>
<code> </code><code>mysql> start slave; </code><code>#開啟從伺服器</code>
<code> </code><code>mysql> show slave status\G; </code><code>#檢視從伺服器狀态</code>
<code>四、驗證主從:</code>
<code> </code><code>主伺服器:</code>
<code> </code><code>mysql> create database db_test; </code><code>#建立資料庫</code>
<code> </code><code>從伺服器:</code>
<code> </code><code>mysql> show databases; </code><code>#檢視伺服器是否同步</code>
<code>五、主主複制</code>
<code> </code><code>伺服器A:</code>
<code> </code><code>[mysqld] </code><code>#添加内容</code>
<code> </code><code>log</code><code>-</code><code>bin</code><code>=</code><code>master</code><code>-</code><code>bin</code> <code>#啟用二進制日志</code>
<code> </code><code>relay</code><code>-</code><code>log</code><code>=</code><code>slave</code><code>-</code><code>log </code><code>#啟用中繼日志</code>
<code> </code><code>server</code><code>-</code><code>id</code><code>=</code><code>1</code> <code>#伺服器id,全局唯一</code>
<code> </code><code>auto</code><code>-</code><code>increment</code><code>-</code><code>offset</code><code>=</code><code>1</code> <code>#自增列起始</code>
<code> </code><code>auto</code><code>-</code><code>increment</code><code>-</code><code>increment</code><code>=</code><code>2</code> <code>#自增列一次步進(例:1,3,5,7,9...)</code>
<code> </code><code>mysql> grant replication slave,replication client on </code><code>*</code><code>.</code><code>*</code> <code>to </code><code>'copy'</code><code>@</code><code>'192.168.0.50'</code> <code>identified by </code><code>'123.com'</code><code>;</code>
<code> </code><code>mysql> change master to master_host</code><code>=</code><code>'192.168.0.50'</code><code>,master_user</code><code>=</code><code>'copy'</code><code>,</code>
<code> </code><code>master_password</code><code>=</code><code>'123.com'</code><code>,master_log_file</code><code>=</code><code>'master-bin.000001'</code><code>,master_log_pos</code><code>=</code><code>106</code><code>;</code>
<code> </code><code>mysql> start slave; </code>
<code> </code><code>mysql> show slave status\G; </code>
<code> </code>
<code> </code><code>伺服器B: </code>
<code> </code><code>log</code><code>-</code><code>bin</code><code>=</code><code>master</code><code>-</code><code>bin</code>
<code> </code><code>relay</code><code>-</code><code>log</code><code>=</code><code>slave</code><code>-</code><code>log</code>
<code> </code><code>server</code><code>-</code><code>id</code><code>=</code><code>10</code>
<code> </code><code>auto</code><code>-</code><code>increment</code><code>-</code><code>offset</code><code>=</code><code>2</code> <code>#自增列起始</code>
<code> </code><code>auto</code><code>-</code><code>increment</code><code>-</code><code>increment</code><code>=</code><code>2</code> <code>#自增列一次步進(例:2,4,6,8,10...)</code>
<code> </code><code>mysql> grant replication slave,replication client on </code><code>*</code><code>.</code><code>*</code> <code>to </code><code>'copy'</code><code>@</code><code>'192.168.0.10'</code> <code>identified by </code><code>'123.com'</code><code>; </code>
<code> </code><code>master_password</code><code>=</code><code>'123.com'</code><code>,master_log_file</code><code>=</code><code>'master-bin.000003'</code><code>,master_log_pos</code><code>=</code><code>106</code><code>;</code>
<code>六、半同步複制</code>
<code> </code><code>要想使用半同步複制,必須滿足以下幾個條件:</code>
<code> </code><code>1.</code> <code>MySQL </code><code>5.5</code><code>及以上版本</code>
<code> </code><code>2.</code> <code>變量have_dynamic_loading為YES</code>
<code> </code><code>3.</code> <code>異步複制已經存在</code>
<code> </code><code>主:</code>
<code> </code><code>mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME </code><code>'semisync_master.so'</code><code>; </code><code>#安裝插件</code>
<code> </code><code>mysql> show plugins; </code><code>#檢視插件是否安裝成功</code>
<code> </code><code>mysql> </code><code>SET</code> <code>GLOBAL rpl_semi_sync_master_enabled </code><code>=</code> <code>1</code><code>; </code><code>#啟用半同步</code>
<code> </code><code>mysql> show status like </code><code>'Rpl_semi_sync_master_status'</code><code>; </code><code>#檢視是否在運作</code>
<code> </code><code>從:</code>
<code> </code><code>mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME </code><code>'semisync_slave.so'</code><code>; </code><code>#安裝插件</code>
<code> </code><code>mysql> show plugins;</code>
<code> </code><code>mysql> </code><code>SET</code> <code>GLOBAL rpl_semi_sync_slave_enabled </code><code>=</code> <code>1</code><code>; </code><code>#啟用半同步</code>
<code> </code><code>mysql> STOP SLAVE </code><code>#關閉複制線程</code>
<code> </code><code>mysql> START SLAVE </code><code>#開啟複制線程</code>
<code> </code><code>mysql> show status like </code><code>'Rpl_semi_sync_slave_status'</code><code>; </code><code>#檢視是否在運作</code>
<code> </code><code>mysql> show variables like </code><code>'%Rpl%'</code><code>; </code><code>#檢視和半同步相關的伺服器變量</code>
<code> </code><code>rpl_semi_sync_master_enabled </code><code>#是否啟用半同步</code>
<code> </code><code>rpl_semi_sync_master_timeout </code><code>#等待逾時時間</code>
<code> </code><code>rpl_semi_sync_master_wait_for_slave_count</code>
<code> </code><code>#需要等待多少個slave應答,才能傳回給用戶端</code>
<code> </code><code>mysql> show status like </code><code>'%Rpl_semi%'</code><code>; </code><code>#半同步狀态</code>
<code> </code><code>Rpl_semi_sync_master_clients </code><code>#目前半同步複制從的個數</code>
<code>七、和複制相關的檔案</code>
<code> </code><code>從節點:</code>
<code> </code><code>master.info:用于儲存slave連接配接至master時的相關資訊(賬号,密碼,伺服器位址,複制的二進制檔案等)</code>
<code> </code><code>relay</code><code>-</code><code>log.info:儲存目前slave節點上已經複制到的二進制檔案位置,和relay</code><code>-</code><code>log的位置 </code>
<code> </code>
本文轉自 紅塵世間 51CTO部落格,原文連結:http://blog.51cto.com/hongchen99/1936473