如何搭建讀寫主從數(shù)據(jù)庫
### 原理
1.主服務器建立二進制日志,每產(chǎn)生語句或磁盤變化寫進日志
2.從服務器建立relaylog
3.主服務器創(chuàng)建 授權復制賬號,從利用復制賬號來監(jiān)聽主服務器的二進制日志
具體原理參考:https://mp.weixin.qq.com/s/8dXHIq3P-kYSgF3o9zhZ8Q
1. 修改主數(shù)據(jù)庫的配置文件my.cnf,如下修改,修改后的重啟數(shù)據(jù)庫?
#主數(shù)據(jù)庫的配置
#定義Mysql服務的唯一標識 每個mysql服務Id需唯一
server-id=100
#開啟mysql binlog功能
log-bin=mysql-bin
#設置binlog的日志格式,格式分別 statement row mixed。通常使用row
binlog-format=row
#此參數(shù)表示只記錄指定數(shù)據(jù)庫的二進制日志,默認全部記錄。
binlog-do-db=mydatabase

2. 修改主數(shù)據(jù)庫的配置文件my.cnf,如下修改,修改后的重啟數(shù)據(jù)庫?
#從服務器的配置
#定義Mysql服務的唯一標識 每個mysql服務Id需唯一
server-id=200
#啟用中繼日志,其中mysql-relay表示日志的文件名稱,文件存放在datadir參數(shù)指向的目錄下面
relay-log=mysql-relay
#指定只讀
read-only=1
#需要復制的數(shù)據(jù)庫
replicate-do-db=mydatabase

3.在主數(shù)據(jù)庫創(chuàng)建 授權復制賬號
grant replication client,replication slave on *.* to 'repl'@'%' identified by 'r123456';
FLUSH PRIVILEGES;

4.登入主數(shù)據(jù)庫,查看binlog的日志及位置
#查看master的狀態(tài)看,尤其是當前的日志及位置
show master status;

5.登入從數(shù)據(jù)庫,利用賬號復制主數(shù)據(jù)庫的binlog, sql語句
change master to
master_host='172.172.0.10',
master_user='repl',
master_password='r123456',
master_log_file='mysql-bin.000289',
master_log_pos=322;

6.在從數(shù)據(jù)庫上啟動復制
start slave;?

其他:
#查看master的狀態(tài)看,尤其是當前的日志及位置
show master status;
#查看從服務器狀態(tài)
show slave status;
#啟動從服務器狀態(tài)(開始監(jiān)聽master的變化)
start slave;?
#停止slave狀態(tài)
stop slave;
#重置從服務器 的狀態(tài)
reset slave;