windows下mysql5.6的主從同步與讀寫分離配置


本文在Windows下安裝了兩個MySQL.5.6,並進行主從同步配置,最後採用mycat中間件進行讀寫分離和測試。

安裝兩個mysql數據庫

如果本機上之前沒有安裝過MySQL,那麼首先按照正常方法安裝第一個MySQL即可,安裝成功後接下來安裝第二個MySQL,此時需注意:
1、先刪掉安裝之前的mysql配置的環境變量
2、關掉之前的mysql服務
3、添加配置文件
4、從cmd命令行進入當前mysql的安裝目錄的文件夾下,輸入命令

mysqld install mysql2 --default-file="C:\mysql-5.7.22-winx64\my.ini"

default-file後是配置文件的路徑。mysql2是給我們給MySQL服務起的名字,打開服務可以看到:
在這裏插入圖片描述
5、通過“win+r”輸入regedit打開註冊表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql2,修改ImagePath參數,更正mysql2服務相關路徑。
改正後格式如下:
在這裏插入圖片描述6、啓動數據庫

C:\mysql-5.7.22-winx64\bin>net start mysql2
mysql2 服務正在啓動 .
mysql2 服務已經啓動成功。

mysql2服務啓動後,去data/xxx.err文件中找到臨時密碼,進行登錄
之後再修改密碼

set password for root@localhost=password('001nX123456');

用新密碼登錄。

配置master數據庫

1、my.ini配置文件如下:

[client]
# 設置mysql客戶端默認字符集
default-character-set=utf8
 
[mysqld]
# 設置3306端口
port = 3307
# 設置mysql的安裝目錄
basedir=D:\\idea\\mysql-5.6.45-winx64
# 設置 mysql數據庫的數據的存放目錄,MySQL 8+ 不需要以下配置,系統自己生成即可,否則有可能報錯
datadir=D:\\idea\\mysql-5.6.45-winx64\\data
#secure file priv

# 允許最大連接數
max_connections=20
# 服務端使用的字符集默認爲8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB


## 設置server_id,一般設置爲IP
server_id=1
## 複製過濾:需要備份的數據庫,輸出binlog
binlog-do-db=mydb
binlog-do-db=db1
binlog-do-db=db2
binlog-do-db=db3
## 複製過濾:不需要備份的數據庫,不輸出(mysql庫一般不同步)
binlog-ignore-db=mysql
## 開啓二進制日誌功能,可以隨便取,最好有含義
log-bin=edu-mysql-bin
## 爲每個session 分配的內存,在事務過程中用來存儲二進制日誌的緩存
binlog_cache_size=1M
## 主從複製的格式(mixed,statement,row,默認格式是statement)
binlog_format=mixed
## 二進制日誌自動刪除/過期的天數。默認值爲0,表示不自動刪除。
expire_logs_days=7
## 跳過主從複製中遇到的所有錯誤或指定類型的錯誤,避免slave端複製中斷。
## 如:1062錯誤是指一些主鍵重複,1032錯誤是因爲主從數據庫數據不一致
#slave_skip_errors=1062
## 如果需要同步函數或者存儲過程
#log_bin_trust_function_creators=true

2、重啓mysql服務
3、cmd進入mysql安裝目錄的bin文件下,
輸入命令:mysql -uroot -P3307 -p
進入數據庫
在這裏插入圖片描述4、grant replication slave, replication client on . to ‘slaver’@localhost identified by ‘123456’;
給主庫添加一個用戶,包含他的ip地址和密碼,並賦予它複製的權限;
5、flush privileges;
刷新權限;
6、select user,host from mysql.user;
在這裏插入圖片描述
7、show master status;
查看master當前binlog的狀態:
在這裏插入圖片描述這兩個值需記下,在後面從庫配置slave中使用。

配置slave數據庫

一、配置文件,注意端口號需與master的不同

[client]
# 設置mysql客戶端默認字符集
default-character-set=utf8
 
[mysqld]
# 設置3306端口
port = 3310
# 設置mysql的安裝目錄
basedir=D:\\idea\\mysql-5.6.45-slaver
# 設置 mysql數據庫的數據的存放目錄,MySQL 8+ 不需要以下配置,系統自己生成即可,否則有可能報錯
datadir=D:\\idea\\mysql-5.6.45-slaver\\data
#secure file priv

