日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

ABP 框架 数据库底层迁移 Mysql 集群

發(fā)布時(shí)間:2023/12/4 数据库 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABP 框架 数据库底层迁移 Mysql 集群 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

技術(shù)交流,請(qǐng)加QQ群:538327407

我的各種github 開源項(xiàng)目和代碼:https://github.com/linbin524

背景

?

筆者 目前架構(gòu)的IOT 項(xiàng)目是使用abp 框架作為后臺(tái),雖然abp的框架適用于中小型項(xiàng)目框架,但由于架構(gòu)優(yōu)美,筆者認(rèn)為還是可以經(jīng)過改造,作為大型項(xiàng)目中使用。但I(xiàn)OT 的這個(gè)項(xiàng)目目前剛上線不久,十幾天數(shù)據(jù)庫(kù)已經(jīng)有了上百GB,而且由于實(shí)施檢查設(shè)備狀態(tài),調(diào)用設(shè)備狀態(tài)維護(hù)表,審計(jì)日志壓力很大,單單審計(jì)日志一天的數(shù)據(jù)量就有幾十萬(wàn),目前在架構(gòu)上,筆者做了幾個(gè)優(yōu)化處理;

1、針對(duì)審計(jì)日志,筆者重寫了Abp 原有的?IAuditingStore,實(shí)現(xiàn)mongodb和redis 兩種轉(zhuǎn)移,并且針對(duì)審計(jì)日志內(nèi)容做了過濾,DisableAuditing特性標(biāo)記指定的類或方法不進(jìn)行記錄。

ps:abp 雖然有mongodb 的封裝,但它的出發(fā)點(diǎn)是和EF 同一個(gè)模式,左右系統(tǒng)唯一的ORM,如果要使用abp 的mongo 封裝,必須要替代EF,或者重寫ABP?UnitOfWorkOptions,否則直接用會(huì)出現(xiàn)工作單元轉(zhuǎn)換失敗的問題。

2、站點(diǎn)層面使用nginx 做了反向代理,進(jìn)行多站點(diǎn)服務(wù),通信模式由原來的隊(duì)列、改為服務(wù)化,EventBus等方式

3、數(shù)據(jù)庫(kù)底層 做了Percona XtraDB Cluster—MySQL 集群處理遷移。

?

思考評(píng)估:1、審計(jì)日志這樣處理,從源頭做了縮減,并且進(jìn)行Nosql拆分,有助于緩解數(shù)據(jù)庫(kù)壓力。

? ? ? ? ? ? ? ? ?2、中間層的處理是一般IOT 中間件各種腳手架的組合,成熟,也有經(jīng)過多年生產(chǎn)環(huán)境的檢驗(yàn)。

? ? ? ? ? ? ? ? ?3、數(shù)據(jù)庫(kù)底層 使用Percona XtraDB Cluster,是因?yàn)樗С旨?#xff0c;可以緩解數(shù)據(jù)庫(kù)請(qǐng)求壓力,又支持abp的事務(wù);

? ? ? ? ? ? ? ?但從真正大系統(tǒng)考慮,其實(shí)最理性的模式應(yīng)該是分片,結(jié)合SOA、或者微服務(wù)才能真正解決底層壓力,目前考量了Tidb(張善友 張隊(duì)推薦的)、oceanbase(淘寶 自有數(shù)據(jù)庫(kù),生產(chǎn)環(huán)境十年)、mycat中間件(聽說這個(gè)坑多)等,

? ? ? ? ? ? ? ?為了暫時(shí)不做大改造,只能先使用?Percona XtraDB Cluster,后續(xù)可能使用Orleans(Azure 云框架)、akka.net(大型的框架) 或者?Service Fabric(微服務(wù)框架)

? ? ?

二、Percona XtraDB Cluster 評(píng)估

?

?

優(yōu)點(diǎn)如下:

1.當(dāng)執(zhí)行一個(gè)查詢時(shí),在本地節(jié)點(diǎn)上執(zhí)行。因?yàn)樗袛?shù)據(jù)都在本地,無(wú)需遠(yuǎn)程訪問。

2.無(wú)需集中管理。可以在任何時(shí)間點(diǎn)失去任何節(jié)點(diǎn),但是集群將照常工作。

3.良好的讀負(fù)載擴(kuò)展,任意節(jié)點(diǎn)都可以查詢。

缺點(diǎn)如下:

1.加入新節(jié)點(diǎn),開銷大。需要復(fù)制完整的數(shù)據(jù)。

2.不能有效的解決寫縮放問題,所有的寫操作都將發(fā)生在所有節(jié)點(diǎn)上。

3.有多少個(gè)節(jié)點(diǎn)就有多少重復(fù)的數(shù)據(jù)。

?

Percona XtraDB Cluster是MySQL高可用性和可擴(kuò)展性的解決方案.

Percona XtraDB Cluster提供的特性有:

1.同步復(fù)制,事務(wù)要么在所有節(jié)點(diǎn)提交或不提交。

2.多主復(fù)制,可以在任意節(jié)點(diǎn)進(jìn)行寫操作。

3.在從服務(wù)器上并行應(yīng)用事件,真正意義上的并行復(fù)制。

4.節(jié)點(diǎn)自動(dòng)配置。

