windows版的mysql主從複製環境搭建

背景

最近在學習用Spring Aop來實現數據庫讀寫分離的功能。
在編寫代碼以前,首先是要部署好mysql的環境,由於要實現讀寫分離,因此至少須要部署兩個mysql實例,一主一從,而且主從實例之間可以自動同步,由於個人本機內存並不高,因此就打算在windows上直接搭建mysql的主從實例(不想開虛擬機),但這個過程當中卻遇到了一些麻煩,雖然最後都解決了,但也花費了很多的時間。爲了不之後在一樣的事情上浪費時間,同時也方便讀者們能複製相同的場景,因此就寫下這篇博客來記錄一下搭建環境的過程。mysql

環境說明

本機地址:127.0.0.1(localhost)sql

mysql版本:mysql-5.7.28-winx64數據庫

主庫服務名:master,端口3307windows

從庫服務名:slave,端口3308緩存

安裝並配置主庫master

下載

首先是下載mysql,直接到官網下載zip版的安裝包,這裏建議下載比較新的版本,好比筆者的版本是5.7,這也是網上不少大神的建議,
工具

解壓並建立my.ini文件

解壓安裝包,命名文件夾爲master,進入文件夾,建立一個名爲my.ini的空文本,學習

文本中的內容以下:日誌

[client]
# 端口號,默認是3306,同一個環境下不一樣的mysql實例端口號不能相同
port=3307
default-character-set=utf8

[mysqld] 
#主庫配置
server_id=1
log_bin=master-bin
log_bin-index=master-bin.index

# 設置爲本身MYSQL的安裝目錄
basedir=D:/software/mysql/master
# 設置爲MYSQL的數據目錄,data文件夾由mysql自動生成
datadir=D:/software/mysql/master/data
port=3307
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER

# 開啓查詢緩存
explicit_defaults_for_timestamp=true

ps:配置內容中的目錄地址要用斜槓,不能用反斜槓,不然等下安裝服務會報錯找不到目錄。code

安裝master庫的服務

一、cmd管理員身份運行,進入master的bin目錄下,server

二、執行初始化的命令:

mysqld --initialize --user=mysql --console

若是出現相似下面的提高就顯示初始化成功,初始化成功會系統自動生成data文件夾,並生成初始密碼,

三、初始化完成後,執行安裝服務的命令:

mysqld --install master --defaults-file="D:\software\mysql\master\my.ini"

master爲服務的名稱,--defaults-file爲ini文件的路徑,出現"Service successfully installed."即爲成功

注:若是安裝失敗的話,看看是否沒有管理員身份運行cmd。

正常來講,安裝完master的服務後咱們就能夠啓動mysql了,然而這裏有個坑,就是直接mysql後會報錯,由於咱們還少配置了一個地方,就是註冊表中master服務的信息。

因此在未修改註冊表以前,建議先別執行啓動命令。

四、修改註冊表

按win+R,在彈框中輸入regedit打開註冊表,找到master服務,路徑是HKEY_LOCAL_MACHINE–>SYSTEM–>CurrentControlSet–>Services–>master,修改ImagePath

D:\software\mysql\master\bin\mysqld --defaults-file=D:\software\mysql\master\my.ini master

路徑就對應本身安裝的master數據庫文件夾便可。

五、啓動服務

依然是在bin目錄下執行啓動服務,命令是net master start,啓動成功後會出現以下的提示:

六、進入mysql

進入mysql的命令是:mysql -u root -p ,但由於咱們改了端口號,因此命令要改成mysql -u root -P3307 -p,而後輸入剛纔生成的初始化密碼便可進入mysql,

因爲這個初始密碼實在是太蛋疼,因此咱們最好更改密碼,更改語句爲:

set password=password('新密碼');

例如LZ設置的密碼爲123456,

這樣就成功設置了root用戶的密碼了,而後咱們能夠用Navicat等圖形化工具來操做鏈接數據庫了,

安裝從庫slave

從庫的安裝步驟和主庫同樣,只是my.ini中修改對應的配置便可。

[client]
port=3308
default-character-set=utf8

[mysqld] 
#從庫配置
server_id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

# 設置爲本身MYSQL的安裝目錄 
basedir=D:/software/mysql/slave
# 設置爲MYSQL的數據目錄 
datadir=D:/software/mysql/slave/data
port=3308
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
#開啓查詢緩存
explicit_defaults_for_timestamp=true

主從庫實現關聯

兩個庫都安裝好了,咱們就能夠來操做主從庫之間的關聯,實現主從之間的複製,

先登陸主庫,輸入 show master status;

能夠發現主庫中生成了一個二進制的文件,這是一個日誌文件,從庫關聯它就能夠實現和主庫的同步了。

登陸從庫,執行下面的命令,

change master to master_host='127.0.0.1',master_port=3307,master_user='root',master_password='123456',master_log_file='master-bin.000001',master_log_pos=0;

不難看出上面都是主庫的配置信息,成功後執行命令start slave 開啓主從複製

完成以後,咱們簡單驗證下,在master庫中建立一個數據庫,名字就叫test,

而後slave中也生成了一樣的數據庫test,

這樣,主從複製就成功實現了。

值得說明的是,由於兩個庫只是作了單向關聯,若是往從庫中寫數據的話,主庫是沒法同步的。因此從庫只能用於讀取數據,而主庫既能寫,也能讀,固然,多數狀況都是用於寫數據,讀取數據通常都是從庫獲取,這樣能有效減輕主庫的壓力,也就是咱們常說的讀寫分離。

相關文章
相關標籤/搜索