1. 程式人生 > >mycat 分片中快速資料遷移思考

mycat 分片中快速資料遷移思考

操作實踐背景:

     travelrecord表定義為10個分片,嘗試將10個分片中的2個分片轉移到第二臺MySQL上,並完成記錄,   要求最快的資料遷移做法,中斷業務時間最短

思路一利用mysqldump:

在這裡我們只針對mysql innodb engine,而且配置bin-log的資料庫進行分析。因為是將10個分片中的兩個分片進行遷移,其實就是資料庫的遷移過程,就是將10個數據庫中的兩個資料遷移到另外一臺機器;中斷業務最短的做法就是:

1)  準備mycat新的配置檔案備用,以便快速切換配置檔案。
2)  在業務地峰期間,如凌晨,使用mysqldump進行資料庫的全量備份(附帶--flush-logs);
3)  將兩個分片資料庫的全量備份第二臺機器上進行全量恢復;
4)  停止mycat伺服器,
5)  停止第一臺機器的mycat例項(假設原來的分片在一個mysql例項)
6)  拷貝第一臺機器的binlog檔案到第二臺機器,並使用mysql的mysqlbinlog工具進行這兩個資料庫的增量資料的恢復。
7)  啟動第一臺資料例項,校驗遷移的兩個分片資料正確性(主要看記錄數)

8)  替換mycat的配置檔案並啟動mycat例項

在該方案中,業務中斷的時間主要是處理mysqlbinlog的增量資料恢復。

思路二利用mysql的ms機制做級聯複製

在這裡二個片比如第一個分片db11,第二個分片db21,我在db11上面再做個級聯主從,db11-->db16,在db21上面做個級聯主從db21->db26,這樣到時候資料實時同步,中斷業務比較短的做法是:

1)準備mycat新配置檔案備用,以便快速切換配置檔案。

2)在業務低峰期間,比如凌晨時分,開始操作,停止mycat伺服器

3)進行db11-db16主備切換,進行db21-db26主備切換

4)停止第一臺機器的mycat例項

5)在主備切換過程中,舊的主db11、db21上面的binlog中如果有新的dml、ddl操作,就用mysqlbinlog解析出來,在新的主db16和db26上面重做一遍

6)使用mk-table-checksum工具檢查新主從db16->db11、db26->db21的資料一致性。

7)替換mycat的配置檔案並啟動mycat例項

相關推薦

mycat 分片快速資料遷移思考

操作實踐背景:     travelrecord表定義為10個分片,嘗試將10個分片中的2個分片轉移到第二臺MySQL上,並完成記錄,   要求最快的資料遷移做法,中斷業務時間最短思路一利用mysqldump:在這裡我們只針對mysql innodb engine,而且配置b

laravel資料遷移資料填充

laravel中的資料遷移和資料填充 標籤(空格分隔): php 生成遷移檔案兩種方式: 1 新建一個表的遷移檔案 php artisan make:migration create_students_table --create=students 2 建立模型的時候同時建立遷移檔案 php

將oracle資料遷移到mysql,避免亂碼的方法

1.將oracle中的資料匯出成csv格式的檔案 將oracle中的查詢結果集,點選匯出,選擇csv。(匯出Excel格式非常非常慢,Excel匯入mysql中時,選擇65001 (UTF-8),中文不會亂碼) 2.用mysql資料庫管理工具navicat,點選到表選項(非具體表),點選

laravel資料遷移表結構,欄位型別,定義整理

laravel中的資料遷移表結構,欄位型別,定義整理 /* 表引擎 */ $table->engine = 'InnoDB'; /* 類型別 */ // - 數字 $table->bigInteger('id'); $t

面試題思考:java快速失敗(fail-fast)和安全失敗(fail-safe)的區別是什麽?

無效對象 ring list 改變 ava ret fail last 原理 一:快速失敗(fail—fast) 在用叠代器遍歷一個集合對象時,如果遍歷過程中對集合對象的內容進行了修改(增加、刪除、修改),則會拋出Concurrent Modificat

SQL Server 2012快速插入批量資料的示例及疑惑

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

資料庫分庫分表——擴容無須資料遷移分片演算法

擴容無須資料遷移的分片演算法 常見的分庫分表方案大都用主鍵mod一個數(如分為8個庫,則 id % 8 根據餘數決定落到哪個分片)。此種方案中,如果要拓展資料庫將是十分複雜的事情(例如拓展為10個,則程式碼需要改為 id % 10 之前的舊資料也要做遷移)。我們希望有一種支援自由規劃無須資料遷移和修

C# 兩個datatable資料快速比較返回交集或差集

轉自: https://www.cnblogs.com/lacey/p/5893380.html 如果兩個datatable的欄位完全一致的話,可以直接使用Except,Intersect //Except()差集var tempExcept = dt1.AsEnumerable().Excep

