Mysql一主多從設置安裝windows環境下 主從 集羣 分壓

概要:爲了降低服務的Mysql壓力,常常會有mysql的主從配置

讀寫分離的基本實現是:

  • 數據庫服務器搭建主從集羣,一主一從、一主多從都可以。
  • 數據庫主機負責讀寫操作,從機只負責讀操作。
  • 數據庫主機通過複製將數據同步到從機,每臺數據庫服務器都存儲了所有的業務數據。
  • 業務服務器將寫操作發給數據庫主機,將讀操作發給數據庫從機。

 

下面我們開始配置

一、準備工作

下載

下載地址:https://www.mysql.com/downloads/

二、主機安裝與配置

1、配置主庫: 修改my.ini

# 以下內容手動添加
[client]
# 設置mysql客戶端連接服務端時默認使用的端口
port=3308
default-character-set=utf8
[mysqld]
#主庫配置
server_id=1
log_bin=master-bin
log_bin-index=master-bin.index


#端口
port=3308
character_set_server=utf8
#解壓目錄
basedir=F:\Program Files\mysql-group\mysql-5.6.24-master
#解壓目錄下data目錄
datadir=F:\Program Files\mysql-group\mysql-5.6.24-master\data

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[WinMySQLAdmin]
F:\Program Files\mysql-group\mysql-5.6.24-master\bin\mysqld.exe


 

2、安裝主mysql

 執行命令:mysqld --install master --defaults-file="F:\Program Files\mysql-group\mysql-5.6.24-master\my.ini"

 注:其中的master爲主庫mysql的服務名稱

 

3、啓動主庫的mysql服務器

      執行命令:net start master

 

4、修改密碼

進入mysql命令界面 mysql -uroot -p -P 3308

使用命令 mysql -uroot -p 登錄master數據庫(默認安裝好的mysql的root用戶是沒有密碼的)

登錄上之後修改root用戶的密碼(這裏修改成root)

  執行命令

  use mysql;

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

  flush privileges;

 

5、主庫(master)中創建一個用戶用於與從庫同步的用戶名和密碼(這裏我創建一個test用戶,密碼爲mysql),並給test用戶授權,以用於主庫操作從庫。

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

 

6、查看master的狀態下,生成了一個二進制的日誌文件

   命令: show master status;

這裏的這個 File:master-bin.000084和Position:9253348非常重要,只要告訴從庫這兩個東西,就可完成主從關聯

 

 

三、從機安裝與配置

 1、修改從庫1與從庫2的 my.ini

# 以下內容手動添加
[client]
# 設置mysql客戶端連接服務端時默認使用的端口
port=3309
default-character-set=utf8
[mysqld]
#從庫配置
server_id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin


#端口
port=3309
character_set_server=utf8
#解壓目錄
basedir=F:\Program Files\mysql-group\mysql-5.6.24-slave
#解壓目錄下data目錄
datadir=F:\Program Files\mysql-group\mysql-5.6.24-slave\data

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[WinMySQLAdmin]
F:\Program Files\mysql-group\mysql-5.6.24-slave\bin\mysqld.exe
# 以下內容手動添加
[client]
# 設置mysql客戶端連接服務端時默認使用的端口
port=3310
default-character-set=utf8
[mysqld]
#從庫配置
server_id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin


#端口
port=3310
character_set_server=utf8
#解壓目錄
basedir=F:\Program Files\mysql-group\mysql-5.6.24-slave2
#解壓目錄下data目錄
datadir=F:\Program Files\mysql-group\mysql-5.6.24-slave2\data

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[WinMySQLAdmin]
F:\Program Files\mysql-group\mysql-5.6.24-slave2\bin\mysqld.exe

2、安裝兩個從庫

   mysqld --install slave1 --defaults-file="F:\xxxxxxxx從庫1地址xxxxxxx\my.ini"

   mysqld --install slave2 --defaults-file="F:\xxxxxxxx從庫2地址xxxxxxx\my.ini"

 

3、啓動兩個從庫

  net start slave1

  net start slave2

 

4、修改root密碼

使用命令" mysql -uroot -p -P端口 "登錄slave1、slave2數據庫(默認安裝好的mysql的root用戶是沒有密碼的)

登錄上之後修改root用戶的密碼(這裏修改成root)

  執行命令

  use mysql;

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

  flush privileges;

 

5、告訴從庫用什麼賬號登錄什麼位置的主庫,主庫的日誌文件是什麼

change master to master_host='127.0.0.1(主庫地址)',master_port=3308(主庫端口),master_user='test',master_password='mysql',master_log_file='master-bin.000084',master_log_pos=9253348;

注:(如果錯誤提示 This operation cannot be performed with a running slave; run STOP SLAVE first,請先輸入命令 stop slave;)

 

6、開啓主從功能

start slave;

 

7、查看是否成功

    show slave status \G;

   只要  Slave_IO_Running: Yes     Slave_SQL_Running: Yes   則代表成功

 

8、驗證

在主庫中增刪改,一套操作猛如虎看看從庫是否跟隨改變

 

四、個人經驗

如果在配置之前主庫就有很多數據庫和表還有數據,建議先同步數據(否則主從複製時從庫沒有相關數據庫和表,會導致寫入錯誤並暫停)

1、鎖住主庫的寫

   FLUSH TABLES WITH READ LOCK;

這時主庫只能讀取數據,其他操作將被掛起

2、傳輸所有主庫已有數據到從庫

3、主庫解鎖

   UNLOCK TABLES;

 

五、異常中斷後咋整

 show slave status \G;

  Slave_IO_Running     Slave_SQL_Running  其中一個變爲no

解決方法

    先鎖住主庫(master):FLUSH TABLES WITH READ LOCK;

                                         

    暫停同步(slave):stop slave;

                                         

   手動同步主庫數據到從庫

   設置(slave): master_log_file與master_log_pos請實時查看主庫當前數值

           change master to master_host='127.0.0.1(主庫地址)',master_port=3308(主庫端口),master_user='test',master_password='mysql',master_log_file='master-bin.000084',master_log_pos=9253348;

   啓動同步(slave):start slave;

   解鎖主庫(master): UNLOCK TABLES;

 

 

 

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