加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_梅州站长网 (https://www.0753zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2022-10-05 15:33:03 所属栏目:MsSql教程 来源:
导读:  背景

  笔者 目前架构的IOT 项目是使用abp 框架作为后台,虽然abp的框架适用于中小型项目框架,但由于架构优美,笔者认为还是可以经过改造,作为大型项目中使用。但IOT 的这个项目目前刚上线不久,十几天数
  背景
 
  笔者 目前架构的IOT 项目是使用abp 框架作为后台,虽然abp的框架适用于中小型项目框架,但由于架构优美,笔者认为还是可以经过改造,作为大型项目中使用。但IOT 的这个项目目前刚上线不久,十几天数据库已经有了上百GB,而且由于实施检查设备状态,调用设备状态维护表,审计日志压力很大,单单审计日志一天的数据量就有几十万,目前在架构上,笔者做了几个优化处理;
 
  1、针对审计日志,笔者重写了Abp 原有的IAuditingStore,实现mongodb和redis 两种转移,并且针对审计日志内容做了过滤,DisableAuditing特性标记指定的类或方法不进行记录。
 
  ps:abp 虽然有mongodb 的封装,但它的出发点是和EF 同一个模式,左右系统唯一的ORM,如果要使用abp 的mongo 封装,必须要替代EF,或者重写ABPUnitOfWorkOptions,否则直接用会出现工作单元转换失败的问题。
 
  2、站点层面使用nginx 做了反向代理,进行多站点服务,通信模式由原来的队列、改为服务化,EventBus等方式
 
  3、数据库底层 做了Percona XtraDB Cluster—MySQL 集群处理迁移。
 
  思考评估:1、审计日志这样处理,从源头做了缩减,并且进行Nosql拆分,有助于缓解数据库压力。
 
  2、中间层的处理是一般IOT 中间件各种脚手架的组合,成熟,也有经过多年生产环境的检验。
 
  3、数据库底层 使用Percona XtraDB Cluster,是因为它支持集群,可以缓解数据库请求压力,又支持abp的事务;
 
  但从真正大系统考虑,其实最理性的模式应该是分片,结合SOA、或者微服务才能真正解决底层压力,目前考量了Tidb(张善友 张队推荐的)、oceanbase(淘宝 自有数据库,生产环境十年)、mycat中间件(听说这个坑多)等,
 
  为了暂时不做大改造,只能先使用Percona XtraDB Cluster,后续可能使用Orleans(Azure 云框架)、akka.net(大型的框架) 或者Service Fabric(微服务框架)
 
  二、Percona XtraDB Cluster 评估
 
  优点如下:
 
  1.当执行一个查询时mssql数据库迁移,在本地节点上执行。因为所有数据都在本地,无需远程访问。
 
  2.无需集中管理。可以在任何时间点失去任何节点,但是集群将照常工作。
 
  3.良好的读负载扩展,任意节点都可以查询。
 
  缺点如下:
 
  1.加入新节点,开销大。需要复制完整的数据。
 
  2.不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上。
 
  3.有多少个节点就有多少重复的数据。
 
  Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案.
 
  Percona XtraDB Cluster提供的特性有:
 
  1.同步复制,事务要么在所有节点提交或不提交。
 
  2.多主复制,可以在任意节点进行写操作。
 
  3.在从服务器上并行应用事件,真正意义上的并行复制。
 
  4.节点自动配置。
 
  5.数据一致性,不再是异步复制。
 
  Percona XtraDB Cluster完全兼容MySQL和Percona Server,表现在:
 
  1.数据的兼容性
 
  2.应用程序的兼容性:无需更改应用程序
 
  1.集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上。
 
  2.每个节点都是普通的mysql/percona服务器,可以将现有的数据库服务器组成集群,反之,也可以将集群拆分成单独的服务器。
 
  mssql数据库迁移_mssql数据库迁移_mssql数据导入mysql
 
  3.每个节点都包含完整的数据副本。
 
  三、部署流程
 
  1、环境准备
 
  在腾讯云上开设三个测试服务器,系统 镜像 CentOS 7.5 64
 
  mssql数据导入mysql_mssql数据库迁移_mssql数据库迁移
 
  用远程工具连接三台测试服务器,完成如下操作
 
  (1) 关闭firewalld防火墙
 
  # setenforce 0# sed -i 's,^SELINUX=enforcing,SELINUX=disabled,g' /etc/selinux/config
  2、主节点部署
 
  (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=mysql
  wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
  #集群的ip
  wsrep_cluster_address=gcomm://节点ip1,节点ip2,节点ip3binlog_format=ROW
  default_storage_engine=InnoDB
  innodb_autoinc_lock_mode=2#当前主节点的ip
  wsrep_node_address=当前节点ip
  wsrep_sst_method=xtrabackup-v2
  wsrep_cluster_name=my_centos_cluster
  #初始化一个mysql的用户和密码
  wsrep_sst_auth="admin:123456"
  (4)启动主节点
 
  mysql -uroot -p
  (6) 登录客户端查看数据库的状态,在进行权限配置允许ip访问,默认无法远程访问,但是我们需要远程通过图形化等界面查看,所以要做如下配置
 
  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)进入mysql
 
  登录 (初始化状态,无密码,遇到要输密码直接回车)
 
  mysql> show status like 'wsrep%';
  CREATE USER 'admin'@'localhost' IDENTIFIED BY '123456';//如果这里报错,看一下是否有 用户存在了
  GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'admin'@'localhost';
  FLUSH PRIVILEGES;
  完成后可以用Navicat For mysql 连接看一下是否可以成功访问
 
  (7)可以在mysql中执行如下命令查看
 
  systemctl stop mysql@bootstrap.service
  systemctl start mysql@bootstrap.service
  其他节点也再次启动
 
   
  (3) 执行迁移
 
  mssql数据库迁移_mssql数据导入mysql_mssql数据库迁移
 
  (4)查看对应的三台服务器集群都自动同步该数据库
 
  mssql数据库迁移_mssql数据库迁移_mssql数据导入mysql
 
  (5)在Appservice 中建立测试服务进行增删改查、事务等测试
 
  using _consigneeRepository.DeleteAsync(predicate); } }}
 
  在swagger ui中增删改查都已经正常,而且数据在三个数据库中正常同步
 
  针对事务,做了人为异常处理,确认会实现回滚(abp 自带工作单元处理事务)
 
  五、后记
 
  这一次只是做了简单的实验性测试,后续需要在加强深入检测,才可以用生产环境中。
 

(编辑:云计算网_梅州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!