Mysql 主備 雙主 設置安裝windows環境下

我們將面對架構的高性能、高可用、安全性,其中數據服務器巖機或數據丟失、數據讀取壓力等情況作爲架構師需要考慮。故此有了主備mysql的架構,實現了架構的高性能、高可用、安全性

                                               

一、主備工作

下載

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

二、主庫安裝

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

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


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

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

#將複製事件寫入binlog,一臺服務器既做主庫又做從庫此選項必須要開啓
log-slave-updates = true
#masterA自增長ID
auto_increment_offset = 1			#奇數ID  自增主鍵從1開始
auto_increment_increment = 2                    #自增主鍵每次+2                      

此處配置和主從配置有些類似,但是主備的配置基本是 數據庫即做主機也做從機,這樣主備都可以寫入,並且寫入的數據也會同步到其他庫

故此一下配置是必須的

log-slave-updates = true
#masterA自增長ID
auto_increment_offset = 1                           #奇數ID  自增主鍵從1開始
auto_increment_increment = 2                    #自增主鍵每次+2  

 

2、安裝主(master2 )mysql

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

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

3、啓動主庫的mysql服務器

      執行命令:net start master2

4、修改密碼

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

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

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

  執行命令

  mysql >use mysql;

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

  mysql >flush privileges;

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

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

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

   命令:mysql > show master status;

這裏的這個 File:master-bin.000093和Position:519非常重要,只要告訴master3這兩個東西

三、備庫安裝

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

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


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

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


#將複製事件寫入binlog,一臺服務器既做主庫又做從庫此選項必須要開啓
log-slave-updates = true
#masterA自增長ID
auto_increment_offset = 2			#偶數  
auto_increment_increment = 2                                            

此處配置和主從配置有些類似,但是主備的配置基本是 數據庫即做主機也做從機,這樣主備都可以寫入,並且寫入的數據也會同步到其他庫

故此一下配置是必須的

log-slave-updates = true
#masterA自增長ID
auto_increment_offset = 2                           #偶數ID  自增主鍵從2開始
auto_increment_increment = 2                    #自增主鍵每次+2  

 

2、安裝備(master3 )mysql

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

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

3、啓動主庫的mysql服務器

      執行命令:net start master3

4、修改密碼

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

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

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

  執行命令

  mysql >use mysql;

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

  mysql >flush privileges;

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

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

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

   命令:mysql > show master status;

這裏的這個 File:master-bin.000093和Position:519非常重要,只要告訴master2這兩個東西

 

四、配置主備同步

1、master2中輸入命令

 mysql >stop slave;

mysql >change master to master_host='127.0.0.1(master3地址)',master_port=3328(master3端口),master_user='test',master_password='test',master_log_file='master-bin.000093',master_log_pos=519;

mysql >start slave;

2、master3中輸入命令

mysql > stop slave;

mysql >change master to master_host='127.0.0.1(master2地址)',master_port=3318(master2端口),master_user='test',master_password='test',master_log_file='master-bin.000093',master_log_pos=519;

mysql >start slave;

 

五、驗證

 mysql >show slave status \G;

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

分別在兩個庫中增刪改查,確認是否已互相同步

六、可能出現的問題

如果Slave_IO_Running、Slave_SQL_Running出現no,請查看Last_IO_Error與Last_SQL_Error百度具體解決方法

例如:

Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’

解決辦法:

首先停止從庫同步;

mysql >slave stop;
主庫中關閉當前的二進制日誌文件並創建一個新文件,新的二進制日誌文件的名字在當前的二進制文件的編號上加1。

mysql >flush logs;
查看主庫狀態,主要查看日誌文件和位置:

mysql >show master status;
回到從庫中,執行命令,使日誌文件和位置對應主庫:

mysql >CHANGE MASTER TO MASTER_LOG_FILE='log-bin.000085',MASTER_LOG_POS=120;
最後,啓動從庫:

mysql >slave start;
mysql >show slave status; 

 

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