windos教你從零開始搭建mysql主從複製多實例高可用集羣

windos搭建mysql主從複製多實例集羣

因爲沒有更多的機器來搭建多機器的集羣環境,所以這裏使用單機多實例監聽多端口來實現mysql的集羣環境。

爲什麼要使用mysql主從環境

一般來說讀流量大於寫流量,所以當流量過大時可以通過mysql主從來擴展從庫,讀取從庫從而應對讀流量的衝擊。主從複製的實現原理和優缺點有興趣的可以看我這個文章mysql主從讀寫分離

搭建主從環境

這裏假設你已經下載安裝好mysql了。已經可以啓動一個mysql 3306的實例了。

現在我們複製一個配置文件。我原來的配置文件是my.ini,我直接複製粘貼改個名字,爲了省事命名成3307my.ini

cp my.ini 3307my.ini

接下來我們有了兩個配置文件,一個my.ini,一個3307my.ini

我們修改3307my.ini的配置文件內容。

[mysqld]
port=3307  # 新實例的端口
basedir=D:/MySQL5.7.26/3307  # 新實例的文件夾 我直接放在了原來mysql文件夾下面
datadir=D:/MySQL5.7.26/3307/data/ # 新實例的數據存放路徑
character-set-server=utf8
default-storage-engine=InnoDB
max_connections=100
collation-server=utf8_unicode_ci
init_connect='SET NAMES utf8'
innodb_buffer_pool_size=64M
innodb_flush_log_at_trx_commit=1
innodb_lock_wait_timeout=120
innodb_log_buffer_size=4M
innodb_log_file_size=256M
interactive_timeout=120
join_buffer_size=2M
key_buffer_size=32M
log_error_verbosity=1
max_allowed_packet=16M
max_heap_table_size=64M
myisam_max_sort_file_size=64G
myisam_sort_buffer_size=32M
read_buffer_size=512kb
read_rnd_buffer_size=4M
server_id=2  # server_id需要修改成和原來不一樣的
skip-external-locking=on
sort_buffer_size=256kb
table_open_cache=256
thread_cache_size=16
tmp_table_size=64M
wait_timeout=120

log-bin=D:/MySQL5.7.26/3307/mysql-bin  # 開啓binlog binlog用於主從同步

server-id=123455 # server-id同上

log-error=D:/MySQL5.7.26/3307_err.log              #錯誤日誌

修改完成接下來使用這個配置文件啓動,你會發現啓動失敗,哈哈哈哈。

因爲新的數據庫沒有mysql的基本信息那些庫和表還有插件,所以我們需要複製過去,我是採用了這種簡單粗暴的方法,網上還有使用mysql_install_db的,不過我發現我的mysql沒有這玩意。

我們複製datashare兩個文件夾複製到3307文件夾裏面。

在這裏插入圖片描述

下面是./3307/文件夾下面的內容,複製過來以後這兩個文件夾就過來了。

在這裏插入圖片描述
接下來你可以啓動第二個mysql實例了。回到3307目錄的上層目錄,也就是你的mysql根目錄。然後運行下面的命令。使用剛纔的3307my.ini啓動新實例。

./bin/mysqld.exe --defaults-file=./3307my.ini

啓動成功後可以進行連接了。連接上去以後可以看到現在和3306庫一樣了。接下來開始配置主從複製

我們先進入3306主庫客戶端,查看一些數據。執行下面的命令。

show master status;

可以看到下面的內容。下面的file參數和position參數要在從庫配置中用到。

在這裏插入圖片描述

接下里進入3307客戶端執行下面的命令。

change master to 
master_host='127.0.0.1',  --master地址
master_port=3306,         --master端口
master_user='root',       --master登錄用戶名
master_password='pa88word', --master登錄密碼
master_log_file='mysql-bin.000009',  --要開始同步的binlog文件 上面的file參數
master_log_pos=154;                  --要開始同步的具體指針位置 上面的position參數

執行完這個命令,從庫就知道主庫在哪了,就知道誰是主庫了,也知道該從哪裏開始同步了。

你以爲接下來就完了?不不不,接下來還需要啓動從庫才行。

start slave;

這個命令是什麼呢,主要是啓動從庫的更新線程,從庫有兩個更新線程,一個io線程負責把主庫的binlog寫入從庫的relay log。一個sql線程負責把relay log中的信息寫入從庫。

接下里看看從庫的狀態,執行下面的命令。

show slave status;

在這裏插入圖片描述

這裏面主要看Slave_IO_RunningSlave_SQL_Running也就是上面說的兩個線程是否在運行,如果是Yes,那麼就ok了。

如果不是Yes可以退出重啓一下mysql服務試試。

如果已經可以了,那麼可以在3306主庫裏面修改一些數據進行測試了。如果有問題你沒搭建成功,歡迎你來找我。下一篇文章教你搭建 mysql 2主多從集羣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章