資料庫雜談之 MySQL延時複製庫

2022-09-15 11:12:06 字數 1799 閱讀 3511

我相信很多人都遭遇過mysql主從複製延遲的問題,處理方案基本上就是你能搜尋到的那些,那麼我今天卻要說說如何讓mysql延遲複製。對於剛組建的團隊來說,這可能會救了你的專案。

簡單的說延遲複製就是設定乙個固定的延遲時間,比如1個小時,讓從庫落後主庫乙個小時。

存在即合理,延遲複製可以用來解決以下三類問題:

比如有人誤操作的表,那麼這個操作在延遲時間內,從庫的資料並沒有發生變化,可以用從庫的資料進行快速恢復。

把服務停了,把從庫的表直接匯入主庫,補binlog,binglog不能恢復表

比如你做好的資料庫讀寫分離,把從庫作為讀庫,那麼你想知道當資料產生延遲的時候到底會發生什麼。那麼你就可以使用這個特性也模擬延遲。

壓力不大的時候,延遲會很小,延遲比較大的時候是什麼樣子?主從延遲5分鐘是什麼樣子?

比如你經常需要檢視某天前乙個表或者欄位的數值,你可能需要把備份恢復後進行檢視,

如果有延遲從庫,比如延遲一周,那麼就可以解決這樣類似的需求。當然,並不是所有團隊都有這樣的需求

延遲複製配置,通過設定sl**e上的master to master_delay引數實現:

change master to master_delay = n;

n為多少秒,該語句設定從資料庫延時n秒後,再與主資料庫進行資料同步複製。

mysql>stop sl**e;

mysql>change master to master_delay = 600;

mysql>start sl**e;

mysql>show sl**e status \g;

檢視sql_delay的值為600,表示設定成功。

sql_delay:乙個非負整數,表示秒數,sl**e滯後多少秒於master。

sql_remaining_delay:當 sl**e_sql_running_state 等待,直到master_delay秒後,master執行的事件,

此欄位包含乙個整數,表示有多少秒左右的延遲。在其他時候,這個欄位是0。

好的,這就是今天的內容,小知識,短而美,長篇的乾貨,非常棒,但是我們真正學會的確比較少。把這個小知識積累起來吧。

1、只有insert、update、select

2、刪除最佳實踐?

沒有讓開發

就是在資料庫中加乙個刪除標識字段,如: isdel=1 這樣就**刪除的字段了

直接限制mysql刪除

啟動mysql的時候加上引數 -u-u, --safe-updates only allow update and delete that uses keys.

他的作用是防止執行delete的時候沒帶有條件語句,如果沒加上where則語句不執行。

3、生產案例

1、資料對不上了

被入侵?運維刪除?開發刪除?有許可權的人太多了

2、安全沒最做好

3、多收錢了

1、不是為了做恢復,

2、我要上線乙個功能,要知道之前是什麼樣子(相當模擬上線功能),要update很多東西,備份可以,但是備份不直觀

1、所有dml必須備份有dml_backup.sh和table_name

2、資料庫操作必須有資料回滾指令碼和修改指令碼兩個指令碼,

哪怕一年都用不上,沒有這個政策頻繁出現故障

1、update乙個字段涉及到5行

2、update沒有備份機制,改回去

把昨天的備份拉出來恢復一邊

把昨天的binglog恢復回去

再檢視有沒有操作

MYSQL 複製資料庫

僅複製結構 mysqldump src db name table1 table2.user user password password opt d triggers mysql dest db name user user password password 其中 triggers引數是匯出觸發...

mysql資料庫複製

mysql複製表結構及資料到新錶 create table 新錶 select from 舊表,假設新建立的資料庫名稱為newdatebase,想要複製的資料庫名稱是datebasse create table newdatebase.new table select from datebasse....

MySQL複製資料庫

mysql uroot ppassword mysql create database testdb1 default character set utf8 collate utf8 general ci 注意 ppassword引數的寫法 p後面直接跟密碼,中間沒有空格 mysqldump tes...