基于DRBD+corosync对MariaDB做高可用集群

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

一、DRBD简介

   DRBD的全称为:Distributed ReplicatedBlock Device(DRBD)分布式块设备复制,DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。你可以把它看作是一种网络RAID。它允许用户在远程机器上建立一个本地块设备的实时镜像。

二、DRBD是如何工作的呢?

   (DRBD Primary)负责接收数据,把数据写到本地磁盘并发送给另一台主机(DRBD Secondary)。另一个主机再将数据存到自己的磁盘中。目前,DRBD每次只允许对一个节点进行读写访问,但这对于通常的故障切换高可用集群来说已经足够用了。有可能以后的版本支持两个节点进行读写存取。

三、DRBD与HA的关系

   一个DRBD系统由两个节点构成,与HA集群类似,也有主节点和备用节点之分,在带有主要设备的节点上,应用程序和操作系统可以运行和访问DRBD设备(/dev/drbd*)。在主节点写入的数据通过DRBD设备存储到主节点的磁盘设备中,同时,这个数据也会自动发送到备用节点对应的DRBD设备,最终写入备用节点的磁盘设备上,在备用节点上,DRBD只是将数据从DRBD设备写入到备用节点的磁盘中。现在大部分的高可用性集群都会使用共享存储,而DRBD也可以作为一个共享存储设备,使用DRBD不需要太多的硬件的投资。因为它在TCP/IP网络中运行,所以,利用DRBD作为共享存储设备,要节约很多成本,因为价格要比专用的存储网络便宜很多;其性能与稳定性方面也不错

四、DRBD复制模式

   协议A

   异步复制协议。一旦本地磁盘写入已经完成,数据包已在发送队列中,则写被认为是完成的。在一个节点发生故障时,可能发生数据丢失,因为被写入到远程节点上的数据可能仍在发送队列。尽管,在故障转移节点上的数据是一致的,但没有及时更新。这通常是用于地理上分开的节点

   协议B

   内存同步(半同步)复制协议。一旦本地磁盘写入已完成且复制数据包达到了对等节点则认为写在主节点上被认为是完成的。数据丢失可能发生在参加的两个节点同时故障的情况下,因为在传输中的数据可能不会被提交到磁盘

   协议C

   同步复制协议。只有在本地和远程节点的磁盘已经确认了写操作完成,写才被认为完成。没有任何数据丢失,所以这是一个群集节点的流行模式,但I / O吞吐量依赖于网络带宽,一般使用协议C,但选择C协议将影响流量,从而影响网络时延。为了数据可靠性,我们在生产环境使用时须慎重选项使用哪一种协议

五、 DRBD工作原理图

   DRBD是linux的内核的存储层中的一个分布式存储系统,可用使用DRBD在两台Linux服务器之间共享块设备,共享文件系统和数据。类似于一个网络RAID-1的功能,如图所示:

wKioL1NVKYDRvKWmAABNdBRd5XE834.gif

六、安装配置

   1.下载

   drbd共有两部分组成:内核模块和用户空间的管理工具。其中drbd内核模块代码已经整合进Linux内核2.6.33以后的版本中,因此,如果您的内核版本高于此版本的话,你只需要安装管理工具即可;否则,您需要同时安装内核模块和管理工具两个软件包,并且此两者的版本号一定要保持对应。

   目前适用CentOS 5的drbd版本主要有8.0、8.2、8.3三个版本,其对应的rpm包的名字分别为drbd, drbd82和drbd83,对应的内核模块的名字分别为kmod-drbd, kmod-drbd82和kmod-drbd83。而适用于CentOS 6的版本为8.4,其对应的rpm包为drbd和drbd-kmdl,但在实际选用时,要切记两点:drbd和drbd-kmdl的版本要对应;另一个是drbd-kmdl的版本要与当前系统的内容版本相对应。各版本的功能和配置等略有差异;我们实验所用的平台为x86_64且系统为CentOS 6.4,因此需要同时安装内核模块和管理工具。我们这里选用最新的8.4的版本(drbd-8.4.3-33.el6.x86_64.rpm和drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm),下载地址为http://pkgs.org/search/?query=drbd&type=smart,请按照需要下载。

    2.准备工作

   两个节点的节点的名称和对应的ip地址解析服务应该能正常工作,本处不在给出操作步骤,可以参考本人的相关博文http://wangfeng7399.blog.51cto.com/3518031/1397530

   3.安装,由于drbd包没有依赖关系,可以直接使用rpm安装

