01數據庫tidb mysql
如今比較流行的就是mariadb。 git
mysql被收購了,就不要用了。用mariadb。可是可是那個是是mysql的源代碼開源出來的另一個版本,和mysql的設計是同樣的。 github
tidb 就不同了。其靈感來自於 Google 的 F1 和 Google spanner, TiDB 支持包括傳統 RDBMS 和 NoSQL 的特性。 sql 徹底支持mysql,同時人家仍是一個分佈式數據庫。 golang
什麼分庫分表都弱爆了,這個直接分,超級方便。並且仍是開源的。 並且有些公司已經使用到生產環境了。新智雲(www.enncloud.cn)sql
是國內的 技術大牛 黃東旭 的公司 pincap 開發的。docker
就是以前寫 codis 那我的。 數據庫
https://github.com/pingcap/tidb 微信
很厲害的人,設計的很好的項目。開源的能夠自由使用。 curl
同時遇到問題了,找人仍是很方便的。tcp
02
mariadb安裝&啓動
docker pull mariadb
#394.9 MB
#啓動:
mkdir -p /data/mariadb/data
docker run --name mariadb -v /data/mariadb/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mariadb -p 3306:3306 -d mariadb:latest
啓動成功端口在 3306,數據在 /data/mariadb/data 密碼: mariadb
登陸成功!
登陸成功以後顯示:
# mysql -uroot -pmariadb -h 127.0.0.1
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.1.22-MariaDB-1~jessie mariadb.org binary distribution
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
03
tidb安裝&啓動
docker pull pingcap/tidb
#45.58 MB
mkdir -p /data/tidb/data
docker run --name tidb-server -d -v /data/tidb/data:/tmp/tidb -p 4000:4000 -p 10080:10080 pingcap/tidb:latest
#設置數據文件,默認使用 goleveldb 存儲。
啓動成功默認端口 4000 ,也能夠假裝成mysql,把端口修改爲3306 。
登陸成功以後顯示:
# mysql -h 127.0.0.1 -P 4000 -u root -D test --prompt="tidb> "
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.1-TiDB-1.0 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
tidb>
登陸成功,Server version: 5.7.1-TiDB-1.0 MySQL Community Server (GPL) tidb。
可使用 10080 端口查看狀態信息:
# curl localhost:10080/status
{"connections":1,"version":"5.7.1-TiDB-1.0","git_hash":"31bc1083fc9195181d187639efb847d19037d9de"}
感受上應該是集羣的時候使用的。
04
建立數據庫&用戶
建立數據庫 demo 並建立用戶 demo 賦值權限。
注意:這些sql 語句在 mysql & tidb 當中都key執行併成功分配權限&登陸成功。
CREATE DATABASE demo CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'demo'@'%' IDENTIFIED BY 'demo';
GRANT ALL PRIVILEGES ON demo.* TO 'demo'@'%';
FLUSH PRIVILEGES;
你就妥妥的把 tidb 當成一個 mysql 使用就行啦。
05
使用golang 插入數據測試
package main
import(
"fmt"
_ "github.com/go-sql-driver/mysql"
"database/sql"
"time"
)
funcmain() {
//mysql port :3306 tidb port4000
db, _ := sql.Open("mysql", "demo:demo@tcp(127.0.0.1:3306)/demo")
//
start := time.Now()
loop := 100000
for i := 0; i < loop;i ++ {
result, err := db.Exec(
"INSERTINTO users(`name`, age) VALUES (?, ?)",
"testUser",
i,
)
if i%(loop/10) == 0 {
fmt.Println(result,err)
}
}
end := time.Now()
fmt.Println("測試插入時間:",end.Sub(start).Seconds())
}
分別測試插入一個單機docker的 mariadb 和 tidb
06
總結
簡單的使用了下,使用tidb 就和使用 mariadb 同樣同樣的。
很是的方便,原有的系統不用作遷移,能夠直接切換過去。很是的方便。
使用tidb 能夠輕鬆的將數據庫作成分佈式的擴展,省去了數據庫的分庫分表。
直接支持了分佈式的數據存儲,能夠輕鬆的支持 TB 級別的數據。
同時又完美的支持mariadb 的各類查詢sql。
更多請關注微信公衆號:「極客腦司機」