Docker資料庫應用 Cassandra

2021-10-08 05:00:58 字數 2702 閱讀 1673

apache cassandra 是個開源(apache license 2.0)的分布式資料庫,支援分布式高可用資料儲存,可以提供跨資料中心的容錯能力其無單點故障,並通過非同步無主複製實現所有客戶端的低延遲操作。cassandra在設計上引入了p2p 技術,具備大規模可分割槽行儲存能力,並支援spark、storm、hadoop系統整合。目前facebook、twitter、instagram、ebay、github、reddit、netfix等多家公司都在使用cassandra。類似系統還有hbase等。

$ docker run --name my-cassandra -d cassandra:latest
這裡的 --name 標籤指定容器名稱。cassandra:tag 中的標籤指定版本號,標籤名稱可以參考官方倉庫的標籤說明:

之後使用者可以將另乙個容器中的應用與cassandra容器連線起來。次應用容器要暴露cassandra需要使用的埠(cassandra預設服務埠rpc_port:9160;cql預設本地服務埠native_transport_port:9042),這樣就可以通過容器link功能來連線cassandra容器與應用容器。

cassandra有兩種集群模式:單機模式(所有例項集中在一台機器)和多機模式(例項分布於多台機器)。單機模式下,可以按照上文描述的方法啟動容器即可,如果需要啟動更多例項,則需要在指令中配置首個例項資訊:

$ docker run --name my-cassandra2 -d -e cassandra_seeds=

"$(docker inspect --format=

'}')

my-cassandra" cassandra

其中my-cassandra就是首個cassandra server的例項名稱。在這裡使用了docker inspect指令,以獲取首個例項的ip位址資訊。還可以使用docker run 的–link標籤來連線這兩個例項:

$ docker run --name my-cassandra2 -d --link my-cassandra:db cassandra
多機模式下,由於容器網路基於docker bridge,所以需要通過環境變數,配置cassandra server容器的ip廣播位址(即使用-e標籤)。假設第一台虛擬機器的ip是10.22.22.22,第二台虛擬機器的ip是10.23.23.23,gossip埠是7000,那麼啟動第一台虛擬機器中的cassandra容器時的指令如下:

$ docker run --name my-cassandra -d -e cassandra_broadcast_address=10.22.22.22 -p 7000:7000 cassandra
$ docker run --name my-cassandra -d -e cassandra_broadcast_address=10.23.23.23 -p 7000:7000 -e cassandra_seeds=10.42.42.42 casssrandra
cqlsh是指cassandra query language shell。在cassandra1.x版後,除了cassandra-cli之外,官方在/cassandra_install_folder/bin裡加入了cqlsh指令。該指令與cassandra-cli一樣,是client端工具,它可聯機至server端進行資料維護與查詢。cqlsh支援cql操作,可以方便的維護資料。

以下指令啟動乙個cassandra容器並執行cqlsh:

$ docker run -it --link my-cassandra:db --rm cassandra sh -c 'exec cqlsh "$cassandra_port_9042_tcp_addr"'

cqlsh> create keyspace demodb with replication =

and durable_writes =

true

;cqlsh> use demodb;

cqlsh: desc demodb;

或者如下方式,my-cassandra 是我們的cassandra server 容器的name:

$ docker run -it --link my-cassandra:db --rm cassandra cqlsh cassandra

cqlsh> create keyspace demodb with replication =

and durable_writes =

true

;cqlsh> use demodb;

cqlsh: desc demodb;

可以使用docker exec 指令直接訪問cassandra 系統

$ docker exec -it my-cassandra /bin/bash

root@1eadf82sdf:/# ls -l /etc/cassandra/

使用docker logs指令訪問日誌:

$ docker logs my-cassandra
cassandra的相關資源如下:

cassandra 官網:

cassandra 官方文件:

cassandra 官方倉庫:

cassandra 官方映象:

cassandra 官方映象倉庫:

Docker實戰 九 之資料庫應用

目前,主流資料庫包括關係型和非關係型兩種。關係型資料庫是建立在關係模型基礎上的資料庫,借助於集合代數等數學概念金額方法來處理資料庫中的資料,支援複雜的事務處理和結構化查詢。代表實現有mysql oracle postgresql mariadb sqlserver等。非關係型資料庫是新興的資料庫技術...

docker安裝Oracle資料庫

前兩天搞壞了們公司一台開發伺服器,有個部門要用oracle資料庫,今天說好給人家裝好,終於在下班之前弄好了,之間也遇到了很多的坑,在這裡記下了,給大家提醒。hhhhhh。接著執行下面命令 alter user system identified by oracle alter user sys id...

Docker 筆記 部署資料庫

部署 sqlserver 部署 postgresql 部署 oracle docker pull mysql 如果在windows下,e裡面的 要替換成 單引號變成雙引號 掛載到宿主機 data mysql 服務埠 3306 mkdir p data mysql data data mysql co...