?測試機器:主 192.168.1.71 ? 從 192.168.1.74
? 第一步:在主庫上生成賦予從庫權限帳號(見上面mysql賦權)
? 第二步:修改主配置文件
? ? ? ? ? server-id = 1 ? ? ? ? ? ? ? //主數據庫id
? ? ? ? ? binlog-do-db = db1 ? ? ? ? //需要同步的庫1
? ? ? ? ? binlog-do-db = db2 ? ? ? ? //需要同步的庫2
? ? ? ? ? log-bin = mysql-bin ? ? ? ? //打開二進制日志
? 第三步:重啟主服務器
? 第四步:主服務器上執行鎖表 flush tables with read lock;
? 第五步:主服務器上執行show master status;記住二進制文件和位置
?
? 第六步:獲取主上面的快照,目前有二種方法,一種是直接tar打包,另一種是mysqldump.然后拷到從庫相應數據目錄。不過聽說有用lvm的,很快,一直沒找對資料學習。
? 第七步:解鎖主庫 unlock tables;
? 第八步:修改從庫配置文件
? ? ? ? ? server-id = 2 ? ? ? ?//從服務器id,避免與主重復
? ? ? ? ? log-slave-updates ? //將從服務器sql進程更新的數據,寫進自己的二進制日志
? ? ? ? ? master-connect-retry = 60 //當從斷開后,60秒后再次連接主
? 第九步:在從庫上設置同步
? ? ? ? ? slave stop;
? ? ? ? ? change master to master_host=’192.168.1.71’,master_user=’第一步生成的用戶’,master_password=’第一步生成的密碼’,master_log_file=’mysql-bin.000062’,master_log_pos=316406;
? 第十步:啟動從庫 slave start; 并查看從庫狀態 show slave statusg,如圖:
? ? ? ? ? ?
注意觀察該狀態的slave_io_running,slave_sql_running為yes,即主從通訊正常。seconds_behind_master為0,說明主從同步延時狀態良好。
說明:主從復制是通過主的dump線程和從的io線程,sql線程來實現的??梢酝ㄟ^登陸mysql 使用 show processlist查看線程狀態。由從的io線程往主服務器拉二進制日志,然后寫入到自己的中繼日志(即relay_log_file),然后通過 從的sql線程讀取中繼日志將sql語句及操作寫入本地數據庫。
mysql主從運行中常見問題:
1. 確保主從服務器mysql均已正常運行,二進制日志均已打開,從中可以使用復制帳號進行訪問主庫,
2. 從上面io線程顯示為no,則start slave io_thread;?
3. 從上面sql線程顯示為no,需要查找錯誤日志,定位到問題后,手動修改或者直接跳過這個操作(確保安全),跳過這個操作可使用set global sql_slave_skip_counter = 1;然后 start slave;
4. 重新做主從,需要刪除從數據庫中的master.info,relay-log.info
5. 當主服務器掛掉或性能下降后,使用從服務器頂上(確保從上已經與同步到主服務器的所有數據,可通過查看主的狀態中的pos和文件,再根據從的狀態中的mster_log_file,read_master_log_pos,relay_master_log_file,exec_master_log_pos來判斷),需要執行:
stop slave io_thread;
stop slave;
reset master;
同時刪除master.info relay-log.info
重啟從mysql
?以上就是MYSQL學習總結(五):MYSQL主從搭建的內容,更多相關內容請關注PHP中文網(www.php.cn)!