下圖就描述了一個多個數據庫間主從複製與讀寫分離的模型(來源網絡):mysql
用途及條件 sql
原理數據庫
mysql主從複製原理服務器
從庫生成兩個線程,一個I/O線程,一個SQL線程;網絡
參數解釋:spa
log-bin=mysql-bin //將mysql二進制日誌取名爲mysql-bin線程
binlog_format=mixed //二進制日誌的格式,有三種:statement/row/mixed,具體分別很少作解釋,這裏使用mixed3d
server-id=101 //爲服務器設置一個獨一無二的id便於區分,這裏使用ip地址的最後一位充當server-id rest
配置完成,:wq 保存,重啓mysql日誌
重啓mysql命令:# service mysqld restart
一樣的,進入從服務器,配置從服務器的my.cnf,重複步驟1便可,
惟一的區別是,server-id要改爲從服務器的ip尾位,即server-id=105;其餘兩項是同樣的,保存,並重啓mySQL;
注:mysql的配置文件路徑查詢方式:
一、Windows下MySQL的配置文件是my.ini,通常會在安裝目錄的根目錄。
二、Linux下MySQL的配置文件是my.cnf,通常會放在/etc/my.cnf,/etc/mysql/my.cnf。若是找不到,能夠用find命令查找。
三、Linux用rpm包安裝的MySQL是不會安裝/etc/my.cnf文件的
查詢配置文件路徑方式:
2.在主服務器上爲從服務器分配一個帳號,就像一把鑰匙,從服務器拿着這個鑰匙,才能到主服務器上來共享主服務器的日誌文件。
進入主服務器的mysql界面,
命令: # mysql -u root -p 111111 //我這裏mysql帳號是root,密碼是111111
在mysql操做界面下,輸入下面一行命令:
GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '111111';
3.查看主服務器BIN日誌的信息(執行完以後記錄下這兩值,而後在配置完從服務器以前不要對主服務器進行任何操做,由於每次操做數據庫時這兩值會發生改變).
4.設置從服務器
進入從服務器mysql
命令: # mysql -u root -p111111
關閉slave(若是你之前配置過主從的話,必定要先關閉)
命令:stop slave;
開始配置:
輸入下面代碼便可:
參數解釋:MASTER_HOST : 設置要鏈接的主服務器的ip地址
MASTER_USER : 設置要鏈接的主服務器的用戶名
MASTER_PASSWORD : 設置要鏈接的主服務器的密碼
MASTER_LOG_FILE : 設置要鏈接的主服務器的bin日誌的日誌名稱,即第3步獲得的信息
MASTER_LOG_POS : 設置要鏈接的主服務器的bin日誌的記錄位置,即第3步獲得的信息,(這裏注意,最後一項不須要加引號。不然配置失敗)
先在從服務器配置完成,啓動從服務器:
命令: start slave;
5.查看是否配置成功:
命令: show slave status;
上面兩項均爲yes,說明配置成功
master開啓二進制日誌後默認記錄全部庫全部表的操做,能夠經過配置來指定只記錄指定的數據庫甚至指定的表的操做,具體在mysql配置文件的[mysqld]可添加修改以下選項:
# 不一樣步哪些數據庫 binlog-ignore-db = mysql binlog-ignore-db = test binlog-ignore-db = information_schema # 只同步哪些數據庫,除此以外,其餘不一樣步 binlog-do-db = game