echo編輯整理,歡迎轉載,轉載請聲明文章來源。歡迎添加echo微信(微信號:t2421499075)交流學習。 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這才是真正的堪稱強大!!!
本文主要為了記錄MySQL搭建讀寫分離的操作,是本人的操作紀實,並沒有詳細講解其中的原理和操作設置,如果需要詳細解釋的,不建議閱讀。
環境准備:
linux系統版本 | 對應服務器地址 | 數據庫 | 版本 |
---|---|---|---|
CentOS7 | 192.168.222.132 | MySQL | 5.6 |
CentOS7 | 192.168.222.133 | MySQL | 5.6 |
CentOS7 | 192.168.222.134 | MySQL | 5.6 |
第一步:建立時間同步環境
- 使用yum安裝npt
yum install ntp –y
- 安裝完成之后修改ntp對應的配置文件
vi /etc/ntp.conf
- 添加如下配置:圖片中地址,對應我們自己服務器的地址
restrict 192.168.222.132 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 8
- 啟動ntp服務
systemctl start ntpd
- 檢驗ntp是否成功安裝運行,如果正常工作我們可以得到如下信息
ntpq -p
將我們三台服務全部做以上配置,配置完成之后,我們就可以開始設置主mysql服務器了
第二步:配置 MySQL 主服務器
- 打開my.cnf配置文件,進行如下配置
# 打開文件
vi /etc/my.cnf
找到配置文件中的這一段,然后按照下面的配置進行修改
server-id=132 # 使用ip的后端作為我們的主服務id
log_bin=mysql-bin # 開啟MySQ二進制日志系統。
- 登錄mysql,然后獲取數據庫列表
mysql -uroot -P3306 -p123456 -h192.168.222.132
show databases;
binlog-do-db=test # 需要同步的數據庫名test,其他的數據庫不同步。
binlog-ignore-db=mysql #不同步mysql系統數據庫,每一個數據庫對應一行。
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
- 配置完成,重復服務
service mysql restart
- 查看我們的配置是否成功
show master status;
如果顯示結果和我們配置一致證明我們的主服務器配置已經成功啦!可以進行從服務器的配置
配置從服務器
- 打開my.cnf配置文件,進行如下配置
# 打開文件
vi /etc/my.cnf
找到配置文件中的這一段,然后按照下面的配置進行修改
server-id=133 # 使用ip的后端作為我們的主服務id
log_bin=mysql-bin # 開啟MySQ二進制日志系統。
- 登錄mysql,然后獲取數據庫列表
mysql -uroot -P3306 -p123456 -h192.168.222.133
show databases;
binlog-do-db=test # 需要同步的數據庫名test,其他的數據庫不同步。
binlog-ignore-db=mysql #不同步mysql系統數據庫,每一個數據庫對應一行。
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
- 配置完成,重復服務
service mysql restart
從服務器需要做的關鍵操作
- 為從服務器創建一個可以登錄主服務器的賬號。
# 登錄主服務器,創建一個新賬號
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.222.133' IDENTIFIED BY '123456';
# 刷新權限
FLUSH PRIVILEGES;
- 然后使用root用戶連接mysql,再執行一下語句
change master to
master_host='192.168.222.132',
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.000011',
master_log_pos=1243;
- 配置完成之后,啟動從服務器
start slave;
- 查看從服務器啟動狀態
show slave status \G;
出現上面這兩個“Yes”就證明已經配置成功了
- 如果發現配置不對,需要先停掉從服務器
stop slave;
- 然后重置從服務器
reset slave;
采坑解決
如果出現如上報錯,我們需要先停止從服務器。該問題引起的原因是我之前安裝數據庫的時候並沒有發現他們的版本不一致導致的,停機更新版本之后再次按照下面步驟操作就好了。
# 先停掉從服務器
stop slave;
# 重置從服務器
reset slave;
# 然后排查配置的問題,重新配置一遍
change master to
master_host='192.168.222.132',
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.000011',
master_log_pos=709;
# 再次啟動
start slave;
# 查看服務器狀態
show slave status \G;
嘗試創建一個表,查看是否同步
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id',
`user_name` varchar(255) DEFAULT NULL,
`pass_word` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
到這里我們已經成功啦!
注意:
我們配置第三台服務的時候,需要從新創建一個給第三台服務器訪問的主服務器的賬號。同時,由於我們是在本地虛擬機上安裝的讀寫分離環境,所以每一次啟動mysql或者關閉虛擬機都會導致mysql的position改變,所以我們要跟隨着配置變化,每次啟動讀寫環境前檢查一下,修改配置和上面采坑解決的步驟一直。
做一個有底線的博客主