直播帶貨系統原始碼,實現MYSQL資料庫的主從同步

雲豹科技曉彤發表於2021-07-02

4 測試

1 )在直播帶貨系統原始碼主伺服器上登陸 mysql ,且進入 test 資料庫,建立 test 表,且插入一條資料

提示:這裡最好用資料庫管理工具(如nacicat )來操作。

# 建立 tb_test

create table tb_test(ID varchar(36) primary key comment ' 主鍵 ID',MEMO varchar(500) not null comment ' 資訊 ');

 

# 插入一條資料

insert into tb_test(ID,MEMO) values('1','one test');

 

# 提交

commit;

 

2 )在直播帶貨系統原始碼從伺服器上登陸 mysql ,且進入 test 資料庫

你會發現直播帶貨系統原始碼從資料庫中,也出現了tb_test 表,且表中還有 one test 資料存在,證明同步資料成功。

5 解決錯誤

若在直播帶貨系統原始碼主從同步的過程中,出現其中一條語句同步失敗報錯了,則後面的語句也肯定不能同步成功了。例如,主庫有一條資料,而從庫並沒有這一條資料,然而,在主庫執行了刪除這一條資料的操作,那麼從庫沒有這麼一條資料就肯定刪除不了,從而報錯了。在此時的從資料庫的資料同步就失敗了,因此後面的同步語句就無法繼續執行。

這裡提供的解決方法有兩種:

1 )在直播帶貨系統原始碼從資料庫中,使用 SET 全域性 sql_slave_skip_counter 來跳過事件,跳過這一個錯誤,然後執行從下一個事件組開始。

# 在從資料庫上操作

mysql > stop slave;

mysql > set global sql_slave_skip_counter=1;

mysql > start slave;

 

2 )在直播帶貨系統原始碼從資料庫中,重新連上主資料庫。這種操作會直接跳過中間的那些同步語句,可能會導致一些資料未同步過去的問題,但這種操作也是最後的絕招。最好就是令從資料庫與主資料庫的資料結構和資料都一致了之後,再來恢復主從同步的操作。

# 在從資料庫上操作

mysql > stop slave;

mysql> change master to master_host='192.168.17.130',master_port=3306,master_user='masterbackup',master_password='123456',master_log_file='master-bin.000001',master_log_pos=2050;

mysql > start slave;

 

# 備註

#master_log_file master_log_pos 可能會不同,需要在主資料庫中 show master status 來檢視

 

6 總結

至此,mysql 資料庫的主從同步就完成了,至於讀寫分離,我們可以透過程式來實現,這裡簡單講解一下實現思想。

我們可以在直播帶貨系統原始碼主伺服器建立一個資料庫使用者(出於安全,根據需求給予相應的許可權)主要用於寫操作,在程式中透過這一使用者連線主資料庫的只用於寫操作而不用讀操作。

在直播帶貨系統原始碼從伺服器上建立一個資料庫使用者(出於安全,只給予讀select 的許可權)主要用於讀操作,在程式中透過這一使用者連線從資料庫即可。

當然,也可以找一個元件來完成MYSQL 的代理,實現 SQL 語句的路由,這樣就不需要我們在直播帶貨系統原始碼上關注哪個資料庫是寫,哪個資料庫是讀的了。
————————————————

宣告:本文由雲豹科技轉發自CSDN 葉夢_ 】,如有侵權請聯絡作者刪除
原文連結:https://blog.csdn.net/qq_15092079/article/details/81672920

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70002045/viewspace-2779480/,如需轉載,請註明出處,否則將追究法律責任。

相關文章