mysql 切換數據庫方案


業務場景

在SAAS模式下,不同的租戶需要切換數據庫,我們可以使用動態數據源,動態數據源有個問題,就是需要對每一個數據庫創建一個連接池,在初始化的時候初始化這些連接池,

如果多台應用服務器的情況,每一台應用服務器都需要創建連接池。

比如有10台應用服務器,每台創建10個鏈接池。每個連接池200個鏈接。

那么每台應用服務器 的鏈接數為 10*200 兩千個鏈接。

數據庫也會有很多的鏈接 。如果應用服務器更多的情況,那么鏈接管理這塊都會占用很多的服務器資源,如果服務器更多的情況,則可能報錯。

 

解決方案

我們在同一個數據庫上創建相同的數據庫,那么我們就不需要使用動態數據源,我們可以使用切換數據庫的方式來實現。

實現原理很簡單 use db1,use db2 這樣就很容易進行數據庫切換了。

切換方法

使用AOP攔截來實現:

創建一個切面:

public class DbSelectAspect {

    public void doSelectDb(JoinPoint point ){
        JdbcTemplate template=AppBeanUtil.getBean(JdbcTemplate.class);
        template.execute("use db1;");
    }
}

這里我代碼寫死了。

然后配置好AOP切面就可以了。

程序數據庫連接配置如下:

db.url=jdbc:mysql://192.168.1.88:4000/?useUnicode=true&characterEncoding=utf-8 

不需要指定數據庫名,根據切面進行數據庫切換就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM