mysql:簡單的主從複製

兩臺 mysql 服務器:主(master)從(slave),寫進主服務器的數據,從服務器也有一份

其實還有,主主複製之類的別的方案

原理:主執行一條語句,記錄在 binlog,從讀取 binlog(需要把binlog轉換成relaylog) 也執行一遍。

根據原理分析:

  1. 主服務器要配置binlog?
  2. 從服務器要配置relaylog?
  3. 從服務器如何有權讀取master的binlog?
    答:授權,master要授予slave賬號

編輯mysql配置文件

一般yum安裝的,路徑爲 /etc/my.conf
我們vim /etc/my.conf

主服務器配置:

# 一般會用 server-id 來區分不同服務(是習慣不是規定)
server-id=201
# 聲明二級制日誌文件爲mysql-bin.xxxx
log-bin=mysql-bin
# 二級制日誌的格式 mixed/row/statement
## statement:二進制記錄執行語句,如update....
## row:二進制記錄的是磁盤變化
## mixed:自動判斷
binlog-format=mixed

二級制日誌的格式哪個好?

// 語句長而磁盤變化少,宜用row
update age=age+1 where id=3
// 語句短而磁盤變化多,宜用statement,所有的工資都加100影響上萬行數據
update salary=salary+100
// 拿不定用mixed混合,會自動判斷

從服務器配置:

server-id=202
log-bin=mysql-bin
binlog-format=mixed
relay-log=mysql-relay

啓動兩臺服務器:

service mysqld start

查看master,slave狀態:

show master status
show slave status

這時slave是不行的,我們需要授予權限:

grant replication client,replication slave on *.* to rep@"192.168.1.%" identified by 'repl'

然後slave拿着賬號來連接:

change master to
master_host="102.168.1.201",
master_user="repl",
master_password="repl",
master_log_filee="mysql-bin.000001",
master_log_pos=348

再查看狀態:

show slave status

發現兩者打通了。
關閉防火牆:

service iptables stop

重啓:

restart slave

這時就完成了,你可以在第一個服務器創建一個數據庫,會發現第二個服務器也有創建

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