總是有人問我會不會讀寫分離,我有時真的不知道怎麼回答,這麼滴吧,技術本身不難你,難的是咱們能不能遇得到這麼大的項目。如果是真有這麼大項目,光讀寫分離這個事肯定不是一兩個人在搞,應該是多人協作的。
相關學習推薦:mysql影片教學
所以呢!我沒搞過。
但是…
不能做實驗環境嗎? (一個尷尬的笑容)
我從找文檔資料到實驗落地,一共花了3天時間(因為不是全天都在圍繞著這個事情哇)。基本上搞定,就是說,如果有人問我會不會,我說我已經操作過了,不是什麼難事。
mysql > show master status; #看主函式庫狀態mysql > grant replication slave on另外iptable 的話可以自行看看哇. to 'slave'@'%ip%' identified by 'password';# to 後面的解釋: 'slave' 代表哪個帳戶,@後面的是從伺服器的IP by 後面的是密碼;
systemctl status firewalld# 查看防火牆狀態
firewall-cmd – list-all # 查看防火牆的連接埠清單firewall-cmd –permanent –zone=public –add-port=3306/tcp# 放行3306 埠
firewall- cmd –reload# 重啟防火牆
mysql> stop slave; // 停止複製
- mysql> reset slave; // 重設複製
- mysql> start slave; // 開啟複製
- mysql> show slave status\G;
- # 查看狀態
主伺服器上的設定從伺服器192.168.5.239 centos 7.4
- 利用日誌來進行主從設定
# aster live copy configurelog-bin=mysql-bin //日誌檔案名稱binlog_format=mixed // 這個日誌格式,還有幾個選項,大家都選mixed 可選項statement/row/mixed,如果想深究可以去看官方文件server-id = 238 //為了不重複使用盡量採用伺服器IP 的最後一位來命名
skip_name_resolve=ON //這個直接寫上就可以了,參考一下別人的文檔
expire_logs_days = 10 //設定日誌保存的天數,這個吧我覺得可以不用加,加上也無所謂,因為在測試環境,如果正式上線跑的話,就要掂量一下了
# /etc/init.d/mysql restart // 這個不一定是這個指令看自己是用什麼方式安裝的centos 也有systemctl restart mysql的這個不懂可以多研究一下linux操作
##如果兩台伺服器不是複製的話,auto.cnf 的uuid應該會不一樣,如果是複製的話,就該看看了,這個在mysql的安裝目錄的/var、目錄下如果有就把這個檔案刪除或mv 備份一下
從庫上的設定# mysql -uroot -p “password” //登入mysql伺服器、會讓你輸入密碼
mysql>GRANT replication slave ON . TO 'slave'@'%' IDENTIFIED BY '111111'; // 解釋replication 分配複製的權限這個. 可以操作那個庫 後面的'slave'@'%' 表示任何主機用slave都可以進行從庫複製,也可以指定到IP 後面是密碼哈
mysql> show master status;
—————— ———- ————– —————— ——————-
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
———— ———- ————– ———————— ——————
| | 2812 | | | | 中對中 1 row in set (0.00 sec)
看到上面的這個表表示成功了
binlog_format=mixed //日誌格式server-id =239 //伺服器ID 這個和主伺服器一個解釋,用IP的尾巴
# expire_logs_days = 10 //這個我註解掉了,
# early-plugin-load = “” //這個暫時沒有使用,如果啟用可以配置此項,主從複製這個項目並不是關鍵項目relay_log = mysql-relay-bin //這個是個從庫的複製日誌relay_log_index=relay_log.index //日誌索引
/etc/init.d/mysql restart // 這個不一定是這個指令看自己是用什麼方式安裝的centos 也有systemctl restart mysql的這個不懂可以多研究一下linux操作
#設定從函式庫
關閉slave
# mysql -uroot -p //進入終端機(之所以寫詳細點,就是怕看到此文的人會誤會操作不全)
master_host='192.168.5.238',master_user='slave',
master_password='這裡填上面設定主庫複製權限時的密碼',master_log_file='mysql-bin.000010', //這裡填在主函式庫show master status 的檔名,位置對著抄就好了
master_log_pos=2812; //在主函式庫的show master status 找
##mysql>start slave; //啟動從函式庫
檢視主從複製是否成功
#mysql> show slave status \G;Slave_IO_State: Waiting for master to send event Master_Host: 192.168.5.238 Master_User: slave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000010 Read_Master_Log_Pos: 2812 Relay_Log_File: mysql-relay-bin.000013 Relay_Log_Pos: 3025 Relay_Master_Log_File: mysql-bin.000010 Slave_IO_Running: Yes Slave_SQL_Running: Yes#看到Slave_IO_Running 和Slave_SQL_Running 值都為Yes 說明就成功了,如果不成,請看下面的提示信息,對著谷歌百度應該能找出來的
################################## ##########防火牆要先看######步驟無所謂,對著搞,直到成功######細心,不能慌########### #相關圖文教學:###mysql資料庫圖文教學##########
以上是mysql基於日誌的主從複製詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!