MySQL的clone(克隆)要注意的點
MySQL的克隆功能對於資料庫來說建立主從太方便了。在實際工作中解決了不少問題,但是有一次的經歷讓我也感受到了其中有些需要注意的地方。如果不注意這些,會帶來問題。
首先初始化一個MySQL8的資料庫。MySQL安裝軟體過程省略,然後直接service mysqld start。MySQL就會初始化一個資料庫。圖1
圖1
透過檢查mysql的log看到了初始化的密碼,如圖2
圖2
然後用這個初始化的隨機密碼登入資料庫。給root修改密碼,這裡改成了我的名字。紅框。然後再去掉密碼複雜度,綠框。改成“1”籃框。最後用1這個簡單密碼登入(黃框)。整個過程如圖3.因為做實驗環境,所以簡單一點。正式環境不推薦這樣。
圖3
安裝克隆元件,如圖4
圖4
建立克隆元件以及授權必要的許可權,backup的許可權,主從複製的許可權,克隆的許可權。如圖5
圖5
然後建立表,並且開啟排程引數。本案例產生的問題,全部在於這個定時任務。如果沒有定時任務,則不會產生問題。如圖6. event_scheduler=1,並且設定一個每10分鐘寫入一條資料的定時任務
圖6
如下圖圖7,資料開始寫入。寫入的資料庫是10.60.143.32。
圖7
接下來,我們在10.60.143.33上,用上面相同的方法初始化一個新的資料庫,用來搭建高可用的主從。如圖8
圖8
設定好clone 的源頭10.60.143.32,然後執行clone命令。如圖9
圖9
執行4秒過後,圖10.資料庫clone完畢。克隆完畢,資料庫是一個重啟過程,所以再次執行select,會顯示原有連線中斷。clone是物理備份,所以是完全主庫的映象,那麼定時任務也被帶來過來。
圖10
然後建立主從關係。圖11
圖11
開啟主從的執行緒如圖12
圖12
在10.60.143.32上寫入資料,如圖13
圖13
在10.60.143.33上,看到資料同步成功。圖14
圖14
這個時候我們等待定時任務在10.60.143.32上發起寫入,如圖15
圖15
然後這個時候觀察10.60.143.33上,主從出現問題。因為定時任務兩邊同時執行,導致資料衝突。這就是我們在clone資料庫上遇到的問題的復現。如圖16
圖16
那麼解決方案就是在從庫上關閉定時任務。使用跳過出錯的資料後,主從恢復。如圖17和圖18
圖17
圖18
圖19
那麼使用clone資料庫的時候,一定要確定有沒有定時任務。如果有,那麼clone database以後一定要把從庫的定時任務全部停止。或者在clone database之前做出干預。或者設計的時候避免使用定時任務。
以上問題就是在工作遇到的定時任務對於clone database帶來的影響和注意的點。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2930662/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java克隆(Clone)的應用薦Java
- 克隆(clone) ORACLE HOMEOracle
- Clone (克隆) ORACLE HOMEOracle
- 【DB寶35】使用MySQL 8.0 克隆(clone)外掛快速新增MGR節點MySql
- clone 淺克隆帶來的問題
- js deep clone 深克隆JS
- 克隆 clone Oracle 軟體Oracle
- JAVA 基礎 – clone淺克隆與深克隆Java
- JAVA 基礎 - clone淺克隆與深克隆Java
- mac磁碟克隆備份工具:Clone X for macMac
- MySQL 基礎篇需要注意的點(小白篇)MySql
- 寫小說主要注意的點
- LEFT JOIN 需要注意的點(Presto)REST
- MYSQL索引建立需要注意以下幾點細節MySql索引
- JavaScript cloneNode() 克隆節點JavaScript
- Oracle 12.2 新特性:線上PDB資料庫克隆(Pluggable Hot Clone)Oracle資料庫
- golang split需要注意的一個點Golang
- MySQL 8 新特性之Clone PluginMySqlPlugin
- java的 clone方法Java
- vmware搭建HMC需要注意的幾個點
- vue陣列的深克隆和淺克隆Vue陣列
- github clone 指定的tagGithub
- Spring事務需要注意的幾個點Spring
- Laravel 使用 PostgreSQL 資料庫需要注意的點LaravelSQL資料庫
- LeetCode BFS題目以及要注意的點LeetCode
- iOS編碼需要注意的幾點問題iOS
- 深入理解Java的淺克隆與深克隆Java
- Git clone 的小問題Git
- git clone的使用小記Git
- Rust中的Copy和CloneRust
- 原生js實現物件的深克隆以及淺克隆JS物件
- MySQL中需要注意的欄位長度問題MySql
- 關於ORACLE MYSQL NOT IN和NOT exists需要注意的 NULL值OracleMySqlNull
- 構建高效能的介面模組需要注意的幾點
- 應用 Laravel 的軟刪除你需要注意的幾點Laravel
- LeetCode Trie常見的題型以及要注意的點LeetCode
- js如何克隆一個節點物件JS物件
- 有關伺服器升級需要注意的點伺服器