Windows環境下MySQL主從配置


以下操作是在 Windows Web Server 2008 R2 操作系統下

一、環境介紹及說明

主庫的版本:mysql-5.6.42-winx64.zip

主庫的ip地址:127.0.0.1

主庫的端口:3306

從庫的版本:和主庫一樣

從庫的ip地址:127.0.0.1

從庫的端口:3307

如果有多余的服務器也可以不用都配置到一台電腦上,只需要各服務器ip能ping通就行。

注:主庫和從庫版本可以一致也可以不一致,需要說明一點,如果兩者版本不一致,一般主庫的版本需要比從庫的版本低,這樣就可以避免由於版本問題,有些sql不能執行的問題。

二、下載安裝MySQL

MySQL官網給出的安裝包有兩種格式,一個是msi格式,一個是zip格式的,這里使用zip格式的進行安裝。

MySQL5.6下載鏈接:https://dev.mysql.com/downloads/mysql/5.6.html#downloads

下載完成后解壓,解壓后的目錄:

三、配置MySQL主從

(1)主庫(MySQL-Master)的安裝與配置

主庫根目錄下有一個 my-default.ini 命名的配置文件復制一個,改名為 my.ini,用文本編輯器打開,進行配置以下基本信息:

[mysqld]

# 服務端使用的字符集默認為8比特編碼的latin1字符集,設置為utf8字符

character-set-server=utf8

# 創建新表時將使用的默認存儲引擎

default-storage-engine=INNODB

 

# 設置mysql的安裝目錄

basedir = D:\MySQL-5.6\mysql-1

# 設置 mysql數據庫的數據的存放目錄,MySQL 8+ 不需要以下配置,系統自己生成即可,否則有可能報錯

datadir = D:\MySQL-5.6\mysql-1\data

# 設置3306端口

port = 3306

server_id = 1    # 主庫和從庫需要不一致,分別配一個唯一的ID編號

log_bin=master-bin    # 二進制文件存放路徑,存放在根目錄data文件夾下

 

# binlog-do-db=test   # 需要復制的庫,多個庫用逗號隔開,如果此項不配置所有主庫都參與復制,這里要是配置了,同時也要在Slave(也就是你的從庫) 上設定。

# binlog-ignore-db=mysql    # 不需要復制的庫,和上項同理

 

[mysql]

# 設置mysql客戶端默認字符集

default-character-set=utf8

[client]

default-character-set=utf8

配置好的截圖:

配置好主數據庫后,復制,粘貼一個,作為從數據庫

打開cmd,進入主庫的bin文件夾中

輸入以下安裝命令:

mysqld -install MySQL-Master

注:其中的MySQL-Master為主庫MySQL的服務名稱

這里遇到一個如下圖所示的錯誤提示:

解決方法:在別的Windows系統的下 C:\Windows\System32 中搜索找到 msvcp100.dll,復制到服務器相同的文件夾中即可。

出現以下提示,表示安裝成功。

安裝成功之后,輸入以下命令啟動MySQL:

net start mysql-master

注:net stop mysql-master 為停止命令

服務啟動成功之后,就可以登錄了,如下圖所示,輸入 mysql -u root -p(第一次登錄沒有密碼,直接按回車),登錄成功!

登錄上之后設置root用戶的密碼(這里修改成123456)

執行命令

use mysql;

update user set password=password("123456") where user="root";

flush privileges;

執行完畢后如下圖所示:

這樣就設置好了root用戶的密碼了。

查看設置的字符集(my.ini配置文件里把字符集設置成了utf8,為了能正常顯示中文)

show variables like "%character%";show variables like "%collation%";

(2)從庫(MySQL-Slave)的安裝與配置  

進入從庫目錄中,修改 my.ini 配置文件,具體文件內容如下,將里面的路徑修改成你自己的從庫路徑。

安裝從庫服務。

打開cmd,進入從庫的bin文件夾下

執行命令:mysqld -install MySQL-Slave

注:其中的MySQL-Slave為從庫MySQL的服務名稱

出現以下提示,表示安裝成功。

啟動從的mysql服務器

執行命令:net start mysql-slave

注:net stop mysql-slave為停止命令

出現以下提示信息表示從庫啟動成功

 

同樣的,登錄從庫設置從庫root用戶的密碼(這里修改成123456)

這里特別需要注意:在cmd下登錄從庫時需要指定設置的端口號,否則會報以下錯誤

ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