1
2
[root@node1 ~]# rpm -ivh drbd- 8.4 . 3 - 33 .el6.x86_64.rpm drbd-kmdl- 2.6 . 32 - 431 .el6- 8.4 . 3 - 33 .el6.x86_64.rpm
[root@node2 ~]# rpm -ivh drbd- 8.4 . 3 - 33 .el6.x86_64.rpm drbd-kmdl- 2.6 . 32 - 431 .el6- 8.4 . 3 - 33 .el6.x86_64.rpm

   4.配置说明

   drbd的主配置文件为/etc/drbd.conf;为了管理的便捷性,目前通常会将些配置文件分成多个部分,且都保存至/etc/drbd.d目录中,主配置文件中仅使用"include"指令将这些配置文件片断整合起来。通常,/etc/drbd.d目录中的配置文件为global_common.conf和所有以.res结尾的文件。其中global_common.conf中主要定义global段和common段,而每一个.res的文件用于定义一个资源。

   在配置文件中,global段仅能出现一次,且如果所有的配置信息都保存至同一个配置文件中而不分开为多个文件的话,global段必须位于配置文件的最开始处。目前global段中可以定义的参数仅有minor-count, dialog-refresh, disable-ip-verification和usage-count。

   common段则用于定义被每一个资源默认继承的参数,可以在资源定义中使用的参数都可以在common段中定义。实际应用中,common段并非必须,但建议将多个资源共享的参数定义为common段中的参数以降低配置文件的复杂度。

   resource段则用于定义drbd资源,每个资源通常定义在一个单独的位于/etc/drbd.d目录中的以.res结尾的文件中。资源在定义时必须为其命名,名字可以由非空白的ASCII字符组成。每一个资源段的定义中至少要包含两个host子段,以定义此资源关联至的节点,其它参数均可以从common段或drbd的默认中进行继承而无须定义。

   5.配置文件/etc/drbd.d/global_common.conf 详解在i

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
global {
         usage-count no;  //drbd官网用来统计drbd的使用数据的
         # minor-count dialog-refresh disable-ip-verification
}
common {   //提供共享配置
         handlers {   //处理器,在特定的环境下执行的命令
                 # These are EXAMPLE handlers only.
                 # They may have severe implications,
                 # like hard resetting the node under certain circumstances.
                 # Be careful when chosing your poison.
                  pri-on-incon-degr  "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f" //在主节点降级的情况下要执行的命令
                  pri-lost-after-sb  "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f" //在备节点接替主节点前,对主节点的操作
                  local-io-error  "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f" ; 当本地发送io错误时的操作
                 # fence-peer  "/usr/lib/drbd/crm-fence-peer.sh" ;
                 # split-brain  "/usr/lib/drbd/notify-split-brain.sh root" ;
                 # out-of-sync  "/usr/lib/drbd/notify-out-of-sync.sh root" ;
                 # before-resync-target  "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k" ;
                 # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
# after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
         }
         startup {  //可以不配置,使用默认即可
                 # wfc-timeout 等待对端上线的超时时间
                 # degr-wfc-timeout 降级的超时时间
                 #outdated-wfc-timeout 过期的等待超时时间
                 #wait-after-sb 脑裂的等待时间
         }
         options {  //可以不配置 使用默认即可
                 # cpu-mask on-no-data-accessible
         }
         disk {
                 # size max-bio-bvecs on-io-error fencing disk-barrier disk-flushes
                 # disk-drain md-flushes resync-rate resync-after al-extents
                 # c-plan-ahead c-delay-target c-fill-target c-max-rate
                 # c-min-rate disk-timeout
                 on-io-error 当发生io错误是,应该要做的操作,有三个选项,pass_on:降级当前节点;call-local-io-error:执行本机的io-error操作;detach:将磁盘拆掉
         }
         net {
             protocol C 协议版本
             cram-hmac-alg  "sha1"
             shared-secret  "kjasdbiu2178uwhbj"       
                 # protocol timeout max-epoch-size max-buffers unplug-watermark
                 # connect- int  ping- int  sndbuf-size rcvbuf-size ko-count
                 # allow-two-primaries cram-hmac-alg shared-secret after-sb-0pri
                 # after-sb-1pri after-sb-2pri always-asbp rr-conflict
                 # ping-timeout data-integrity-alg tcp-cork on-congestion
       syncer{
          rate 1000M 同步的速率
       }
}

   6.准备磁盘设备,双方节点都需要准备,最好是能等同大小,编号最好也能一样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[root@node2 ~]# fdisk /dev/sda
WARNING: DOS-compatible mode  is  deprecated. It's strongly recommended to
          switch  off the mode (command  'c' ) and change display units to
          sectors (command  'u' ).
Command (m  for  help): n
Command action
    e   extended
    p   primary partition ( 1 - 4 )
p
Partition number ( 1 - 4 ):  3
First cylinder ( 7859 - 15665 default  7859 ):
Using  default  value  7859
Last cylinder, +cylinders or +size{K,M,G} ( 7859 - 15665 default  15665 ): +10G
Command (m  for  help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed  with  error  16 : Device or resource busy.
The kernel still uses the old table. The  new  table will be used at
the next reboot or after you run partprobe( 8 ) or kpartx( 8 )
Syncing disks.
[root@node2 ~]# kpartx -af /dev/sda
device-mapper: reload ioctl on sda1 failed: Invalid argument
create/reload failed on sda1
device-mapper: reload ioctl on sda2 failed: Invalid argument
create/reload failed on sda2
device-mapper: reload ioctl on sda3 failed: Invalid argument
create/reload failed on sda3
[root@node2 ~]# partx -a /dev/sda
BLKPG: Device or resource busy
error adding partition  1
BLKPG: Device or resource busy
error adding partition  2
BLKPG: Device or resource busy
error adding partition  3

   7.准备资源配置文件,如drbd.re

1
2
3
4
5
6
7
8
9
10
11
12
13
14
resource drbd {
         on node1.wangfeng7399.com { 用on来标志节点名称
         device  /dev/drbd0;    指定drbd的编号
         disk    /dev/sda3;     磁盘分区编号
         address  192.168 . 1.200 : 7789 ;    监听的套接字
         meta-disk  internal ; 对于原始数据的处理,此处为保持在本磁盘
         }
         on node2.wangfeng7399.com {
         device  /dev/drbd0;
         disk    /dev/sda3;
         address  192.168 . 1.201 : 7789
         meta-disk  internal
         }
}

   8.将数据复制到节点

1
[root@node1 drbd.d]# scp * node2:/etc/drbd.d/

七、初始化测试

   1.创建资源    

1
2
3
4
5
6
7
[root@node1 drbd.d]# drbdadm create-md drbd
Writing meta data...
initializing activity log
NOT initializing bitmap
lk_bdev_save(/ var /lib/drbd/drbd-minor- 0 .lkbd) failed: No such file or directory
New drbd meta data block successfully created.  //创建成功
lk_bdev_save(/ var /lib/drbd/drbd-minor- 0 .lkbd) failed: No such file or directory

   2.启动服务  

1
2
3
4
5
6
7
8
9
[root@node2 ~]# service drbd start
Starting DRBD resources: [
      create res: drbd
    prepare disk: drbd
     adjust disk: drbd
      adjust net: drbd
]
.
两边要同时启动

   3.查看启动状态

1
2
3
4
5
6
7
8
9
[root@node2 ~]# cat /proc/drbd
version:  8.4 . 3  (api: 1 /proto: 86 - 101 )
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@,  2013 - 11 - 29  12 : 28 : 00
  0 : cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
     ns: 0  nr: 0  dw: 0  dr: 0  al: 0  bm: 0  lo: 0  pe: 0  ua: 0  ap: 0  ep: 1  wo:f oos: 10489084
也可以通过drbd-overview命令来查看
[root@node2 ~]# drbd-overview
   0 :drbd/ 0   Connected Secondary/Secondary Inconsistent/Inconsistent C r-----
从上面的信息中可以看出此时两个节点均处于Secondary状态。

   4.提升节点

1
2
3
4
[root@node1 drbd.d]# drbdadm primary --force drbd
[root@node1 drbd.d]# drbd-overview
   0 :drbd/ 0   SyncSource Primary/Secondary UpToDate/Inconsistent C r-----
     [>....................] sync'ed:   4.8 % ( 9760 / 10240 )M

   可以看到正在同步数据,等数据同步完再查看

1
2
3
4
5
[root@node1 ~]# cat /proc/drbd
version:  8.4 . 3  (api: 1 /proto: 86 - 101 )
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@,  2013 - 11 - 29  12 : 28 : 00
  0 : cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
     ns: 10490880  nr: 0  dw: 0  dr: 10496952  al: 0  bm: 641  lo: 0  pe: 0  ua: 0  ap: 0  ep: 1  wo:f oos: 0

   5.创建文件系统

   文件系统的挂载只能在Primary节点进行,因此,也只有在设置了主节点后才能对drbd设备进行格式化:

1
2
3
[root@node1 ~]# mke2fs -t ext4 /dev/drbd0
[root@node1 ~]# mkdir /drbd
[root@node1 ~]# mount /dev/drbd0 /drbd/

   6.切换Primary和Secondary节点

   对主Primary/Secondary模型的drbd服务来讲,在某个时刻只能有一个节点为Primary,因此,要切换两个节点的角色,只能在先将原有的Primary节点设置为Secondary后,才能原来的Secondary节点设置为Primary:  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
主节点
[root@node1 ~]# cp /etc/fstab /drbd/
[root@node1 ~]# umount /drbd/
[root@node1 ~]# drbdadm secondary drbd
备节点
[root@node2 ~]# drbdadm primary drbd
[root@node2 ~]# mkdir /drbd
[root@node2 ~]# mount /dev/drbd0 /drbd/
[root@node2 ~]# ll /drbd/
total  20
-rw-r--r--  1  root root    921  Apr  19   2014  fstab
drwx------  2  root root  16384  Apr  19   2014  lost+found
可以看到我们的数据在节点 2 上可以看到了
[root@node2 ~]# cat /proc/drbd
version:  8.4 . 3  (api: 1 /proto: 86 - 101 )
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@,  2013 - 11 - 29  12 : 28 : 00
  0 : cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
     ns: 24  nr: 10788112  dw: 10788136  dr: 1029  al: 2  bm: 642  lo: 0  pe: 0  ua: 0  ap: 0  ep: 1  wo:f oos: 0
可以看到现在node2为主节点

八、corosync的安装与配置

   1.关于corosync的安装,请移步至本人的相关博客,本处就不再做累赘,http://wangfeng7399.blog.51cto.com/3518031/1399862

   2.crm的安装

1
2
[root@node1 ~]# yum install -y crmsh- 1.2 . 6 - 4 .el6.x86_64.rpm pssh- 2.3 . 1 - 2 .el6.x86_64.rpm
[root@node2 ~]# yum install -y crmsh- 1.2 . 6 - 4 .el6.x86_64.rpm pssh- 2.3 . 1 - 2 .el6.x86_64.rpm

   3.定义drbd资源

1
2
3
4
5
[root@node1 ~]# crm
crm(live)# configure
crm(live)configure# primitive mariadbdrbd ocf:linbit:drbd params drbd_resource=drbd op monitor role=Master interval=10s timeout=20s op monitor role=Slave interval=20s timeout=20s op start timeout=240s op stop timeout=120s
定于drbd的主从资源
crm(live)configure# ms ms_mariadbdrbd mariadbdrbd meta master-max= 1  master-node-max= 1  clone-max= 2  clone-node-max= 1  notify= true

   4.定义文件系统资源和约束关系

1
2
3
crm(live)configure# primitive mariadbstore ocf:heartbeat:Filesystem params device= "/dev/drbd0"  directory= "/mydata"  fstype= "ext4"  op monitor interval=40s timeout=40s op start timeout=60s op stop timeout=60s
crm(live)configure# colocation mariadbstore_with_ms_mariadbdrbd inf: mariadbstore ms_mariadbdrbd:Master
crm(live)configure# order ms_mariadbrbd_before_mariadbstore mandatory: ms_mariadbdrbd:promote mariadbstore:start

   5.增加vip和MariaDB的资源及约束关系

1
2
3
4
5
6
7
8
9
10
11
crm(live)configure# primitive madbvip ocf:heartbeat:IPaddr2 params ip= "192.168.1.240"  op monitor interval=20s timeout=20s on-fail=restart
crm(live)configure# primitive maserver lsb:mysqld op monitor interval=20s timeout=20s on-fail=restart
crm(live)configure# verify
定义约束关系
crm(live)configure# colocation maserver_with_mariadbstore inf: maserver mariadbstore
crm(live)configure# order mariadbstore_before_maserver mandatory: mariadbstore:start maserver:start
crm(live)configure# verify
crm(live)configure# colocation madbvip_with_maserver inf: madbvip maserver
crm(live)configure# order madbvip_before_masever mandatory: madbvip maserver
crm(live)configure# verify
crm(live)configure# commit

   6.查看所有定义的资源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
node node1.wangfeng7399.com
node node2.wangfeng7399.com
primitive madbvip ocf:heartbeat:IPaddr2 \
         params ip= "192.168.1.240"  \
         op monitor interval= "20s"  timeout= "20s"  on-fail= "restart"
primitive mariadbdrbd ocf:linbit:drbd \
         params drbd_resource= "drbd"  \
         op monitor role= "Master"  interval= "30s"  timeout= "20s"  \
         op monitor role= "Slave"  interval= "60s"  timeout= "20s"  \
         op start timeout= "240s"  interval= "0"  \
         op stop interval= "0s"  timeout= "100s"
primitive mariadbstore ocf:heartbeat:Filesystem \
         params device= "/dev/drbd0"  directory= "/mydata"  fstype= "ext4"  \
         op monitor interval= "40s"  timeout= "40s"  \
         op start timeout= "60s"  interval= "0"  \
         op stop timeout= "60s"  interval= "0"
primitive maserver lsb:mysqld \
         op monitor interval= "20s"  timeout= "20s"  on-fail= "restart"
ms ms_mariadbdrbd mariadbdrbd \
         meta master-max= "1"  master-node-max= "1"  clone-max= "2"  clone-node-max= "1"  notify= "true"
colocation madbvip_with_maserver inf: madbvip maserver
colocation mariadbstore_with_ms_mariadbdrbd inf: mariadbstore ms_mariadbdrbd:Master
colocation maserver_with_mariadbstore inf: maserver mariadbstore
order madbvip_before_masever inf: madbvip maserver
order mariadbstore_before_maserver inf: mariadbstore:start maserver:start
order ms_mariadbrbd_before_mairadbstore inf: ms_mariadbdrbd:promote mariadbstore:start
property $id= "cib-bootstrap-options"  \
         dc-version= "1.1.10-14.el6_5.2-368c726"  \
         cluster-infrastructure= "classic openais (with plugin)"  \
         expected-quorum-votes= "2"  \
         stonith-enabled= "false"  \
         no-quorum-policy= "ignore"

九、测试

   1.查看运行状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@node1 ~]# crm status
Last updated: Wed Apr  23  16 : 24 : 11  2014
Last change: Wed Apr  23  16 : 21 : 50  2014  via cibadmin on node1.wangfeng7399.com
Stack: classic openais ( with  plugin)
Current DC: node1.wangfeng7399.com - partition  with  quorum
Version:  1.1 . 10 - 14 .el6_5. 2 -368c726
2  Nodes configured,  2  expected votes
5  Resources configured
Online: [ node1.wangfeng7399.com node2.wangfeng7399.com ]
  Master/Slave Set: ms_mariadbdrbd [mariadbdrbd]
      Masters: [ node1.wangfeng7399.com ]
      Slaves: [ node2.wangfeng7399.com ]
  mariadbstore   (ocf::heartbeat:Filesystem):    Started node1.wangfeng7399.com
  madbvip    (ocf::heartbeat:IPaddr2):   Started node1.wangfeng7399.com
  maserver   (lsb:mysqld):   Started node1.wangfeng7399.com

   2.手动切换节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@node1 ~]# crm node standby node1.wangfeng7399.com
