mysql主從配置
相關的理論知識大家可以網上找一下,我這裏主要從實戰的配置來介紹mysql主從配置,查詢了很多資料,也測試了很多遍,最後自己整理出這份能成功mysql主從的配置步驟。
環境介紹和說明
由於測試的環境是在windows服務器上測試的,所以整個環境配置按windows來配置,linux的也差不多,可以相應修改一下即可。2臺服務器都是新裝的系統,操作會一步一步按標準來進行。
主庫和從庫操作系統:win 2012
主庫和從庫版本:mysql-5.7.23-winx64
主庫的IP地址:192.168.18.82
從庫的IP地址:192.168.18.83
主從的端口:3306
數據庫安裝
數據庫安裝
上mysql官網下載數據包版本mysql-5.7.23-winx64,然後解壓到D盤;配置環境變量path(;D:\mysql-5.7.23-winx64\bin);安裝vcredist_x64(好像一個xxx120.dll之類的)。主從數據庫都一樣
主數據庫配置
在主數據庫D:\mysql-5.7.23-winx64根目錄下建一個my.ini的文件。內容:
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8 ###這裏設置字符集,用了一段時間報錯,現在我默認註釋了
[mysqld]
#設置3306端口
port = 3306
# 設置mysql的安裝目錄
basedir=D:\mysql-5.7.23-winx64
# 設置mysql數據庫的數據的存放目錄
datadir=D:\mysql-5.7.23-winx64\data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認爲8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
default_password_lifetime=0
##設置服務器ID,必須保持唯一性
server-id=1
##設置需要寫bin日誌的數據庫,多個數據庫則要多行分別設置
binlog-do-db=test
##設置不需要寫bin日誌的數據庫,多個數據庫則要多行分別設置
#binlog-ignore-db=mysql
#binlog-ignore-db=information_schema
##注:binlog-do-db, binlog-ignore-db 爲互斥關係,只需設置其中一項即可;
##更要注意binlog-do-db庫的SQL不能有操作binlog-ignore-db庫的語句或動作,否則報錯
##日誌模式
binlog-format=row
##二進制日誌文件存放位置,可以設置路徑;也可以不設置,此時存放到
log-bin=D:/mysql-5.7.23-winx64/data/test-binlog
上面的內容只需要根據自己配置的數據把 binlog-do-db=test和 log-bin=D:/mysql-5.7.23-winx64/data/test-binlog中的test數據庫改成自己的數據庫名即可,其他不需要改動。
然後打開 cmd進入到主數據庫bin目錄下進行配置:
mysqld --initialize --user=mysql --console #初始化並創建data文件夾;
mysqld --install #安裝數據庫並檢查是否成功;
net start mysql #啓動mysql數據;
mysql -u root -p #進入數據庫;
set password=password('root') ; #更改root的密碼爲root
CREATE USER 'abc'@'192.168.18.83' IDENTIFIED BY '123456'; #創建用戶abc,密碼是123456
GRANT REPLICATION SLAVE ON *.* TO 'abc'@'192.168.18.83';#分配權限;
flush privileges; #刷新權限
CREATE DATABASE test; #創建test數據庫
show master status; #查看master狀態,記錄二進制文件名
主庫配置完成,先放着,別關閉,等下從庫配置需要用到二進制文件名和POS端口
從數據庫配置
在從數據庫D:\mysql-5.7.23-winx64根目錄下建一個my.ini的文件。內容:
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8 ###這裏設置字符集,用了一段時間報錯, 現在我默認註釋了
[mysqld]
#設置3306端口
port = 3306
# 設置mysql的安裝目錄
basedir=D:\mysql-5.7.23-winx64
# 設置mysql數據庫的數據的存放目錄
datadir=D:\mysql-5.7.23-winx64\data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認爲8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
default_password_lifetime=0
##設置服務器ID,必須保持唯一性
server-id=2
##設置需要寫bin日誌的數據庫,多個數據庫則要多行分別設置
replicate-do-db=test
##設置不需要寫bin日誌的數據庫,多個數據庫則要多行分別設置
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
上面的內容只需要根據自己配置的數據把 replicate-do-db=test中的test數據庫改成自己的數據庫名即可,其他不需要改動。
然後打開 cmd進入到主數據庫bin目錄下進行配置:
mysqld --initialize --user=mysql --console #初始化並創建data文件夾;
mysqld --install #安裝數據庫並檢查是否成功;
net start mysql #啓動mysql數據;
mysql -u root -p #進入數據庫;
set password=password('root') ; #更改root的密碼爲root
CREATE DATABASE test; #創建test數據庫
change master to
master_host='192.168.18.82', #主數據庫地址
master_user='abc', #用戶
master_password='123456', #密碼
master_log_file='test-binlog.000002', #主數據庫生成的log文件名
master_log_pos=1172; #主數據庫生成的log_pos
start slave; # 啓動從數據庫
show slave status \G; #查看從庫狀態
當Slave_IO_Running和Slave_SQL_Running都爲YES的時候就表示主從同步設置成功了。接下來就可以進行一些驗證了,比如在主master數據庫的test數據庫的一張表中插入一條數據,在slave的test庫的相同數據表中查看是否有新增的數據即可驗證主從複製功能是否有效。