MySQL的clone(克隆)要注意的點

xuexiaogang發表於2023-01-03

MySQL的克隆功能對於資料庫來說建立主從太方便了。在實際工作中解決了不少問題,但是有一次的經歷讓我也感受到了其中有些需要注意的地方。如果不注意這些,會帶來問題。

    首先初始化一個MySQL8的資料庫。MySQL安裝軟體過程省略,然後直接service mysqld start。MySQL就會初始化一個資料庫。圖1

MySQL的clone(克隆)要注意的點

                                                                                                     圖1  

透過檢查mysql的log看到了初始化的密碼,如圖2

MySQL的clone(克隆)要注意的點

                                                                                                     圖2

然後用這個初始化的隨機密碼登入資料庫。給root修改密碼,這裡改成了我的名字。紅框。然後再去掉密碼複雜度,綠框。改成“1”籃框。最後用1這個簡單密碼登入(黃框)。整個過程如圖3.因為做實驗環境,所以簡單一點。正式環境不推薦這樣。

MySQL的clone(克隆)要注意的點

                                                                                       圖3

安裝克隆元件,如圖4

MySQL的clone(克隆)要注意的點

                                                                                                                 圖4

建立克隆元件以及授權必要的許可權,backup的許可權,主從複製的許可權,克隆的許可權。如圖5

MySQL的clone(克隆)要注意的點

                                                                                                      圖5

然後建立表,並且開啟排程引數。本案例產生的問題,全部在於這個定時任務。如果沒有定時任務,則不會產生問題。如圖6. event_scheduler=1,並且設定一個每10分鐘寫入一條資料的定時任務

MySQL的clone(克隆)要注意的點

                                                                                              圖6

如下圖圖7,資料開始寫入。寫入的資料庫是10.60.143.32。

MySQL的clone(克隆)要注意的點

圖7

接下來,我們在10.60.143.33上,用上面相同的方法初始化一個新的資料庫,用來搭建高可用的主從。如圖8

MySQL的clone(克隆)要注意的點

                                                                                         圖8

設定好clone 的源頭10.60.143.32,然後執行clone命令。如圖9

MySQL的clone(克隆)要注意的點

                                                                                                           圖9

執行4秒過後,圖10.資料庫clone完畢。克隆完畢,資料庫是一個重啟過程,所以再次執行select,會顯示原有連線中斷。clone是物理備份,所以是完全主庫的映象,那麼定時任務也被帶來過來。

MySQL的clone(克隆)要注意的點

                                                                                                             圖10

然後建立主從關係。圖11

MySQL的clone(克隆)要注意的點

                                                                                                               圖11

開啟主從的執行緒如圖12

MySQL的clone(克隆)要注意的點

                                                                          圖12

在10.60.143.32上寫入資料,如圖13

MySQL的clone(克隆)要注意的點

                                                                  圖13

在10.60.143.33上,看到資料同步成功。圖14

MySQL的clone(克隆)要注意的點

                                                                      圖14

這個時候我們等待定時任務在10.60.143.32上發起寫入,如圖15

MySQL的clone(克隆)要注意的點

                                                   圖15

然後這個時候觀察10.60.143.33上,主從出現問題。因為定時任務兩邊同時執行,導致資料衝突。這就是我們在clone資料庫上遇到的問題的復現。如圖16

MySQL的clone(克隆)要注意的點

                                                                                                 圖16

那麼解決方案就是在從庫上關閉定時任務。使用跳過出錯的資料後,主從恢復。如圖17和圖18

MySQL的clone(克隆)要注意的點

                                                                 圖17

MySQL的clone(克隆)要注意的點

                                                                    圖18

MySQL的clone(克隆)要注意的點

                                                                    圖19

那麼使用clone資料庫的時候,一定要確定有沒有定時任務。如果有,那麼clone database以後一定要把從庫的定時任務全部停止。或者在clone database之前做出干預。或者設計的時候避免使用定時任務。

以上問題就是在工作遇到的定時任務對於clone database帶來的影響和注意的點。


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

相關文章