[root@node1 ~]# crm status
Last updated: Wed Apr  23  16 : 26 : 05  2014
Last change: Wed Apr  23  16 : 25 : 34  2014  via crm_attribute on node1.wangfeng7399.com
Stack: classic openais ( with  plugin)
Current DC: node1.wangfeng7399.com - partition  with  quorum
Version:  1.1 . 10 - 14 .el6_5. 2 -368c726
2  Nodes configured,  2  expected votes
5  Resources configured
Node node1.wangfeng7399.com: standby
Online: [ node2.wangfeng7399.com ]
  Master/Slave Set: ms_mariadbdrbd [mariadbdrbd]
      Masters: [ node2.wangfeng7399.com ]
      Stopped: [ node1.wangfeng7399.com ]
  mariadbstore   (ocf::heartbeat:Filesystem):    Started node2.wangfeng7399.com
  madbvip    (ocf::heartbeat:IPaddr2):   Started node2.wangfeng7399.com
  maserver   (lsb:mysqld):   Started node2.wangfeng7399.com

   可以看到,我们的所有资源都已经运行在了node2上



本文转自wangfeng7399 51CTO博客,原文链接:http://blog.51cto.com/wangfeng7399/1399998,如需转载请自行联系原作者

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
44 2
|
9月前
|
关系型数据库 MySQL Linux
小白带你学习linux的mariadb高可用MAH
小白带你学习linux的mariadb高可用MAH
79 0
|
关系型数据库 MySQL Linux
如何在CentOS 7服务器上配置使用MariaDB的Galera集群:
如何在CentOS 7服务器上配置使用MariaDB的Galera集群:
|
关系型数据库 MySQL Linux
MySQL集群升级从5.5版本升级到10.*以上版本(CentOS7.5 MariaDB集群升级)
MySQL集群升级从5.5版本升级到10.*以上版本(CentOS7.5 MariaDB集群升级)
288 0
MySQL集群升级从5.5版本升级到10.*以上版本(CentOS7.5 MariaDB集群升级)
|
运维 安全 数据库
【运维】MariaDB_galera_cluster集群
Galera Cluster 基于多主架构
3697 0
【运维】MariaDB_galera_cluster集群
|
关系型数据库 MySQL Linux
|
关系型数据库 数据安全/隐私保护
|
关系型数据库 数据库 MySQL

推荐镜像

更多