Mysql數(shù)據(jù)庫之主從分離實例代碼
介紹
MySQL數(shù)據(jù)庫設置讀寫分離,可以使對數(shù)據(jù)庫的寫操作和讀操作在不同服務器上執(zhí)行,提高并發(fā)量和相應速度。
現(xiàn)在的網(wǎng)站一般大點的,都采用有數(shù)據(jù)庫主從分離、讀寫分離,即起到備份作用也可以減輕數(shù)據(jù)庫的讀寫的壓力,一直聽說過這些,但是自己從沒有自己動手親手實踐過,今天有時間實踐一下,記錄下過程。
實驗環(huán)境
我準備了兩臺服務器,一個是本機電腦,一個是遠程vps,分別在兩臺機子上裝的有數(shù)據(jù)庫。
MySQL安裝我就不介紹了,這里需要注意的是:MySQL安裝的版本最好一致,如果不一致,低版本向高版本讀的時候可能有問題,最好保持一致。
主庫master
45.78.57.4 centos 7 Linux系統(tǒng) , mysql版本 5.1.73
從庫slave
本機127.0.0.1 macOs系統(tǒng), mysql版本 5.1.73
配置
創(chuàng)建用戶
在主庫創(chuàng)建一個用戶,用于從庫讀取主庫的執(zhí)行日志。
需要在mysql命令行里執(zhí)行,需要先登錄命令行
修改my.cnf
linux系統(tǒng)在 /etc/my.cnf ,mac系統(tǒng)在安裝的MySQL的目錄,windows也一樣。
在my.cnf文件里增加一下代碼
server-id = 1 //數(shù)據(jù)庫ID號 log-bin=master-bin //啟用二進制日志 log-bin-index=master-bin.index //二進制日志名稱
這里注意不要放在文件的末尾,要放在前面,即[mysqld]后,這里放上我的my.cnf內(nèi)容
[mysqld] server-id=1 log-bin=master-bin log-bin-index=master-bin.index datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql symbolic-links=0 max_allowed_packet=100M [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
查看狀態(tài)
登陸mysql命令行后,輸入show master status,如果出現(xiàn)下面信息代表主庫配置完成
mysql> show master status; +-------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-------------------+----------+--------------+------------------+ | master-bin.000001 | 672675 | | | +-------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
記錄下File和Position兩個內(nèi)容,從庫配置的時候會用到這個。
從庫配置
在本機電腦(從庫)上找到my.cnf文件,然后添加以下內(nèi)容,這個配置和主庫的配置意思是一樣的
server-id=2 relay-log=slave-relay-bin relay-log-index=slave-relay-bin.index
注意確定和主庫的位置一樣,我就因為位置放置在末尾導致一直關聯(lián)不上。
關聯(lián)主從庫
最后一步很重要,登錄從庫的MySQL命令行,執(zhí)行以下代碼,主要是關聯(lián)主庫的一些信息。
change master to master_host='45.78.57.4', #Master 服務器Ip master_port=3306, master_user='test', master_password='test', master_log_file='master-bin.000001', #Master日志文件名 master_log_pos=672675; #Master日志同步開始位置
注意是否執(zhí)行成功,如果執(zhí)行失敗就好好檢查下代碼,看看哪里寫錯了。
如果執(zhí)行正常,就啟動從庫slave,并查看下連接狀態(tài)。
//需要再mysql命令行執(zhí)行 start slave; show slave status\G; //查看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 Slave_SQL_Running: Yes
注意!
這兩個狀態(tài)必須為Yes才算成功,如果不是,則檢查上面步驟那一步配置錯誤。
Slave_IO_Running: Yes Slave_SQL_Running: Yes
測試
現(xiàn)在你在主庫上添加一條數(shù)據(jù),看看從庫上是否有一個相同的數(shù)據(jù),如果有則配置正常,功能使用正常。
主從分離的原理主要是:開啟主庫的執(zhí)行日志功能,然后從庫讀取主庫的日志信息,然后將主庫執(zhí)行過的SQL語句在從庫上面執(zhí)行一遍就做到主從分離,主從數(shù)據(jù)保持一直,備份數(shù)據(jù)的功能。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
DBeaver連接mysql和oracle數(shù)據(jù)庫圖文教程
DBeaver是一款免費的數(shù)據(jù)庫管理工具,支持多種數(shù)據(jù)庫,包括MySQL,下面這篇文章主要給大家介紹了關于DBeaver連接mysql和oracle數(shù)據(jù)庫的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-05-05MySQL使用MRG_MyISAM(MERGE)實現(xiàn)分表后查詢的示例
這篇文章主要介紹了MySQL使用MRG_MyISAM(MERGE)實現(xiàn)分表后查詢的示例,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下2020-12-12美團DB數(shù)據(jù)同步到數(shù)據(jù)倉庫的架構與實踐
今天小編就為大家分享一篇關于美團DB數(shù)據(jù)同步到數(shù)據(jù)倉庫的架構與實踐,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02MySQL系統(tǒng)庫之information_schema的實現(xiàn)
information_schema用于存儲數(shù)據(jù)庫元數(shù)據(jù),本文主要介紹了MySQL系統(tǒng)庫之information_schema的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2023-11-11