mysql-讀寫分離

在自己操作讀寫分離之前感覺應該不難,操作之中也確實不能,但是裏面都是坑,一下我主要記錄一下我做的時候遇到的那些坑。

1、準備好mysql安裝包,請按照:https://www.jianshu.com/p/ea4accd7afb4 連接中的安裝方式進行安裝。安裝完畢並修改完密碼,順便將data文件夾中的auto.cnf刪除。

2、將安裝好的賦值一份並修改名字。並按照下圖將my.ini修改,同事刪除清空data文件夾

 

 

 3、如果兩個服務都啓動就算第一步結束了,可以配置讀寫分離,若兩個服務起不來,那麼按以下操作:

  刪除安裝的mysql程序(安裝包不要刪除)。其中包括註冊表信息和服務

  刪除註冊表 :windows+R   輸入regedit 

    刪除:HKEY_LOCAL_MACHINE>SYSTEM>ControlSet001>Services>mysql
    刪除:HKEY_LOCAL_MACHINE>SYSTEM>CurrentControlSet>Services>mysql

  刪除服務:

    windows+R 輸入 cmd

    命令窗口輸入:sc delete 服務的名字

  截止位置算是清空了所有mysql程序。在次進行安裝並複製一份。

 

複製中的坑:my.ini裏面的內容:請複製

主庫的配置:

[Client]
#設置3306端口
port = 3306
[mysqld]
#設置3306端口
port = 3306
# 設置mysql的安裝目錄
basedir=F:\mysql-5.7.25-winx64
# 設置mysql數據庫的數據的存放目錄
datadir=F:\mysql-5.7.25-winx64\data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認爲8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8
[mysqld]
#開啓日誌
log-bin=mysql-bin
#設置服務id,主從不能一致
server-id=1
#設置需要同步的數據庫
binlog-do-db=pawn
#屏蔽系統庫同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema

  

  

從庫的配置:

[Client]
#設置3306端口
port = 3308
[mysqld]
#設置3306端口
port = 3308
# 設置mysql的安裝目錄
basedir=F:\mysql-5.7.25-winx64-fk
# 設置mysql數據庫的數據的存放目錄
datadir=F:\mysql-5.7.25-winx64-fk\data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認爲8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8
[mysqld]
#開啓日誌
log-bin=mysql-bin
#設置服務id,主從不能一致
server-id=2
#設置需要同步的數據庫
replicate_wild_do_table=pawn.%
#屏蔽系統庫同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%

  

此時,你的主庫可以啓動服務,但是從庫缺少啓動服務入口,使用下面的命令

命令窗口進入從庫中bin文件夾下,執行命令:mysqld install 服務名字 --defaults-file="my.ini的絕對路徑";

此時進入"管理"中會發現你的從庫服務,先別急着啓動,你還要清空data文件夾(你自己的數據庫的所有信息,裏面以前有數據的話先備份)中的內容。

如果此時主庫和從庫都已經可以訪問,那麼需要使用sql語句進行主從關聯

主庫中執行:

-- 主庫授權

#授權主備複製專用賬號
GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync';

#刷新權限
FLUSH PRIVILEGES;

#確認位點 記錄下文件名以及位點
show master status;

 

從庫中執行:

STOP SLAVE;
CHANGE MASTER TO master_host = 'localhost', master_user = 'db_sync', master_password = 'db_sync', master_log_file = 'mysql‐bin.000002', master_log_pos = 154;
START SLAVE;
show slave status;

完成後,如果執行完畢你需要關注

從庫中一下狀態是否與主庫一直,並且slave_IO_running   slave_sql_running 是否是 Yes ,如果都沒問題(主從庫中my.ini中的同步數據確認好,主庫和從庫一定是提前創建好表),那麼你就可以再主庫中插入數據啦,刷新從庫是否同步。

 

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