Windows上搭建MySQL主備實例

既然要搭建一套主和備,那麼一定是兩個進程,接下來咱們要作的是如何在一臺機器上安裝兩個MySQL,而後將它們的鏈路創建起來。主實例的端口爲3006,備實例的端口爲3007,安裝在D盤。html

安裝MySQL

        M(master)的安裝java

        在windows平臺,咱們使用msi安裝包便可,下載地址 ,大約350M左右,mysql-installer-community-5.7.19.0.msi。安裝過程當中選擇custom方式安裝MySQL-server。mysql

目錄設置:D:\Program Files\MySQL\MySQL Server 5.7-M
數據目錄設置:目錄設置:D:\ProgramData\MySQL\MySQL Server 5.7-M
端口設置:3306
windows服務名稱:MySQL-M

設置root密碼,完成。這樣,咱們就完成了主實例的安裝,接下來拷貝配置信息到備實例。sql

        S(slave)的安裝           windows

直接使用安裝包安裝是禁止的,咱們可使用拷貝的方式將安裝目錄、數據目錄從新拷貝一份。注意全部M相關的信息都被替換爲了S。架構

目錄設置:D:\Program Files\MySQL\MySQL Server 5.7-S
數據目錄設置:目錄設置:D:\ProgramData\MySQL\MySQL Server 5.7-S
端口設置:3307
windows服務名稱:MySQL-S

這樣基礎文件就已經搞定了。S的windows服務須要單獨處理,在「開始」中輸入regedit,打開註冊表。windows的服務信息在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services下,找到M的服務名稱「MySQL-M」,而後右鍵-導出,將此項註冊表導出來,而後使用notepad等文本編輯器將裏面全部M相關的都替換爲S,而後雙擊執行將修改過的註冊表項目添加到註冊表,這樣咱們就看到了新的註冊項「MySQL-S」,因爲項「ImagePath」沒法直接在編輯器中編輯,咱們就在這裏右鍵-修改該數據,將路徑中全部M相關的都設置爲S。註銷windows,打開「服務」,就能夠看到如今有兩個服務:MySQL-M、MySQL-S。編輯器

此時,咱們尚未對實例進行配置,不能啓動MySQL服務或啓動將失敗。spa

配置MySQL

        M(master)的配置日誌

        MySQL的配置都在my.ini中,Linux下位my.conf,默認在數據目錄下。配置該目錄的目的是爲了將主/備區分開來,例如端口號這種基本配置,如下爲須要區別配置的內容。code

#增長
log-bin=mysql-bin

#server-id 主和備不能相同,必須區分開來。
server-id=123456789

#數據目錄根據不一樣的實例角色進行修改
datadir=XXXXX

        S(slave)的配置

同上。

若是要部署 M->S1->S2這樣的架構,那麼須要S1上開啓binlog更新,在配置文件中增長配置項:

#開啓備庫日誌記錄
log_slave_updates

請注意,數據目錄下有個文件auto.cnf,和GTID有關係,必定注意要像server-id同樣區別開來,建議直接刪除掉,重啓服務後將會從新生成。

以上,主備實例初始化OK。

#啓動兩個服務
net start MySQL57-M
net start MySQL57-S

配置主備鏈路

    接下來,要作四件事:受權主備複製專用帳號、確認M位點、修改S指向到M、檢查鏈路。

#M上執行 受權同步帳號

GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync';
#M上確認位點 記錄下文件名以及位點

show master status;

#假設文件爲mysql-bin.000001 位點爲154。後面要用。
#S上執行指向切換

CHANGE MASTER TO 
 master_host = 'localhost',
 master_user = 'db_sync',
 master_password = 'db_sync',
 master_log_file = 'mysql-bin.000001',
 master_log_pos = 154;

#注意 若是以前此備庫已有主庫指向 須要先執行如下命令清空
STOP SLAVE IO_THREAD FOR CHANNEL ''
#S上執行

show slave status;

#確認Slave_IO_Runing以及Slave_SQL_Runing兩個狀態位是否爲「Yes」,若是不爲Yes,請檢查error_log,而後排查相關異常。

建議備庫上執行set GLOBAL read_only=1設置其爲只讀。

這樣主備鏈路就完成了。能夠create database試一下,兩個實例就會當即出現效果啦。

相關文章
相關標籤/搜索