下圖就描述了一個多個數據庫間主從復制與讀寫分離的模型(來源網絡):
用途及條件
- 實時災備,用於故障切換
- 讀寫分離,提供查詢服務
- 備份,避免影響業務
- 主庫開啟binlog日志(設置log-bin參數)
- 主從server-id不同
- 從庫服務器能連通主庫
原理
mysql主從復制原理
從庫生成兩個線程,一個I/O線程,一個SQL線程;

參數解釋:
log-bin=mysql-bin //將mysql二進制日志取名為mysql-bin
binlog_format=mixed //二進制日志的格式,有三種:statement/row/mixed,具體分別不多做解釋,這里使用mixed
server-id=101 //為服務器設置一個獨一無二的id便於區分,這里使用ip地址的最后一位充當server-id
配置完成,:wq 保存,重啟mysql
重啟mysql命令:# service mysqld restart
同樣的,進入從服務器,配置從服務器的my.cnf,重復步驟1即可,
唯一的區別是,server-id要改成從服務器的ip尾位,即server-id=105;其他兩項是一樣的,保存,並重啟mySQL;
注:mysql的配置文件路徑查詢方式:
1、Windows下MySQL的配置文件是my.ini,一般會在安裝目錄的根目錄。
2、Linux下MySQL的配置文件是my.cnf,一般會放在/etc/my.cnf,/etc/mysql/my.cnf。如果找不到,可以用find命令查找。
3、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