有關Mysql分庫分表,讀寫分離資料庫水平拆分

2021-07-11 17:14:15 字數 3840 閱讀 7686

web伺服器一般都是乙個伺服器連線乙個資料庫的架構,可是隨著系統的使用,該架構已經不能滿足需求了,這裡使用的是c3p0的資料庫水平擴容。

spring核心配置:

id="propertyconfigurer"

class="org.springframework.beans.factory.config.propertyplaceholderconfigurer">

name="location">

classpath:/jdbc.propertiesvalue>

property>

bean>

id="datasource1"

class="com.mchange.v2.c3p0.combopooleddatasource">

name="driverclass"

value="$" />

name="jdbcurl"

value="$" />

name="user"

value="$" />

name="password"

value="$" />

name="autocommitonclose"

value="true"/>

name="initialpoolsize"

value="$"/>

name="minpoolsize"

value="$"/>

name="maxpoolsize"

value="$"/>

name="maxidletime"

value="$"/>

name="acquireincrement"

value="$"/>

name="maxidletimeexcessconnections"

value="$"/>

bean>

id="datasource2"

class="com.mchange.v2.c3p0.combopooleddatasource">

name="driverclass"

value="$" />

name="jdbcurl"

value="$" />

name="user"

value="$" />

name="password"

value="$" />

name="autocommitonclose"

value="true"/>

name="initialpoolsize"

value="$"/>

name="minpoolsize"

value="$"/>

name="maxpoolsize"

value="$"/>

name="maxidletime"

value="$"/>

name="acquireincrement"

value="$"/>

name="maxidletimeexcessconnections"

value="$"/>

bean>

...bean>

id="datasources"

class="com.caland.sun.client.datasources.defaultdatasourceservice">

name="datasourcedescriptors">

class="com.caland.sun.client.datasources.datasourcedescriptor">

name="identity"

value="partition1"/>

name="targetdatasource"

ref="datasource1"/>

name="targetdetectordatasource"

ref="datasource1"/>

name="standbydatasource"

ref="datasource4"/>

name="standbydetectordatasource"

ref="datasource4"/>

bean>

class="com.caland.sun.client.datasources.datasourcedescriptor">

name="identity"

value="partition2"/>

name="targetdatasource"

ref="datasource2"/>

name="targetdetectordatasource"

ref="datasource2"/>

name="standbydatasource"

ref="datasource5"/>

name="standbydetectordatasource"

ref="datasource5"/>

bean>

class="com.caland.sun.client.datasources.datasourcedescriptor">

name="identity"

value="partition3"/>

name="targetdatasource"

ref="datasource3"/>

name="targetdetectordatasource"

ref="datasource3"/>

name="standbydatasource"

ref="datasource6"/>

name="standbydetectordatasource"

ref="datasource6"/>

bean>

set>

property>

name="hadatasourcecreator">

class="com.caland.sun.client.datasources.ha.failoverhotswapdatasourcecreator">

name="detectingsql"

value="update caland set timeflag=current_timestamp()"/>

bean>

property>

bean>

id="hashfunction"

class="com.caland.core.dao.router.hashfunction"/>

id="internalrouter"

class="com.caland.sun.client.router.config.interalrouterxmlfactorybean">

name="functionsmap">

key="hash"

value-ref="hashfunction">

entry> 指定使用哪個方法

map>

property>

name="configlocations"> 指定配置路由的xml路徑

classpath:/dbrule/sharding-rules-on-namespace.xmlvalue>

list>

property>

bean>

路由的配置檔案

usernamespace>

partition1shards>

rule>

usernamespace>

partition2shards>

rule>

usernamespace>

partition3shards>

rule>

rules>

分庫分表與讀寫分離

隨著業務的發展,使用者數量與資料數量不斷增加,迫使進行分庫分表。所謂分表就是指將乙個表的資料存放到多個表,然後查詢時候按id的範圍到對應的表裡去查。因為資料太多,單個表已經不足以儲存。所謂分庫就是將資料存放到多個資料庫中,訪問時訪問其中乙個庫。社群已經黃了,基本不用了。不支援聯表,且依賴diamon...

mycat實現分庫分表讀寫分離

mysql8.0 主從同步配置 本地部署mycat的包為 mycat server 1.6.7.6 release 20201112144313 mac.tar.gz 2 解壓mycat包到指定目錄 tar zvf mycat server 1.6.7.6 release 2020111214431...

django orm 讀寫分離,分庫分app

1,讀寫分離 第一步 在settings下面配置 databases 第二步 資料庫遷移。python manage.py migrate 預設使用default的資料配置,完整的寫法為 python manage.py migrate database default 同樣的遷移完預設的資料庫後,...