Mysql主從復制
主從復制功能通過在主服務器和從服務器之間切分處理客戶查詢的負荷,可以得到更好的客戶響應時間,
Mysql主從復制的優點如下:
-
增加健壯性,主服務器出問題,切換到從服務器作為備份。
</li> -
優化響應時間,不要同時在主從服務器上進行更新,可能會引起沖突
</li> -
在從服務器備份過程中,主服務器繼續處理更新
</li> </ul>主從復制工作原理:
-
主服務器將用戶對數據庫的更新操作以二進制格式保存在 Binary Log 日志文件中,然后由Binlog Dump線程將BinaryLog日志文件傳輸給服務器。
</li> -
從服務器通過I/O線程將主服務器Binary LOG文件中的更新操作復制到一個Relay Log 中繼日志文件
</li> -
從服務器通過SQL線程 將Relay Log 日志文件中的操作依次在本地執行,從而實現主從同步
</li> -
</li> </ul>
主從復制的配置
-
確保主服務器的版本不高于從服務器的版本
</li> -
在主服務器中授予以個連接賬號
</li> </ol>GRANT replication slave ON *.*TO root@'%', //表示要創建用戶名為ROOT的用戶, IDENTIFIED BY '110'; //從服務器連接主服務器的密碼
3,配置主服務器
Windows 打開my.ini,Linux 用戶打開my.cnf
log-bin = mysql-bin server-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-bin server_id = 2 log_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端口的程序 //找到他的PID sudo kill -9 PID //結束掉進程 sudo /etc/init.d/mysql restart //再次重啟MYSQL服務器 su mysql //使用安全模式啟動即可
-
-