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

来源:https://www.cnblogs.com/yeya/archive/2019/11/25/11878009.html
-Advertisement-
Play Games

[toc] 背景 最近在學慣用Spring Aop來實現資料庫讀寫分離的功能。 在編寫代碼之前,首先是要部署好mysql的環境,因為要實現讀寫分離,所以至少需要部署兩個mysql實例,一主一從,並且主從實例之間能夠自動同步,因為我的本機記憶體並不高,所以就打算在windows上直接搭建mysql的主從 ...


目錄

背景

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

環境說明

本機地址:127.0.0.1(localhost)

mysql版本:mysql-5.7.28-winx64

主庫服務名:master,埠3307

從庫服務名: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:配置內容中的目錄地址要用斜杠,不能用反斜杠,否則等下安裝服務會報錯找不到目錄。

安裝master庫的服務

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

2、執行初始化的命令:

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

如果出現類似下麵的提升就顯示初始化成功,初始化成功會系統自動生成data文件夾,並生成初始密碼,

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

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

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

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

正常來說,安裝完master的服務後我們就可以啟動mysql了,然而這裡有個坑,就是直接mysql後會報錯,因為我們還少配置了一個地方,就是註冊表中master服務的信息。

所以在未修改註冊表之前,建議先別執行啟動命令。

4、修改註冊表

按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資料庫文件夾即可。

5、啟動服務

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

6、進入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,

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

值得說明的是,因為兩個庫只是做了單向關聯,如果往從庫中寫數據的話,主庫是無法同步的。所以從庫只能用於讀取數據,而主庫既能寫,也能讀,當然,多數情況都是用於寫數據,讀取數據一般都是從庫獲取,這樣能有效減輕主庫的壓力,也就是我們常說的讀寫分離。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [20191125]探究等待事件的本源.txt--//當工作中遇到oracle的性能問題時,查看awr報表提供很好的解決問題途徑.但是有時候很容易想當然.--//比如以前我一看到 log file sync等待事件就很主觀的認為redo 磁碟IO不行,實際上真實的情況可能有許多原因.--//比如提交 ...
  • 之前的SQL基礎1中已經介紹了部分Select的內容,但是,實際使用中select 還有很多其他的用法,本文會再介紹部分select的其他用法。 1. 去重查詢 1.1 創建演示表 創建2張表用於演示,表名分別為student和class,後續也將繼續用這2張表演示,2張表的數據如下: studen ...
  • 中台出現的背景 從技術上來看,隨著業務的發展,很多企業在前期搭建了很多的IT系統,系統間像煙囪一樣相互獨立。在面對著越來越複雜的業務,越來越多的數據,企業IT在擴展舊系統上出現了一定的局限,從而產生不斷的重覆建設的問題,企業需要制定數字轉型改革的戰略,來解決複雜業務系統之間的解耦問題,從而降低產品各 ...
  • Kafaka connect 是一種用於在Kafka和其他系統之間可擴展的、可靠的流式傳輸數據的工具。它使得能夠快速定義將大量數據集合移入和移出Kafka的連接器變得簡單。Kafka Connect可以從資料庫或應用程式伺服器收集數據到Kafka topic,使數據可用於低延遲的流處理。導出作業可以 ...
  • 目的 本文主要介紹以下兩點: 一. 安裝Redis 二. 設置開機啟動項 演示 一. 安裝Redis 打開 "Redis官網" ,右擊複製鏈接。 啟動redis 啟動成功 二. 設置開機啟動項 到/etc/init.d 下可以看到redis_6379的進程pid文件 查看redis是否啟動成功 ...
  • 1. 數據類型 MongoDB支持許多數據類型。 字元串 - 這是用於存儲數據的最常用的數據類型。MongoDB中的字元串必須為UTF-8。 整型 - 此類型用於存儲數值。 整數可以是32位或64位,具體取決於伺服器。 布爾類型 - 此類型用於存儲布爾值(true / false)值。 雙精度浮點數 ...
  • 今天,在自己機器上裝了oracle 12c,發現Oracle的服務Oracle RDBMS Kenel Executable (OracleServiceORCL)占用記憶體高達5G,本人電腦記憶體才16G。如此高的占用率,真讓人心疼。於是就對Oracle的記憶體進行調整。具體辦法如下: 1. 在cmd命 ...
  • 目的 本文主要介紹以下兩點: 一. 如何安裝Mysql8.0 二. Navicat連接Mysql 一. 如何安裝Mysql8.0 安裝Mysql有兩種方式: 直接下載官方的源(比較慢) 用163的源,分開安裝 重啟Mysql 查看Mysql預設密碼 登錄 二. Navicat連接Mysql 連接my ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...