Mysql主從複製

實現原理
MySQL支持單向、異步複製,複製過程中一個服努器充當主服努器 ,而一個或多個其它服努器充當從服努器
MySQL複製基於主服努器在二進制日誌中跟蹤所有對數據庫的更改 (更新、刪除等等)
每個從服務器從主服務器接收主服務器已經記錄到其 二進制的保存的更新
實現步驟
①Master將改變記錄到二進制日誌(binary log)中
②Slave將Master的binary log events拷貝到它的中繼日誌(re丨ay
log);
③Slave重做中繼日誌中的事件,將改變反映它自己的數據。
原理圖
在這裏插入圖片描述

步驟1:
主庫設置
開啓主服務器的binary log

vim /etc/my.cnf
去掉  log-bin=mysql-bin 註釋
mysql-bin 日誌名稱
修改 server-id =1; 更改爲唯一的值,可以修改爲ip的尾數
重啓mysql
進入mysql 
查看mysql狀態 
show master status 
重置日誌記錄
reset master 
授權指定ip通過用戶slave 使用123456密碼訪問log-bin文件
grant replication slave on *.* to [email protected] identified by '123456' ;

步驟2:
從庫設置

vim /etc/my.cnf
註釋log-bin=mysql-bin以及binlog-format=mixed
修改 server-id = ; 更改爲不一樣的值,可以修改爲ip的尾數
開啓 relay_log=mysql-relay-bin;
進入mysql;
執行 stop slave ;#停止監聽
執行 ->change master to
     ->master_host='192.168.199.151',
     ->master_port='3306',
     ->master_user='slave',
     ->master_password='123456',
     ->master_log_file='mysql-bin.000001',
     ->master_log_pos=402 ;

注意:master_log_file和master_log_pos的值是通過主庫執行 show master status 查看得到的.
執行 start slave ;#開啓監聽;
執行後就可以監聽了;
查看狀態 show slave status\G ;查看狀態;

Slave_IO_State:Wating for master to send event   #當前狀態
Slave_IO_Runing:Yes
Slave_Sql_Runing:Yes

步驟3:
Mysql 雙主熱備
原理
在這裏插入圖片描述

解決問題
master 掛掉不會影響業務

實現方法

在slave 從服務器中修改my.cnf
開啓 log-bin=mysql-bin
binlog_format=mixed
relay_log=mysql-relay-bin
log_slave_updates=1    #此處將從主庫獲得的bin-log和從庫的bin-log一致,保存後退出
進入mysql,
授權主庫可以監聽從庫
grant replication slave on *.* to [email protected] identified by '123456' ; 

同樣也需要設置原有的從庫

vim /etc/my.cnf
開啓 relay_log=mysql-relay-bin;
設置 log_slave_updates=1 
重啓mysql;
執行 ->change master to
     ->master_host='192.168.199.152',
     ->master_port='3306',
     ->master_user='slave',
     ->master_password='123456',
     ->master_log_file='mysql-bin.000001',
     ->master_log_pos=402 ;

#注意:master_log_file和master_log_pos的值是通過從庫執行 show master status 查看得到的.
執行 start slave ;#開啓監聽;
這樣就實現了雙主熱備,將從庫同樣變成了主庫.

同樣還需要設置2臺從庫分別來同步以上兩臺主庫,重複步驟二.
(注意:server_id 不能重複)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章