1,讀寫分離
第一步:在settings下面配置
databases =,'': }
第二步、資料庫遷移。 python manage.py migrate 預設使用default的資料配置,
完整的寫法為: python manage.py migrate --database default ,同樣的遷移完預設的資料庫後,
也要遷移從資料庫 python manage.py migrate --database db2
第三步、讀寫分離
第一種:用using()指定哪個資料庫的使用#指定寫的資料庫
def write(request):
models.products.objects.
using('
default
').create(prod_name='
熊貓公仔
寫入成功')
# 指定讀的資料庫
方式二:自動讀寫分離
通過配置資料庫路由,來自動實現,這樣就不需要每次讀寫都手動指定資料庫了。
資料庫路由中提供了四個方法(db_for_read、db_for_write、allow_relation、allow_migrate)。
這裡主要用其中的兩個:
def db_for_read()
決定讀操作的資料庫,def db_for_write()
決定寫操作的資料庫。
定義router類新建myrouter.py(名字只要和後面的配置對應上就行),定義router類:
class router: #名字可以隨便改
def db_for_read(self, model, **hints):
return 'db2'
def db_for_write(self, model, **hints):
return 'default'
配置routersettings.py
中指定database_routers
database_routers = ['myrouter.router',]
可以指定多個資料庫路由,比如對於讀操作,django將會迴圈所有路由中的db_for_read()
方法,直到其中乙個有返回值,然後使用這個資料庫進行當前操作。
一主多從方案
classrouter:
def db_for_read(self, model, **hints):
"""讀取時隨機選擇乙個資料庫
"""import random
return random.choice(['
db2', '
db3', '
db4'
]) def db_for_write(self, model, **hints):
"""寫入時選擇主庫
"""return
'default
'
classrouter:
def db_for_read(self, model, **hints):
':return
'db1''
:
return
'db2
'def db_for_write(self, model, **hints):
':return
'db1''
:
return
'db2
'
MyCat讀寫分離和分庫
學習主題 mycat 學習目標 1 掌握mycat的配置規則 2 掌握mycat配置讀寫分離 3 掌握mycat分片分庫 1 的作用是什麼?配置分片規則 2 中name屬性的作用是什麼?屬性指定唯一的名字,用於標識不同的分片規則。內嵌的rule標籤則指定對物理表中的哪一列進行拆分和使用什麼分片演算法...
分庫分表與讀寫分離
隨著業務的發展,使用者數量與資料數量不斷增加,迫使進行分庫分表。所謂分表就是指將乙個表的資料存放到多個表,然後查詢時候按id的範圍到對應的表裡去查。因為資料太多,單個表已經不足以儲存。所謂分庫就是將資料存放到多個資料庫中,訪問時訪問其中乙個庫。社群已經黃了,基本不用了。不支援聯表,且依賴diamon...
mycat實現mariadb讀寫分離 分庫
節點名稱 節點ip 埠master 127.0.0.1 3306 sl e 127.0.0.1 3305 mycat 127.0.0.1 8066 9066 1 mariadb安裝 新建主節點配置檔案 docker啟動時會把此檔案掛載到容器中 mkdir opt software mariadb m...