Sharding-Proxy使用入門(4.0.1版本)

定位為透明化的數(shù)據(jù)庫代理端潘拱,提供封裝了數(shù)據(jù)庫二進制協(xié)議的服務(wù)端版本,用于完成對異構(gòu)語言的支持拧略。 目前先提供MySQL/PostgreSQL版本芦岂,它可以使用任何兼容MySQL/PostgreSQL協(xié)議的訪問客戶端(如:MySQL Command Client, MySQL Workbench, Navicat等)操作數(shù)據(jù),對DBA更加友好垫蛆。

  • 向應(yīng)用程序完全透明禽最,可直接當(dāng)做MySQL/PostgreSQL使用。
  • 適用于任何兼容MySQL/PostgreSQL協(xié)議的的客戶端袱饭。

1.下載Sharding-Proxy中間件
https://shardingsphere.apache.org/document/legacy/4.x/document/cn/downloads/

image.png

完成下載后直接解壓文件夾川无,需要操作主要文件夾為conf中的配置文件

image.png

主要操作配置文件為這兩個,讀寫分離部分暫不涉及宁赤,
config-sharding.yaml 主要用來配置邏輯庫舀透,分表規(guī)則
server.yaml 用于配置代理信息

image.png

config-sharding.yaml內(nèi)容
broadcastTables字段可配置廣播表,用于不做分頁的表决左,使用此字段前需配置defaultDataSourceName默認(rèn)庫

dataSources: #數(shù)據(jù)源配置愕够,可配置多個data_source_name
  <data_source_name>: #<!!數(shù)據(jù)庫連接池實現(xiàn)類> `!!`表示實例化該類
    driverClassName: #數(shù)據(jù)庫驅(qū)動類名
    url: #數(shù)據(jù)庫url連接
    username: #數(shù)據(jù)庫用戶名
    password: #數(shù)據(jù)庫密碼
    # ... 數(shù)據(jù)庫連接池的其它屬性

shardingRule:
  tables: #數(shù)據(jù)分片規(guī)則配置,可配置多個logic_table_name
    <logic_table_name>: #邏輯表名稱
      actualDataNodes: #由數(shù)據(jù)源名 + 表名組成佛猛,以小數(shù)點分隔惑芭。多個表以逗號分隔,支持inline表達式继找。缺省表示使用已知數(shù)據(jù)源與邏輯表名稱生成數(shù)據(jù)節(jié)點遂跟,用于廣播表(即每個庫中都需要一個同樣的表用于關(guān)聯(lián)查詢,多為字典表)或只分庫不分表且所有庫的表結(jié)構(gòu)完全一致的情況
        
      databaseStrategy: #分庫策略婴渡,缺省表示使用默認(rèn)分庫策略幻锁,以下的分片策略只能選其一
        standard: #用于單分片鍵的標(biāo)準(zhǔn)分片場景
          shardingColumn: #分片列名稱
          preciseAlgorithmClassName: #精確分片算法類名稱,用于=和IN边臼。哄尔。該類需實現(xiàn)PreciseShardingAlgorithm接口并提供無參數(shù)的構(gòu)造器
          rangeAlgorithmClassName: #范圍分片算法類名稱,用于BETWEEN柠并,可選岭接。。該類需實現(xiàn)RangeShardingAlgorithm接口并提供無參數(shù)的構(gòu)造器
        complex: #用于多分片鍵的復(fù)合分片場景
          shardingColumns: #分片列名稱臼予,多個列以逗號分隔
          algorithmClassName: #復(fù)合分片算法類名稱鸣戴。該類需實現(xiàn)ComplexKeysShardingAlgorithm接口并提供無參數(shù)的構(gòu)造器
        inline: #行表達式分片策略
          shardingColumn: #分片列名稱
          algorithmInlineExpression: #分片算法行表達式,需符合groovy語法
        hint: #Hint分片策略
          algorithmClassName: #Hint分片算法類名稱粘拾。該類需實現(xiàn)HintShardingAlgorithm接口并提供無參數(shù)的構(gòu)造器
        none: #不分片
      tableStrategy: #分表策略窄锅,同分庫策略
      keyGenerator: 
        column: #自增列名稱,缺省表示不使用自增主鍵生成器
        type: #自增列值生成器類型半哟,缺省表示使用默認(rèn)自增列值生成器酬滤∏┎停可使用用戶自定義的列值生成器或選擇內(nèi)置類型:SNOWFLAKE/UUID
        props: #屬性配置, 注意:使用SNOWFLAKE算法寓涨,需要配置worker.id與max.tolerate.time.difference.milliseconds屬性盯串。若使用此算法生成值作分片值,建議配置max.vibration.offset屬性
          <property-name>: 屬性名稱
      
  bindingTables: #綁定表規(guī)則列表
  - <logic_table_name1, logic_table_name2, ...> 
  - <logic_table_name3, logic_table_name4, ...>
  - <logic_table_name_x, logic_table_name_y, ...>
  broadcastTables: #廣播表規(guī)則列表
  - table_name1
  - table_name2
  - table_name_x
  
  defaultDataSourceName: #未配置分片規(guī)則的表將通過默認(rèn)數(shù)據(jù)源定位  
  defaultDatabaseStrategy: #默認(rèn)數(shù)據(jù)庫分片策略戒良,同分庫策略
  defaultTableStrategy: #默認(rèn)表分片策略体捏,同分庫策略
  defaultKeyGenerator: #默認(rèn)的主鍵生成算法 如果沒有設(shè)置,默認(rèn)為SNOWFLAKE算法
    type: #默認(rèn)自增列值生成器類型,缺省將使用org.apache.shardingsphere.core.keygen.generator.impl.SnowflakeKeyGenerator糯崎〖哥裕可使用用戶自定義的列值生成器或選擇內(nèi)置類型:SNOWFLAKE/UUID
    props:
      <property-name>: #自增列值生成器屬性配置, 比如SNOWFLAKE算法的worker.id與max.tolerate.time.difference.milliseconds

  masterSlaveRules: #讀寫分離規(guī)則,詳見讀寫分離部分
    <data_source_name>: #數(shù)據(jù)源名稱沃呢,需要與真實數(shù)據(jù)源匹配年栓,可配置多個data_source_name
      masterDataSourceName: #詳見讀寫分離部分
      slaveDataSourceNames: #詳見讀寫分離部分
      loadBalanceAlgorithmType: #詳見讀寫分離部分
      props: #讀寫分離負(fù)載算法的屬性配置
        <property-name>: #屬性值
      