5.數(shù)據(jù)一致性,不再是異步復(fù)制。

Percona XtraDB Cluster完全兼容MySQL和Percona Server,表現(xiàn)在:

1.數(shù)據(jù)的兼容性

2.應(yīng)用程序的兼容性:無(wú)需更改應(yīng)用程序

?

1.集群是有節(jié)點(diǎn)組成的,推薦配置至少3個(gè)節(jié)點(diǎn),但是也可以運(yùn)行在2個(gè)節(jié)點(diǎn)上。

2.每個(gè)節(jié)點(diǎn)都是普通的mysql/percona服務(wù)器,可以將現(xiàn)有的數(shù)據(jù)庫(kù)服務(wù)器組成集群,反之,也可以將集群拆分成單獨(dú)的服務(wù)器。

3.每個(gè)節(jié)點(diǎn)都包含完整的數(shù)據(jù)副本。

?

三、部署流程

?

1、環(huán)境準(zhǔn)備

?

? 在騰訊云上開設(shè)三個(gè)測(cè)試服務(wù)器,系統(tǒng) 鏡像 CentOS 7.5 64

?

?

用遠(yuǎn)程工具連接三臺(tái)測(cè)試服務(wù)器,完成如下操作

?

(1)? 關(guān)閉firewalld防火墻

# setenforce 0# sed -i 's,^SELINUX=enforcing,SELINUX=disabled,g' /etc/selinux/config

?

2、主節(jié)點(diǎn)部署

?

(1)安裝PXC yum源

# yum install Percona-XtraDB-Cluster-56

?

最終下載下來的版本是Percona-XtraDB-Cluster-56-5.6.30

(3) 修改? ? /etc/my.cnf

[mysqld]datadir=/var/lib/mysql user=mysqlwsrep_provider=/usr/lib64/galera3/libgalera_smm.so #集群的ip wsrep_cluster_address=gcomm://節(jié)點(diǎn)ip1,節(jié)點(diǎn)ip2,節(jié)點(diǎn)ip3binlog_format=ROWdefault_storage_engine=InnoDBinnodb_autoinc_lock_mode=2#當(dāng)前主節(jié)點(diǎn)的ip wsrep_node_address=當(dāng)前節(jié)點(diǎn)ipwsrep_sst_method=xtrabackup-v2wsrep_cluster_name=my_centos_cluster #初始化一個(gè)mysql的用戶和密碼 wsrep_sst_auth="admin:123456"

?

(4)啟動(dòng)主節(jié)點(diǎn)

mysql -uroot -p

?

(6) 登錄客戶端查看數(shù)據(jù)庫(kù)的狀態(tài),在進(jìn)行權(quán)限配置允許ip訪問,默認(rèn)無(wú)法遠(yuǎn)程訪問,但是我們需要遠(yuǎn)程通過圖形化等界面查看,所以要做如下配置

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

(2) 安裝PXC

vim /etc/my.cnf

?

systemctl start mysql

(5)進(jìn)入mysql

登錄 (初始化狀態(tài),無(wú)密碼,遇到要輸密碼直接回車)

mysql> show status like 'wsrep%';CREATE USER 'admin'@'localhost' IDENTIFIED BY '123456';//如果這里報(bào)錯(cuò),看一下是否有 用戶存在了GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'admin'@'localhost'; FLUSH PRIVILEGES;


?

完成后可以用Navicat For mysql 連接看一下是否可以成功訪問

?(7)可以在mysql中執(zhí)行如下命令查看

systemctl stop mysql@bootstrap.service systemctl start mysql@bootstrap.service

其他節(jié)點(diǎn)也再次啟動(dòng)

<add name="Default" connectionString="server=主節(jié)點(diǎn)ip;port=3306;database=abpzero4_6db;uid=admin;password=123456;" providerName="MySql.Data.MySqlClient" />

(3) 執(zhí)行遷移?

?

?(4)查看對(duì)應(yīng)的三臺(tái)服務(wù)器集群都自動(dòng)同步該數(shù)據(jù)庫(kù)

?

?

(5)在Appservice 中建立測(cè)試服務(wù)進(jìn)行增刪改查、事務(wù)等測(cè)試

<pre style="margin-top: 0px;margin-bottom: 0px;padding: 0px;white-space: pre-wrap;overflow-wrap: break-word;font-family: " !important;"="" 12px="" courier="">using _consigneeRepository.DeleteAsync(predicate); ? ? ? ?} ? ?} }

在swagger ui中增刪改查都已經(jīng)正常,而且數(shù)據(jù)在三個(gè)數(shù)據(jù)庫(kù)中正常同步

?

?

針對(duì)事務(wù),做了人為異常處理,確認(rèn)會(huì)實(shí)現(xiàn)回滾(abp 自帶工作單元處理事務(wù))

?

?

?五、后記

?這一次只是做了簡(jiǎn)單的實(shí)驗(yàn)性測(cè)試,后續(xù)需要在加強(qiáng)深入檢測(cè),才可以用生產(chǎn)環(huán)境中。

原文地址: https://www.cnblogs.com/linbin524/p/10150300.html

.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com


總結(jié)

以上是生活随笔為你收集整理的ABP 框架 数据库底层迁移 Mysql 集群的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。