這裏將進行簡單的部署和配置,在配置以前,須要先了解必定的拓撲狀況node
類目 屬性 備註mysql
kingshard 10.11.10.214 無git
master 10.11.10.215 主庫github
slave 10.11.10.216 讀庫web
詳細瞭解地址 https://github.com/flike/kingshard/blob/master/README_ZH.mdsql
安裝 後端
因爲kingshard使用的是go語言開發。故此須要在kingshard這臺機器中安裝對應的go支持的編譯軟件(go版本爲1.6以上)測試
[root@gzsd-ks01-101110214 ~]# yum -y install go git [root@gzsd-ks01-101110214 ~]# mkdir /data/download [root@gzsd-ks01-101110214 ~]# cd /data/download/ [root@gzsd-ks01-101110214 download]# git clone https://github.com/flike/kingshard.git /etc/kingshard [root@gzsd-ks01-101110214 download]# cd /etc/kingshard/ [root@gzsd-ks01-101110214 kingshard]# source ./dev.sh [root@gzsd-ks01-101110214 kingshard]# make
到這裏,編譯完成,對配置文件進行修改spa
[root@gzsd-ks01-101110214 kingshard]# cp etc/ks.yaml etc/ks.yaml.bak [root@gzsd-ks01-101110214 kingshard]# vi etc/ks.yaml
# kingshard的地址和端口
addr : 0.0.0.0:9696debug
# prometheus server listen addr
prometheus_addr : 0.0.0.0:7080
# 鏈接kingshard的用戶名和密碼的用戶列表
user_list:
-
user : root
password : root
# -
# user : kingshard 註冊一個帳號
# password : kingshard
#kingshard的web API 端口
web_addr : 0.0.0.0:9797
#調用API的用戶名和密碼
web_user : admin
web_password : admin
# if set log_path, the sql log will write into log_path/sql.log,the system log
# will write into log_path/sys.log
#log_path : /Users/flike/log
# log級別,[debug|info|warn|error],默認是error
log_level : debug
# 打開SQL日誌,設置爲on;關閉SQL日誌,設置爲off
log_sql: on
#若是設置了該項,則只輸出SQL執行時間超過slow_log_time(單位毫秒)的SQL日誌,不設置則輸出所有SQL日誌
#slow_log_time : 100
# the path of blacklist sql file
# all these sqls in the file will been forbidden by kingshard
#blacklist_sql_file: /Users/flike/blacklist
# 只容許下面的IP列表鏈接kingshard,若是不配置則對鏈接kingshard的IP不作限制。
# support ip and ip segment
#allow_ips : 127.0.0.1,192.168.15.0/24
# kingshard使用的字符集,若是不設置該選項,則kingshard使用utf8做爲默認字符集
proxy_charset: utf8mb4
# node is an agenda for real remote mysql server.
nodes :
-
#node節點名字
name : node1
# 鏈接池中最大空閒鏈接數,也就是最多與後端DB創建max_conns_limit個鏈接
max_conns_limit : 32
# kingshard鏈接該node中mysql的用戶名和密碼,master和slave的用戶名和密碼必須一致
user : root
password : root
# master的地址和端口
master : 192.168.248.130:3306
# slave的地址、端口和讀權重,@後面的表示該slave的讀權重。可不配置slave
#slave : 192.168.59.101:3307@2,192.168.59.101:3307@3
slave : 192.168.248.131:3306@3
#down_after_noalive : 32
#kingshard在300秒內都鏈接不上mysql,kingshard則會下線該mysql
down_after_noalive : 32
# schema defines sharding rules, the db is the sharding table database.
schema_list :
-
#schema的所屬用戶名
user: root
#分表分佈的node名字
nodes: [node1]
#全部未分表的SQL,都會發往默認node。
default: node1
shard:
-
#分表使用的db
db : kingshard
#分表名字
table: test_shard_hash
#分表字段
key: id
#分表分佈的node
nodes: [node1]
#分表類型
type: hash
#子表個數分佈,表示node1有4個子表,
locations: [4]
-
db : hidb
table: test_hash
key: id
nodes: [node1]
type: hash
locations: [4]
-
db : kingshard
table: test_shard_range
key: id
type: range
nodes: [node1]
locations: [4]
#個子表最多包好10000條記錄。即子表1對應的id爲[0,10000),子表2[10000,20000)....
table_row_limit: 10000
# -
# db : kingshard
# table: test_shard_time
# key: id
# nodes: [node1]
# type: hash
# locations: [2]
# -
# db : kingshard
# table: test_shard_month
# key: dtime
# type: date_month
# nodes: [node1]
# date_range: [201603-201605,201609-201612]
# -
# db : kingshard
# table: test_shard_day
# key: mtime
# type: date_day
# nodes: [node1]
# date_range: [20160306-20160307,20160308-20160309]
創建軟鏈接
ln /etc/kingshard /usr/bin/kingshard
測試使用screen來執行啓動腳本
[root@gzsd-ks01-101110214 kingshard]# yum -y install screen [root@gzsd-ks01-101110214 kingshard]# screen -R ks [root@gzsd-ks01-101110214 kingshard]# kingshard --config=etc/ks.yaml
能夠用supervisor管理進程