props: #屬性配置
  sql.show: #是否開啟SQL顯示,默認(rèn)值: false
  executor.size: #工作線程數(shù)量薄霜,默認(rèn)值: CPU核數(shù)
  max.connections.size.per.query: # 每個查詢可以打開的最大連接數(shù)量,默認(rèn)為1
  check.table.metadata.enabled: #是否在啟動時檢查分表元數(shù)據(jù)一致性某抓,默認(rèn)值: false

server.yaml內(nèi)容

#權(quán)限驗證
#用于執(zhí)行登錄Sharding Proxy的權(quán)限驗證。配置用戶名惰瓜、密碼否副、可訪問的數(shù)據(jù)庫后,必須使用正確的用戶名崎坊、密碼才可登錄Proxy备禀。
authentication:
  users:
    root: # 自定義用戶名
      password: root  # 自定義用戶名
    sharding: # 自定義用戶名
      password: sharding #自定義用戶名
      authorizedSchemas: sharding_db  該用戶授權(quán)可訪問的數(shù)據(jù)庫,多個用逗號分隔奈揍。缺省將擁有root權(quán)限曲尸,可訪問全部數(shù)據(jù)庫。

props:
#  max.connections.size.per.query: 1
#  acceptor.size: 16  #用于設(shè)置接收客戶端請求的工作線程個數(shù)男翰,默認(rèn)為CPU核數(shù)*2
  executor.size: 16  # Infinite by default.
#  proxy.frontend.flush.threshold: 128  # 對于單個大查詢,每多少個網(wǎng)絡(luò)包返回一次
#    # LOCAL: Proxy will run with LOCAL transaction.
#    # XA: Proxy will run with XA transaction.
#    # BASE: Proxy will run with B.A.S.E transaction.
#  proxy.transaction.type: LOCAL #默認(rèn)為LOCAL事務(wù)另患,允許LOCAL,XA奏篙,BASE三個值柴淘,XA采用Atomikos作為事務(wù)管理器,BASE類型需要拷貝實現(xiàn)ShardingTransactionManager的接口的jar包至lib目錄中
#  proxy.opentracing.enabled: false #是否開啟鏈路追蹤功能秘通,默認(rèn)為不開啟为严。詳情請參見[鏈路追蹤](/cn/features/orchestration/apm/)
#  query.with.cipher.column: true
  sql.show: false #控制臺打印SQL

使用mysql數(shù)據(jù)庫需要在lib文件夾下放進mysql的jar包
此jar包最好匹配使用mysql的版本,否則容易報錯

image.png

完成配置后肺稀,運行bin下的start.bat文件啟動

image.png

成功結(jié)果

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末第股,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子话原,更是在濱河造成了極大的恐慌夕吻,老刑警劉巖诲锹,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異涉馅,居然都是意外死亡归园,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門稚矿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庸诱,“玉大人,你說我怎么就攤上這事晤揣∏潘” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵昧识,是天一觀的道長钠四。 經(jīng)常有香客問我,道長跪楞,這世上最難降的妖魔是什么缀去? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮习霹,結(jié)果婚禮上朵耕,老公的妹妹穿的比我還像新娘。我一直安慰自己淋叶,他們只是感情好阎曹,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著煞檩,像睡著了一般处嫌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斟湃,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天熏迹,我揣著相機與錄音,去河邊找鬼凝赛。 笑死注暗,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的墓猎。 我是一名探鬼主播捆昏,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼毙沾!你這毒婦竟也來了骗卜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寇仓,沒想到半個月后举户,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡遍烦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年俭嘁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乳愉。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡兄淫,死狀恐怖屯远,靈堂內(nèi)的尸體忽然破棺而出蔓姚,到底是詐尸還是另有隱情,我是刑警寧澤慨丐,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布坡脐,位于F島的核電站,受9級特大地震影響房揭,放射性物質(zhì)發(fā)生泄漏备闲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一捅暴、第九天 我趴在偏房一處隱蔽的房頂上張望恬砂。 院中可真熱鬧,春花似錦蓬痒、人聲如沸泻骤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狱掂。三九已至,卻和暖如春亲轨,著一層夾襖步出監(jiān)牢的瞬間趋惨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工惦蚊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留器虾,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓蹦锋,卻偏偏與公主長得像兆沙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子晕粪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容