MyCat分片-海量資料儲存解決方案

說到MyCat分片,首先我們要了解的是什麼是分片 簡單來說,就是指通過某種特定的條件,將我們存放在同一個資料庫中的資料分散存放到多個數據庫(主機)上面,以達到分散單臺裝置負載的效果。 資料的切分(Sharding)根據其切分規則的型別,可以分為兩種切分模式。 (1)一種是按照不同的表

DRF介面資料序列化及分頁、過濾、搜尋、排序的快速實現

       在學習了一段時間DRF後,明顯感受到了在Web API搭建的過程中,DRF比Django靈活和迅速很多,DRF中提供了很多強大檢視和API,本篇通過一個商品頁的小案例記錄一下通過試用各種檢視及filter之後總結出的一套最簡化程式碼。 &

django資料遷移命令執行成功,但未在資料庫生成表

場景: 因資料庫預設字符集不是utf8,當上傳中文字元時報錯。 處理過程中刪除了原資料表,重新遷移,資料庫表未能建立 解決步驟: 修改資料庫中相應表的字符集,上傳資料失敗。 修改整個資料庫的字符集,上傳資料失敗。 修改mysql配置檔案/etc/my.cnf.d/s

大量資料遷移到物件儲存服務過程使用聯合檔案系統的遷移方案

記一次遷移3T靜態資料到儲存服務的實踐過程,跟大家分享一下。 剛畢業,水平有限,重在記錄和分享。^ _ ^ 1.任務概述 幾個T的靜態資料遷移,主要是小圖,從本地檔案系統遷移到新物件儲存服務中。 遷移過程時間跨度大,可能要幾天甚至一週才能完成,在這過程

通過spark-sql快速讀取hive資料

1 配置並啟動 1.1 建立並配置hive-site.xml 在執行Spark SQL CLI中需要使用到Hive Metastore,故需要在Spark中新增其uris。具體方法是將HIVE_CONF/hive-site.xml複製到SPARK_CONF目錄下,然後在該配置檔案中,新增hive.metast

MyCat分片規則(全域性表,ER分片表,多對多關聯,主鍵分片VS非主鍵分片),MyCat常用的分片規則(15分片規則),自定義MyCat分片規則

1 MyCat分片規則 資料切分中重要的幾條原則,其中有幾條資料冗餘,表分組(Table Group)。 1.1全域性表 如果你的業務中有些資料類似於資料字典,比如配置檔案的配置,常用業務的配置或資料量不是很大,很少變動的表,這些表往往不是特別大,而且大部分的業務場景都

如何快速地將Hive資料匯入ClickHouse

如何快速地將Hive中的資料匯入ClickHouse ClickHouse是面向OLAP的分散式列式DBMS。我們部門目前已經把所有資料分析相關的日誌資料儲存至ClickHouse這個優秀的資料倉庫之中,當前日資料量達到了300億。 在之前的文章如何快速地把HDFS中的資料

如何快速地把HDFS資料匯入ClickHouse

如何快速地把HDFS中的資料匯入ClickHouse ClickHouse是面向OLAP的分散式列式DBMS。我們部門目前已經把所有資料分析相關的日誌資料儲存至ClickHouse這個優秀的資料倉庫之中,當前日資料量達到了300億。 之前介紹的有關資料處理入庫的經驗都是基於

Mysql5.7 單表 500萬資料遷移到新表的快速實現方案

開發過程中需要把一個已有500萬條記錄的表資料同步到另一個新表中,剛好體驗下Mysql官方推薦的大資料遷移的方案:SELECT INTO OUTFILE,LOAD DATA INFILE Mysql

MongoDB實戰-操作分片叢集,向分片叢集寫入資料

       本篇文章中,我們將向分片集合寫入資料,這樣你才能觀察塊的排列和移動。這是MongoDB分片的要素。每個示例文件都表示一個電子表格,看起來是這樣的。 { _id:ObjectId("4d6f29c0e4ef0123afdacaeb"), filename:"s

使用JDBC在MySQL資料庫快速批量插入資料

使用JDBC連線MySQL資料庫進行資料插入的時候,特別是大批量資料連續插入(10W+),如何提高效率呢? 在JDBC程式設計介面中Statement 有兩個方法特別值得注意: void addBatch() throws SQLException Adds a set

線上資料平滑遷移思考及拙見

前言 服務重構,老版系統為php程式碼,新版系統改為Java。 資料層面沿用之前老版服務的資料庫結構,部分庫欄位進行修改。 最終目的:服務實現切換,資料實現切換(老庫到新庫),不能停機升級,儘量減小對使用者影響。 實現方案:日誌追加 下面具體說一下自己的實現方案,可能會有紕漏的地方,僅做參考。 日誌追