# 允許最大連接數
max_connections=20
# 服務端使用的字符集默認爲8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB


## 設置server_id,一般設置爲IP
server_id=2
## 複製過濾:需要備份的數據庫,輸出binlog
binlog-do-db=mydb
binlog-do-db=db1
binlog-do-db=db2
binlog-do-db=db3
## 複製過濾:不需要備份的數據庫,不輸出(mysql庫一般不同步)
binlog-ignore-db=mysql
## 開啓二進制日誌功能,可以隨便取,最好有含義
log-bin=edu-mysql-bin
## 爲每個session 分配的內存,在事務過程中用來存儲二進制日誌的緩存
binlog_cache_size=1M
## 主從複製的格式(mixed,statement,row,默認格式是statement)
binlog_format=mixed
## 二進制日誌自動刪除/過期的天數。默認值爲0,表示不自動刪除。
expire_logs_days=7
## 跳過主從複製中遇到的所有錯誤或指定類型的錯誤,避免slave端複製中斷。
## 如:1062錯誤是指一些主鍵重複,1032錯誤是因爲主從數據庫數據不一致
#slave_skip_errors=1062
## 如果需要同步函數或者存儲過程
#log_bin_trust_function_creators=true

2、重啓mysql服務
3、cmd進入mysql安裝目錄的bin文件下,
輸入命令:mysql -uroot -P3310 -p
進入數據庫
在這裏插入圖片描述4、
輸入
change master to master_host=‘127.0.0.1’,master_user=‘slave-win’,master_password=‘123456’, master_log_file= ‘edu-mysql-bin.000005’,master_log_pos=427,master_port=3307;
其中包含了主庫的ip地址、端口號,之前在主庫上設置的可訪問的用戶名和密碼,以及master狀態的信息master_log_file和master_log_pos。
如果出現
在這裏插入圖片描述
原因是從庫用來連接主庫的用戶權限或者密碼不對。
5、輸入:
stop slave;
start slave;
6、show slave status;
在這裏插入圖片描述
在這裏插入圖片描述
看到兩個yes即主從配置成功。

使用mycat進行讀寫分離

1、配置文件schema需添加讀寫分離的相關配置

<table name="employee" primaryKey="ID" dataNode="dn1,dn2"
			   rule="sharding-by-intfile" />
			   
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">
		<heartbeat>show slave status</heartbeat>
		<!-- can have multi write hosts -->
		<writeHost host="hostM1" url="localhost:3307" user="root"
				   password="root">
			<!-- can have multi read hosts -->
			<readHost host="hostS2" url="localhost:3310" user="root" password="root" />
		</writeHost>

2、重啓mycat服務
啓動MyCat:
./mycat start
查看啓動狀態:
./mycat status
停止:
./mycat stop
重啓:
./mycat restart
服務啓動成功即可。

通過mycat9066管理端口查看後端數據庫情況

輸入:show @@datasource;
在這裏插入圖片描述可看到讀寫數據庫都配置好了。

navicat連接mycat、master、slave並進行測試

1、navicat連接過程中如果出現錯誤:
在這裏插入圖片描述
刪掉連接重連即可。
2、連接mycat、master、slave
在這裏插入圖片描述3、在master和slave分別創建database:db1、db2
4、在mycat中創建表bookinfo,user_id是分表鍵

create table bookinfo(
ID char(10),
name varchar(10)
);

在master和slave的db1、db2中可看到bookinfo這個表
在這裏插入圖片描述5、在bookinfo中插入值

insert into bookinfo (name,user_id) values ('計算機原理','2019091503');

查看mycat的日誌文件:
在這裏插入圖片描述
在這裏插入圖片描述5讀取bookinfo中的數據
select name,user_id from bookinfo where user_id= ‘2019091501’;

查看mycat日誌信息:
在這裏插入圖片描述
在這裏插入圖片描述至此,一個簡單的以mycat爲中間件的mysql的讀寫分離就完成了。

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