EBS: 編譯科目:APP-FND-00668: 用於在此欄位中定義彈性域的資料可能不一致
阿新 • • 發佈:2022-12-04
目錄:
1、主從複製
Mysql的複製型別
Mysql主從複製的工作過程
2、讀寫分離
什麼是讀寫分離
為什麼要讀寫分離
什麼時候要讀寫分離
主從複製與讀寫分離
mysql支援的複製型別
主從複製的工作過程
mysql讀寫分離原理
常見的2種讀寫分離
實驗
實驗:
主:192.168.63.100
從:192.168.63.130
192.168.63.150
主:關閉防火牆和增強性安全功能
systemctl stop firewalld.service setenforce 0
安裝ntp、修改配置檔案
yum install ntp -y #安裝ntp軟體
vim /etc/ntp.conf #編輯配置檔案
disable monitor
server 192.168.63.0 #設定本機為時間同步源
fudge 192.168.63.0 stratum 8 #設定本機的時間層級為8級,0級表示時間層級為0級,是向其他伺服器提供時間同步源的意思,不要設定為0級
service ntpd start #開啟ntp
從:安裝ntp、ntpdate服務
yum install ntp ntpdate -y
service ntpd start
/usr/sbin/ntpdate 192.168.63.100
crontab -e
*/30 * * * * /usr/bin/ntpdate 192.168.63.100
主: 配置主從同步
master伺服器修改配置檔案:
vim /etc/my.cnf
server-id = 1 ##主伺服器id為1(不可重複)
log-bin=master-bin #開啟二進位制日誌檔案(之後生成的日誌名為master-bin)
binlog_format = MIXED
log-slave-updates=true #開啟從伺服器日誌同步
systemctl restart mysqld
配置規則:
mysql -uroot -p123123
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.63.%' IDENTIFIED BY'123123';
flush privileges;
#檢視master資料庫狀態
show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 603 | | | |
+-------------------+----------+--------------+------------------+-------------------+
從:
vim /etc/my.cnf
server-id = 2 ###第三臺記得換成3
relay-log=relay-log-bin #開啟二進位制日誌檔案
relay-log-index=slave-relay-bin.index #定義relay-log的位置和名稱(index索引)
relay_log_recovery = 1 #當 slave 從庫宕機後,假如 relay-log損壞了,導致一部分中繼日誌沒有處理,則自動放棄所有未執行的 relay-log,並且重新從master 上獲取日誌,這樣就保證了relay-log 的完整性。預設情況下該功能是關閉的,將relay_log_recovery 的值設定為 1時, 可在 slave 從庫上開啟該功能,建議開啟。
systemctl restart mysqld
mysql -uroot -p123123
CHANGE master to
-> master_host='192.168.63.100',master_user='myslave',master_password='123123',master_log_file='master-bin.000001',master_log_pos=603; #配置同步,注意master_log_file和master_log_pos的值要與master查詢的一致
start slave;
show slave status\G
Slave_IO_Running:yes #負責與主機的io通訊
Slave_SQL_Running:yes #負責自己的slave mysql程序
一般Slave_IO_Running:no 的可能性
1、網路不通
2、my.cnf配置有問題
3、密碼、file檔名、pos偏移量不對
4、防火牆沒有關閉
驗證:
主:
create database test9999;
從:show databases;
擴:
mysql架構:
一主多備
M-S-S中繼
M-M雙主互備(互為主從)
M-M-M
M-G-R
讀寫分離
縱向是提高配置,橫向是叢集化
橫向:資料提供共享,壓力可以分攤
半同步複製
讀寫分離優化一種,處理高併發
什麼是讀寫分離
讀寫分離,基本的原理是讓主資料庫處理事務性增、改、刪操作(INSERT、UPDATE、DELETE),而從資料庫處理SELECT查詢操作。資料庫複製被用來把事務性操作導致的變更同步到叢集中的從資料庫。
主從複製與讀寫分離
在實際的生產環境中,對資料庫的讀和寫都在同一個資料庫伺服器中,是不能滿足實際需求的。無論是在安全性、高可用性還是高併發等各個方面都是完全不能滿足實際需求的。因此,通過主從複製的方式來同步資料,再通過讀寫分離來提升資料庫的併發負載能力。有點類似於rsync,但是不同的是rsync是對磁碟檔案做備份,而mysql主從複製是對資料庫中的資料、語句做備份。