我們知道很多網(wǎng)站現(xiàn)在都采用主從分離、讀寫分離,那么本篇文章我們主要介紹mysql數(shù)據(jù)庫設(shè)置主從分離,希望大家對此有一個(gè)更清晰的認(rèn)識。
1、介紹
mysql數(shù)據(jù)庫設(shè)置讀寫分離,可以使對數(shù)據(jù)庫的寫操作和讀操作在不同服務(wù)器上執(zhí)行,提高并發(fā)量和響應(yīng)速度。現(xiàn)在的網(wǎng)站一般大點(diǎn)的,都采用有數(shù)據(jù)庫主從分離、讀寫分離,既起到備份作用也可以減輕數(shù)據(jù)庫的讀寫的壓力,一直聽說過這些,但是從來沒有親自動手實(shí)踐過,今天有時(shí)間實(shí)踐一下,記錄下過程。
2、環(huán)境準(zhǔn)備
我準(zhǔn)備了兩臺服務(wù)器,一個(gè)是本機(jī)PC,一個(gè)是遠(yuǎn)程服務(wù)器,分別在兩臺機(jī)子上裝有Mysql數(shù)據(jù)庫MySQL安裝我就不介紹了,這里需要注意的是:MySQL安裝的版本最好一致,如果不一致,低版本向高版本讀的時(shí)候可能有問題,最好保持一致。
主庫master 服務(wù)器:172.10.10.69?centos 7?Linux系統(tǒng) ,?mysql版本 5.6.35
從庫slave 本機(jī):172.10.10.240?Win7系統(tǒng),?mysql版本 5.6.35
3、主庫配置
在主庫中創(chuàng)建一個(gè)用戶root,用于從庫讀取主庫的執(zhí)行日志。
需要在mysql命令行里執(zhí)行,需要先登錄命令行
1、GRANT?REPLICATION?SLAVE?ON *.*?TO?‘root’@’192.10.10.240’?IDENTIFIED?BY?‘123456’; 2、flush?privileges;?
修改my.cnf文件:
在【mysqld】下面添加
server-id=13log-bin=master-binlog-bin-index=master-bin.index
重啟MySQL
進(jìn)入mysql命令行,輸入show master status;查看信息
記住File和Position,因?yàn)樵谂渲脧姆?wù)時(shí)要使用。
4、配置從服務(wù)器
修改my.cnf
server-id=2relay-log=slave-relay-binrelay-log-index=slave-relay-bin.index
重啟數(shù)據(jù)庫。
管連主數(shù)據(jù)庫,在命令行輸入一下命令:
change master to master_host=’192.10.10.69′, #Master 服務(wù)器Ipmaster_port=3306,master_user=’root’,master_password=’123456′, master_log_file=’master-bin.000255′, #Master日志文件名master_log_pos=1575; #Master日志同步開始位置
注意是否執(zhí)行成功,如果執(zhí)行失敗就好好檢查下代碼,看看哪里寫錯(cuò)了。
如果執(zhí)行正常,就啟動從庫slave,并查看下連接狀態(tài)。
//需要再mysql命令行執(zhí)行 start slave; show slave status; //查看slave連接狀態(tài)
狀態(tài)信息:
Slave_IO_State: Waiting for master to send event Master_Host: 45.78.57.4 Master_User: test Master_Port: 3306 Connect_Retry: 60 Master_Log_File: master-bin.000001 Read_Master_Log_Pos: 672913 Relay_Log_File: slave-relay-bin.000044 Relay_Log_Pos: 504 Relay_Master_Log_File: master-bin.000001 Slave_IO_Running: Yes //必須為YES Slave_SQL_Running: Yes //必須為YES
如果Slave_IO_Running和Salve_SQL_Running不同時(shí)為YES,則配置錯(cuò)誤,檢查上面步驟。
5、測試
在主數(shù)據(jù)庫添加一條數(shù)據(jù),在從數(shù)據(jù)庫查看是否有數(shù)據(jù)。