一. 複製的基本原理
slave會從master讀取binlog來進行數據同步。
複製過程分爲以下三步:
(1) master將改變記錄到二進制日誌(binary log)。這些記錄過程叫做二進制日誌事件,binary log events。
(2) slave將master的binary log events拷貝到它的中繼日誌(relay log)。
(3) slave重做中繼日誌中的事件,將改變應用到自己的數據庫中。 MySQL複製是異步的且串行化的。
-
複製的基本原則
每個slave只有一個master;
每個slave只能有一個唯一的服務器ID;
每個master可以有多個salve。 -
複製的最大問題
延時
二. MySQL一主一從常見配置
mysql版本一致且後臺以服務運行。
主從都配置在[mysqld]結點下,都是小寫。
下面的示例以本機windows作爲主機,linux作爲從機。
-
主機修改my.ini配置文件
(1) [必須]主服務器唯一ID server-id=1
(2) [必須]啓用二進制日誌
log-bin=自己本地的路徑/data/mysqlbin
log-bin=D:/devSoft/MySQLServer5.5/data/mysqlbin
(3) [可選]啓用錯誤日誌
log-err=自己本地的路徑/data/mysqlerr
log-err=D:/devSoft/MySQLServer5.5/data/mysqlerr
(4) [可選]根目錄
basedir=“自己本地路徑”
basedir=“D:/devSoft/MySQLServer5.5/”
(5) [可選]臨時目錄
tmpdir=“自己本地路徑”
tmpdir=“D:/devSoft/MySQLServer5.5/”
(6) [可選]數據目錄
datadir=“自己本地路徑/Data/”
datadir=“D:/devSoft/MySQLServer5.5/Data/”
(7) read-only=0 主機,讀寫都可以
(8) [可選]設置不要複製的數據庫
binlog-ignore-db=mysql
(9) [可選]設置需要複製的數據庫
binlog-do-db=需要複製的主數據庫名字 -
從機修改my.cnf配置文件
[必須]從服務器唯一ID;
[可選]啓用二進制日誌。
因修改過配置文件,請主機+從機都重啓後臺mysql服務。
-
主機從機都關閉防火牆
windows手動關閉;
關閉虛擬機linux防火牆 service iptables stop -
在Windows主機上建立帳戶並授權slave
GRANT REPLICATION SLAVE ON *.* TO 'zhangsan'@'從機器數據庫IP' IDENTIFIED BY '123456';
flush privileges;
-- 查詢master的狀態,記錄下File和Position的值
show master status;
執行完此步驟後不要再操作主服務器MYSQL,防止主服務器狀態值變化
-
在Linux從機上配置需要複製的主機
-
啓動從服務器複製功能
start slave; -
show slave status\G ; \G表示以K/V鍵值對格式展示
下面兩個參數都是Yes,則說明主從配置成功!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
-
主機新建庫、新建表、insert記錄,從機複製
-
如何停止從服務複製功能 stop slave;