Mysql資料遷移到TIDB詳解

2021-09-30 15:48:23 字數 2289 閱讀 4564

我從業16年來,使用了太多的資料庫(rdbms->nosql->newsql),首先我說一下資料庫的變遷和發展歷史:

以 mysql 為例剛開始時,它是乙個單機模式,但是隨著資料庫的資料量的增加及使用者對效能要求的提高,它的儲存容量和效能都遇到了瓶頸。

這些需求催生了新的解決方案,那就是 mysql 主從模式,進而將讀寫分離,減輕了讀寫系統的負擔。雖然可以是多從,但是主是單點的。接下來就發展到了中介軟體的解決方案,這個方案優點是能夠在一些限制條件下實現相對擴容,

但它是由一種手動的、靜態路由的方式來實現的擴容。那麼對 dba 在處理擴容操作時的要求就會比較高。之後誕生了 nosql 的解決方案,這裡以 hbase 為例:它支援強一致,多版本等,最重要是它在擴容和效能方面都做的比較好。

但是它不支援 sql 語法,對複雜查詢沒有怎麼支援,還有它的分布式事務不支援跨行。從而引入了 newsql 的概念。那麼怎麼理解 newsql 呢?newsql 可以淺顯地理解為 sql + nosql 的概念,它支援 sql 語法和分布式事務。

我們現在面臨問題,我總結如下,

針對如上問題,我們的tidb特點

下面實戰一下mysql資料遷移到tidb的方法

use test;

create table t1 (id int, age int, primary key(id)) engine=innodb;

create table t2 (id int, name varchar(256), primary key(id)) engine=innodb;

insert into t1 values (1, 1), (2, 2), (3, 3); insert into t2 values (1, "a"), (2, "b"), (3, "c");

./bin/checker -host 127.0.0.1 -port 3306 -user root test 2016/10/27 13:11:49 checker.go:48: [info] checking database test 2016/10/27 13:11:49 main.go:37: [info] database dsn: root:@tcp(127.0.0.1:3306)/test?charset=utf8 2016/10/27 13:11:49 checker.go:63: [info] checking table t1 2016/10/27 13:11:49 checker.go:69: [info] check table t1 succ 2016/10/27 13:11:49 checker.go:63: [info] checking table t2 2016/10/27 13:11:49 checker.go:69: [info] check table t2 succ #

解開壓縮包 tar -xzf mydumper-linux-amd64.tar.gz cd mydumper-linux-amd64

mydumper 從 mysql 匯出資料,如下:

./bin/mydumper -h 127.0.0.1 -p 3306 -u root -t 16 -f 128 -b test -t t1,t2 -o ./var/test

說明:上面,我們使用 -b test 表明是對 test 這個 database 操作,然後用 -t t1,t2 表明只匯出 t1,t2 兩張表。-t 16 表明使用 16 個執行緒去匯出資料。-f 128 是將實際的 table 切分成多大的 chunk,這裡就是 128mb 乙個 chunk。注意:在阿里雲一些需要 super privilege 的雲上面,mydumper 需要加上 --no-locks 引數,否則會提示沒有許可權操作。

./bin/myloader -h 127.0.0.1 -p 4000 -u root -t 16 -q 1 -d ./var/test

說明:這裡 -q 1 表明每個事務包含多少個 query,預設是 1000,我們這裡使用 1 就可以了。

mysql -h127.0.0.1 -p4000 -uroot mysql> show tables; +----------------+ | tables_in_test | +----------------+ | t1 | | t2 | +----------------+ mysql> select * from t1; +----+------+ | id | age | +----+------+ | 1 | 1 | | 2 | 2 | | 3 | 3 | +----+------+ mysql> select * from t2; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | b | | 3 | c | +----+------+

TiDB全量遷移,從MySql遷移到tidb

mydumper是乙個強大的資料遷移工具,具體可以參考 maxbube mydumper。你可以使用mydumper從 mysql 匯出資料,然後用 loader 將其匯入到 tidb。注意 雖然 tidb 也支援使用 mysql 官方的mysqldump工具來進行資料的遷移工作,但相比於mydum...

將MySQL資料遷移到Oracle

因為專案的原因,今晚將mysql資料庫的內容嘗試遷移到oracle,雖然結果失敗,不過學到了不少,下次就不一定了,哈哈 因為之前專案是使用mysql資料庫的,現在因為新公司要求使用oracle 公司大得很 不得不嘗試將以前專案進行遷移。經過查詢相關文件,最終選定使用oracle sql develo...

Oracle遷移到MySQL總結

日期 2012 06 01 字型 大中小 這兩個星期裡一直都在忙於一件事兒,就是oracle資料庫的遷移問題。沒有做的時候感覺這是一件十分輕鬆的事兒,可是等到實實在在去做去實現的時候,自己傻眼了。這種糾結啊,在這裡先說下遇到的問題 1。資料庫的表結構問題 資料型別不同需要解決varchar2 var...