mysql -u root -P 3307 -p(大寫的P代表端口號,小寫的p代表密碼)

執行命令

use mysql;

update user set password=password("123456") where user="root";

flush privileges;

執行完畢后如下圖所示:

至此,主、從數據庫的安裝及配置就完成了。

進入Windows的服務管理(進入服務管理方法,快鍵鍵Win+R打開運行框窗口,輸入services.msc),即可看到主從MySQL,以及它們的狀態

四、關聯主庫(MySQL-Master)與從庫(MySQL-Slave)

上面我們已經把MySQL-Master和MySQL-Slave相關配置都已配置完成,並分別啟動了,現在我們在cmd下分別登錄到主庫和從庫中。

注意:登錄主庫,需要先進入到主庫的bin文件夾下,再登錄MySQL,然后,執行命令 show master status 查看master的狀態

下圖中的 File 和Position 記錄下來,在從庫配置中會用到 (注意:每次重啟主數據庫  File 和 Position 參數都會變),如下圖所示:

從庫,也需要先進入到從庫的bin文件夾下,再登錄MySQL,然后,執行命令 show slave status 查看slave的狀態

我們可以發現 ,master的狀態下,生成了一個二進制的日志文件,而slave下是空的,所以我們現在就要把主庫與從庫關聯起來。只需要讓從庫(slave)知道主庫(master)的地址就可以了。

首先我們需要在主庫(master)中創建一個用戶用於與從庫同步的用戶名和密碼(這里我創建一個test用戶,密碼為mysql),並給test用戶授權,以用於主庫操作從庫。

注意:是在主庫中建立一個用戶(專門用給從庫連接的,可別迷迷糊糊的到從庫的命令界面敲):

具體如下:

相關命令:

create user test;

grant replication slave on *.* to '從庫用戶名(test)'@'從庫主機地址(127.0.0.1)'identified by '密碼(mysql)';

flush privileges;   # 刷新權限 

現在我們切到從庫(slave),把主庫與從庫聯系起來。

執行以下命令:

change master to master_host='127.0.0.1',master_port=3306,master_user='test',master_password='mysql',master_log_file='master-bin.000015',master_log_pos=120;

然后執行命令 start slave 開啟主從同步,如下圖所示:

stop slave    # 關閉主從同步

然后執行下列命令查看 slave 的狀態

show slave status \G(注意:\G后面沒有分號的)

這里出現了錯誤,如下圖所示:

這里還有uuid的概念,配置mysql主從時,由於是直接拷貝的mysql目錄,導致主從mysql uuid相同, Slave_IO無法啟動,所以報錯,各個數據庫的server_uuid得保證不一樣,用以下命令分別查看主從數據庫的server_uuid

show variables like '%server_uuid%';

show variables like 'server_id';    # 查看server_id

可以看到主從數據庫的server_uuid是相同的

解決方法:

找到data文件夾下的auto.cnf文件,修改里面的uuid值,保證各個數據庫的uuid不一樣,修改后重啟數據庫即可

再依次執行以下命令:

stop slave     # 關閉主從同步

start slave    # 開啟主從同步

show slave status \G(注意:\G后面沒有分號的)    # 查看 slave 的狀態

出現如下圖所示,則開啟主從跟蹤成功

至此,主從跟蹤已經開啟,並全部配置完成

五、驗證主從同步

分別進入主庫和從庫並查看它們的數據庫,然后在主庫中創建一個數據庫web,看一下從庫有沒有變化,如下圖所示:

 

至此,主從同步已配置完畢。

說明:注意不要往從庫中寫數據,如果從庫寫入數據,master_log_pos是不會變化的,主庫的信息沒有發生變化,當主庫又變化和從庫一樣的操作時就有可能會產生沖突,因此,只能在主庫中寫數據,從庫只能讀數據,當然主庫也可以讀數據。

還有一點,如果想同步主庫里在之前就有的數據庫的數據,需要手動從主庫中導出數據庫,然后在從庫里再導入,就能同步了。

六、其他一些相關命令

查看binlog日志里面的內容

列表:show master logs

清空:reset master

刷新:flush logs

查看指定日志:show binlog events in '日志鍵名'

 

本文參考自其他博客:

(1)https://www.cnblogs.com/naruto123/p/8138708.html

(2)https://www.cnblogs.com/jpfss/p/8143720.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM