1. 程式人生 > >mariadb的主從同步和讀寫分離

mariadb的主從同步和讀寫分離

         資料庫的優化設計對以後web專案能否承擔高併發所帶來的巨大負擔是個非常好的解決方案。主從同步和讀寫分離就是個常用的方法,主資料庫用來寫入資料,從資料庫用來查詢,分擔了主資料庫的一大部分工作,這樣做的好處是當主伺服器崩了之後,還是在從伺服器上獲取到資料,起到的備份的作用。

接下來說說如何實現資料庫的主從同步和讀寫分離

看個人情況,可有三四臺主機都沒問題。本人現在是用2臺伺服器,實現2臺伺服器資料庫的主從同步。

我把阿里雲主機的資料庫作為主資料庫,騰訊雲主機的資料庫作為從資料庫,兩臺主機的系統都是centos7,mariadb的版本為5.5.52

配置主資料庫:

1.用vim開啟my.cnf:

vim /etc/my.cnf

2.在[mysqld]標籤下面增加以下程式碼:

server-id=1   #主資料庫的id
log-bin=master-bin   #日誌路徑,作用是從資料庫是根據這個日誌來複制主資料庫的資料的

3.停止mariadb服務
systemctl stop mariadb.service
4.登入mariadb,授權遠端使用者(slaveuser為使用者名稱和密碼   “127.0.0.1”為遠端伺服器的地址,這裡需要改成自己伺服器的地址)
grant replication slave on *.* to 'slaveuser'@'127.0.0.1' identified by 'slaveuser';
flush privileges;

5.重啟mariadb服務

systemctl restart mariadb.service

配置從資料庫

1.用vim開啟my.cnf:

vim /etc/my.cnf

2.在[mysqld]標籤下面增加以下程式碼:

server-id=2   #這個id必須不能和主資料庫相同
read-only=on  #設定該資料庫是隻讀狀態
relay-log=relay-bin  #日誌

3.重啟mariadb服務
systemctl restart mariadb.service
4.在主伺服器的資料庫上查詢主服務狀態
SHOW MASTER STATUS



5.進入從伺服器的資料庫:master_host需改為自己的主伺服器地址

change master to master_host='127.0.0.1',master_user='slaveuser',master_password='slaveuser', master_log_file='master-bin.000005',master_log_pos=882;

6.啟動slave同步(在資料庫中)
START SLAVE;

7.在slave伺服器上檢視slave同步的狀態
show slave status\G

8.檢視Slave_IO_Running和Slave_SQL_Running是否都為yes(一定要全部為yes。否則就是你配置錯了,再重新配置一遍從資料庫)


就這樣,你可以在主資料庫裡創一個數據。然後再在從資料庫裡檢視是否也有這個資料庫。經本人測試是成功的。而且從資料庫是不能夠建立和插入資料的,因為設定成只讀狀態了。這樣就實現了讀寫分離。在實際專案中,可以利用主資料庫插入,更新資料,從資料用來查詢資料。這樣極大的減輕了資料庫的負擔。保障web專案的高可用性