標籤:
主從複製功能通過在主伺服器和從伺服器之間切分處理客戶查詢的負荷,可以得到更好的客戶回應時間,
Mysql主從複製的優點如下:
主從複製工作原理:
主伺服器將使用者對資料庫的更新操作以二進位格式儲存在 Binary Log 記錄檔中,然後由Binlog Dump線程將BinaryLog記錄檔傳輸給伺服器。
從伺服器通過I/O線程將主伺服器Binary LOG檔案中的更新操作複製到一個Relay Log 中繼記錄檔
從伺服器通過SQL線程 將Relay Log 記錄檔中的操作依次在本地執行,從而實現主從同步
主從複製的配置
確保主伺服器的版本不高於從伺服器的版本
在主伺服器中授予以個串連帳號
GRANT replication slave ON *.*TO [email protected]‘%‘, //表示要建立使用者名稱為ROOT的使用者,IDENTIFIED BY ‘110‘; //從伺服器串連主伺服器的密碼
3,配置主伺服器
Windows 開啟my.ini,Linux 使用者開啟my.cnf
log-bin = mysql-binserver-id //我的Mysql版本是5.5.20 預設已經配置好了
4,預設配置之後重啟主伺服器
5,運行
mysql> SHOW MASTER STATUS;
File表示伺服器正在使用的 binlog檔案(表示從伺服器從這個檔案中複製),Position 的值與binlog的檔案大小相同,表示下一個被記錄事件的位置
其中Binlog_Do_DB是預設使用哪個資料庫,Binlog_Ignore_DB是忽略掉哪個資料庫
6,配置從伺服器
從伺服器的server_id 是與主伺服器不同的
log-bin = mysql-binserver_id = 2log_slave_updates = 1 //允許備庫將其重要的事件也記錄到自身的二進位檔案中read_only //該選項會阻止任何沒有特權的許可權線程修改資料
7,指定主伺服器資訊
CHANGE MASTER TO MASTER_HOST = ‘192.168.0.10‘, // 主伺服器的IP地址MASTER_USER = ‘root‘,MASTER_PASSWORD = ‘110‘,MASTER_LOG_FILE =‘mysql-bin.000002‘,MASTER_LOG_POS = 0; //從日誌的開始位置開始讀
8,查看是否設定正確
SHOW SLAVE STATUS\G
執行語句start slave
看到伺服器的I/O線程 和SQL線程都已經開始運行
我們在主伺服器中建立一個資料庫 test1
能看到我們的從伺服器中也出現了 test1 插入資料等同理
錯誤問題
當我們從從伺服器的MYSQL命令列退出之後
再次進入到MYSQL 命令列會報錯 這是因為 許可權的問題導致的
此時我們可以進入 /var/lib/mysql/中 刪除掉 (謹慎,刪除之後表就找不回來了)
sudo /etc/init.d/mysql restart //重啟MYSQL伺服器
結果發現還是會報錯
我們進入/var/log/mysql/error.log 中查看錯誤
發現我們的連接埠3306已經被佔用了
netstat -anp|grep 3306 //查看正在使用3306連接埠的程式//找到他的PIDsudo kill -9 PID //結束掉進程sudo /etc/init.d/mysql restart //再次重啟MYSQL伺服器su mysql//使用安全模式啟動即可
Mysql主從複製