文件共享存储&&主备实时热备实现方案

本文涉及的产品
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 1个月
简介:

一、方案图

wKioL1U02Y7zr7K7AAD0H6FN4Ns882.jpg

该方案可以解决nfs服务器的单点故障问题,也可以解决数据的备份难题,可以作为公司从nfs文件系统-->分布式存储系统的过渡解决方案。由于我公司从初创到至今,用户的产生数据量与日俱增,在探讨了现有nfs文件系统不能解决现有问题以及现阶段部署分布式存储系统的大量财力、人力的基础上,提出这么一个可以过度的方案。使用LVM磁盘管理技术可以很方便的在每个主机上进行磁盘的扩容。辅助监控监本智能监测服务状态,节省了运维成本!

二、配置步骤

1、LVM管理(主机、备机)

   创建分区:fdisk /dev/xvde

             p 查看分区表

             n 创建分区

             t 修改分区类型 8e LVM

             w 保存分区表并退出(写入分区表)

   使分区生效: partprobe

   创建pv:pvcreate /dev/xvde1    #创建物理卷

           pvdisplay  #查看已经产生的pv

   创建VG:vgcreate VGdata /dev/xvde1  #创建卷组,名称为VGdata

           vgdisplay  #查看卷组表

    

   创建LV:lvcreate -L 20G -n LVdata VGdata #-L lv的大小 -n 指定lv的名称

           lvdisplay #显示LV信息

   格式化LV并挂载文件系统

           mkfs.ext4 /dev/VGdata/LVdata

           mount /dev/VGdata/LVdata /data


   管理--> 增加lv大小

      首先创建一块新的分区并格式化分区

          mkfs.ext4 /dev/xvde2

      创建pv,扩容VG,LV

         vgextend VGdata /dev/xvde2 #扩容VG

         lvextend -L 50G /dev/VGdata/LVdata #扩容LV到50G   +50G是对LV直接增加50G

      扩容文件系统:

         resize2fs /dev/VGdata/LVdata  #执行该命令重设大小,对于当前正在使用的LVdata有效


   查看扩容情况:df -h

============================================================

   如果希望创建一个使用全部卷组的逻辑卷,则需要首先察看该卷组的PE数,然后在创

建逻辑卷时指定: 

 # vgdisplay web_document| grep “Total PE”

 Total PE 45230

 # lvcreate -l 45230 web_document -n www1

 一般建议最好将文件系统卸载,调整大小,然后再加载:

 # umount /dev/web_document/www1

 # resize_reiserfs /dev/web_document/www1

 # mount -treiserfs /dev/web_document/www1 /data/wwwroot      

==============================================================

2.inotify+rsync安装与配置(主机、备机)

  安装rsync

      cd /usr/local/usr/

      wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz

      tar xf rsync-3.1.1.tar.gz

      cd rsync-3.1.1

      ./configure --prefix=/usr/local/rsync && make && make install

  建立密码认证文件:

      echo "yzkj1234" >/usr/local/rsync/rsync.passwd

      chmod 600 /usr/local/rsync/rsync.passwd

  安装inotify

      cd /usr/local/src/

      wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 

      tar xf inotify-tools-3.14.tar.gz 

      cd inotify-tools-3.14

      ./configure --prefix=/usr/local/inotify && make && make install


===========================================

使用脚本进行后台运行监测文件的状态(主机)

(sh /opt/shell/rsync.sh &)


#!/bin/bash  

host=10.124.x.x  # 备机IP地址 

src=/data/       # 主机数据源路径       

des=DataBack         # 备机/usr/local/rsync/rsyncd.conf文件设置的认证模块名

user=cloud       # 与备机进行数据传输的认证用户,备机/usr/local/rsync/rsyncd.passwd 文件记录验证用户名:密码

#yestoday=`date -d"1 day ago" +"%F"` #定义昨天的日期

#todayTime=`date +%H%M%S` #120255 时分秒

#使用inotifywait命令对源数据路径文件进行列表遍历,并定义了日志的输入格式: 17/04/15 16:32 /data/10ATTRIB was rsynced.

/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read files  

do  

#使用rsync命令对新产生的数据进行同步,其中--delete将在传输数据的过程中将主机中不存在而备机上存在的数据进行删除,如果需要保持备机的数据不被删除,则将--delete参数去掉即可

    /usr/local/rsync/bin/rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsyncd.passwd $src $user@$host::$des  

    echo "${files} was rsynced." >>/usr/local/rsync/logs/rsync.log 2>&1  

#使用crontab计划任务实现日志的轮转  crontab -e 0 0 * * * mv /usr/local/rsync/logs/rsync.log /usr/local/rsync/logs/rsync-$yestoday.log

#    if [[ ${todayTime} -ge 000000 ]]

#    then

#        mv /usr/local/rsync/logs/rsync.log /usr/local/rsync/logs/rsync-$yestoday.log

#        touch /usr/local/rsync/logs/rsync.log

#    fi

done 


配置rsyncd.conf文件并启动rsyncd服务(备机)

vim /usr/local/rsync/rsyncd.conf

uid = root

gid = root

use chroot = no

max connections = 10

pid file = /usr/local/rsync/rsyncd.pid

lock file = /usr/local/rsync/rsync.lock

log file = /usr/local/rsync/logs/rsyncd.log

[DataBack]                      

path=/data/

comment = update          

ignore errors              

read only = no

write only = no             

list = flase                 

hosts allow = 10.124.X.X #主机IP

auth users = cloud

uid = root

gid = root


rsync服务启动脚本vim  /etc/init.d/rsyncd   chmod +x /etc/init.d/rsyncd

=======================================

#!/bin/bash

#

# rsyncd      This shell script takes care of starting and stopping

#             standalone rsync.

#

# chkconfig: - 99 50

# description: rsync is a file transport daemon

# processname: rsync

# config: /usr/local/rsync/rsyncd.conf

  

# Source function library

. /etc/rc.d/init.d/functions

  

RETVAL=0

rsync="/usr/local/rsync/bin/rsync"

prog="rsync"

CFILE="/usr/local/rsync/rsyncd.conf"

 

start() {

        # Start daemons.

        [ -x $rsync ] || \

            { echo "FATAL: No such programme";exit 4; }

        [ -f $CFILE ] || \

            { echo "FATAL: config file does not exist";exit 6; }

        echo -n $"Starting $prog: "

        daemon $rsync --daemon --config=$CFILE

        RETVAL=$?

        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog

        echo

        return $RETVAL

}

  

stop() {

        # Stop daemons.

        echo -n $"Stopping $prog: "

        killproc $prog -QUIT

        RETVAL=$?

        echo

        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog

        return $RETVAL

}

  

# call the function we defined

case "$1" in

  start)

        start

        ;;

  stop)

        stop

        ;;

  restart|reload)

        stop

        start

        RETVAL=$?

        ;;

  status)

        status $prog

        RETVAL=$?

        ;;

  *)

        echo $"Usage: $0 {start|stop|restart|reload|status}"

        exit 2

esac

  

exit $RETVAL

==============================================

使用脚本进行后台运行监测文件的状态(备机)

sh /opt/shell/rsync.sh &


#!/bin/bash  

host=10.124.x.x  # 主机IP地址 

src=/data/       # 备机数据源路径       

des=DataMain         # 主机/usr/local/rsync/rsyncd.conf文件设置的认证模块名

user=cloud       # 与主机进行数据传输的认证用户,备机/usr/local/rsync/rsyncd.passwd 文件记录验证用户名:密码

#yestoday=`date -d"1 day ago" +"%F"` #定义昨天的日期

#todayTime=`date +%H%M%S`

#使用inotifywait命令对源数据路径文件进行列表遍历,并定义了日志的输入格式: 17/04/15 16:32 /data/10ATTRIB was rsynced.

/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read files  

do  

#使用rsync命令对新产生的数据进行同步,其中--delete将在传输数据的过程中将主机中不存在而备机上存在的数据进行删除,如果需要保持备机的数据不被删除,则将--delete参数去掉即可

    /usr/local/rsync/bin/rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsyncd.passwd $src $user@$host::$des  

    echo "${files} was rsynced." >>/usr/local/rsync/logs/rsync.log 2>&1  

done 


配置rsyncd.conf文件并启动rsyncd服务(主机)

vim /usr/local/rsync/rsyncd.conf  启动服务:/usr/local/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf

uid = root

gid = root

use chroot = no

max connections = 10

pid file = /usr/local/rsync/rsyncd.pid

lock file = /usr/local/rsync/rsync.lock

log file = /usr/local/rsync/logs/rsyncd.log

[DataMain]                      

path=/data/

comment = update          

ignore errors              

read only = no

write only = no             

list = flase                 

hosts allow = 10.124.X.X #备机IP

auth users = cloud

uid = root

gid = root


service rsyncd start

==================================================================

3.nginx安装与配置(主机、备机)


user  nginx;

#group nginx;

worker_processes  1;

error_log  logs/error.log;

pid        logs/nginx.pid;

events {

    worker_connections  5000;

    use epoll;

}


http {

    include       mime.types;

    default_type  application/octet-stream;

    #access_log  logs/access.log  main;

    server_names_hash_bucket_size 64;

    

    fastcgi_intercept_errors on;

    

    server_tokens off;

    tcp_nodelay on;

    sendfile        on;

    tcp_nopush     on;


    #keepalive_timeout  0;

    keepalive_timeout  65;


    #gzip  on;


    server {

        listen       80;#端口 

        server_name  localhost;#服务名

      root /data/; #显示的根索引目录

      autoindex on;#开启索引功能  off关闭索引功能,即客户端不能浏览服务器端的文件列表

      autoindex_exact_size off;#关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)

      autoindex_localtime on;   # 显示本机时间而非 GMT 时间

        charset utf-8;

        #access_log  logs/host.access.log  main;

        error_page  404  = http://www.apicloud.com/404.html;

        # redirect server error pages to the static page /50x.html

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root  /data/html;

        }

    }

}


=================================================================

使用nagios监控lvs状态的脚本(主机)

/usr/local/nagios/libexec/check_lvs_rsync.sh

#!/bin/bash -x

##################################

#Author:qingbo.song              #

#Date:2015-4-17                  #

#E-mail:qingbo.song@apicloud.com #

#Comment:Lvs_status              #

##################################


#0 正常

#1 告警

#2 紧急

#3 未知

keepalived_process=`ps aux|grep [k]eepalived|grep -v 'check_lvs_rsync.sh'|wc -l`

processNum=`ps -ef|grep [r]sync.sh|grep -v 'check_rsync_process.sh'|wc -l`

#sed -n '9p' file  获取某一行的数据

ip=`ip addr|sed -n '9p'|awk '{print $2}'` #获取vip地址

file=/opt/shell/rsync.sh

if [ "x${keepalived_process}" = "x3" ] #判断keepalived进程数是否正常

then

    if [ "${ip}" = "10.124.x.x/32" ] #keepalived进程数正常,判断VIP是否正常

    then

        if [ ${processNum} = 2 ] #keepalived进程数正常,VIP正常,判断rsync实时备份进程数是否正常

        then

            echo "Keepalived is OK!数据传输到主机!Rsync实时备份脚本运行正常!" 

            exit 0 #keepalived进程数正常,VIP正常,rsync实时备份进程数正常,返回信号0--正常

        else

            if [ ! -f "$file" ] #keepalived进程数正常,VIP正常,rsync实时备份进程数不正常,判断rsync.sh脚本是否存在

            then

                echo "Keepalived is OK!数据传输到主机!Rsync实时备份进程&&rsync.sh脚本不存在,请联系管理员!"

                exit 2 #keepalived进程数正常,VIP正常,rsync实时备份进程数不正常,判断rsync.sh脚本不存在,返回信号量2请管理员处理

            else

                (/usr/bin/sh /opt/shell/rsync.sh &)  #执行rsync.sh脚本并后台运行

                if [ ${processNum} = 2 ] #keepalived进程数正常,VIP正常,rsync实时备份进程数不正常,判断rsync.sh脚本存在,重新执行之后再次判断rsync进程数

                then

                    echo "Keepalived is OK!数据传输到主机!Rsync实时备份进程已重新启动!"

                    exit 0  #rsync.sh正常执行,返回信号量0--正常

                else

                    echo "Keepalived is OK!数据传输到主机!Rsync实时备份进程未能重新启动,请联系管理员!"

                    exit 2 #rsync.sh不能正常执行,返回信号量2--紧急,请求管理员处理

                fi

            fi

        fi

    else

        if [ ${processNum} = 2 ] #keepalived进程数正常,VIP不正常,判断rsync实时备份进程数是否正常

        then

            /usr/bin/pkill rsync.sh #杀死rsync.sh进程,数据写到备机,主机这边应该将rsync.sh脚本暂停

            if [ ${processNum} = 2 ]  #再次判断rsync.sh进程数

            then

                echo "Keepalived is OK!数据传输到备机!Rsync实时备份进程未能正常关闭,请联系管理员!"

                exit 2  #rsync.sh进程不能杀死,返回信号2--紧急,请求管理员处理

            else

                echo "Keepalived is OK!数据传输到备机!Rsync实时备份进程正常关闭!"

                exit 1  #rsync.sh进程关闭成功,返回信号量1--警告,但数据应该是传输到备机上的,所以这块儿管理员需要进行检查

            fi

        else #keepalived进程数正常,VIP不正常,rsync实时备份进程数不正常,则是rsync.sh脚本已经停止执行

            echo "Keepalived is OK!数据传输到备机!Rsync实时备份进程正常关闭!"

            exit 1

        fi

    fi

else

    if [ ${processNum} = 2 ] #keepalived进程数异常,判断rsync实时备份进程数是否正常

    then

        /usr/bin/pkill rsync.sh #rsync实时备份进程数正常的话,我们需要kill掉

        if [ ${processNum} = 2 ]

        then

            echo "Keepalived is ERR!Rsync实时备份进程未能正常关闭,请联系管理员!"

            exit 2 #Rsync实时备份进程未能关掉,返回信号量2--紧急,请联系管理员

        else

            echo "Keepalived is ERR!Rsync实时备份进程正常关闭!"

            exit 1 #Rsync实时备份进程正常关掉,返回信号量1--警告

        fi

    else

        echo "Keepalived is ERR!Rsync实时备份进程正常关闭!"

        exit 1

    fi

fi

===================================================================================

监控lvs状态的脚本(备机)

/usr/local/nagios/libexec/check_lvs_rsync.sh

#!/bin/bash -x

##################################

#Author:qingbo.song              #

#Date:2015-4-17                  #

#E-mail:qingbo.song@apicloud.com #

#Comment:Lvs_status              #

##################################

#/usr/local/nagios/libexec/check_lvs_rsync.sh

#0 正常

#1 告警

#2 紧急

#3 未知

keepalived_process=`ps aux|grep [k]eepalived|grep -v 'check_lvs_rsync.sh'|wc -l`

processNum=`ps -ef|grep rsync.sh|grep -v grep|wc -l`

#sed -n '9p' file  获取某一行的数据

ip=`ip addr|sed -n '9p'|awk '{print $2}'` #获取vip地址

file=/opt/shell/rsync.sh

if [ "x${keepalived_process}" = "x3" ] #判断keepalived进程数是否正常

then

    if [ "${ip}" = "10.124.151.4/32" ] #keepalived进程数正常,判断VIP是否正常

    then

        if [ ${processNum} = 2 ] #keepalived进程数正常,VIP正常,判断rsync实时备份进程数是否正常

        then

            echo "Keepalived is OK!数据传输到备机!Rsync实时备份脚本运行正常!"

            exit 0 #返回信号量0表示正常

        else

            if [ ! -f "$file" ] #keepalived进程数正常,VIP正常,rsync实时备份进程数不正常,判断rsync.sh脚本是否存在

            then

                echo "Keepalived is OK!数据传输到备机!Rsync实时备份进程&&rsync.sh脚本不存在,请联系管理员!"

                exit 2 #keepalived进程数正常,VIP正常,rsync实时备份进程数不正常,判断rsync.sh脚本不存在,返回信号量2请管理员处理

            else

                (/usr/bin/sh /opt/shell/rsync.sh &) #执行rsync.sh脚本并后台运行

                if [ ${processNum} = 2 ] #再次判断rsync进程数

                then

                    echo "Keepalived is OK!数据传输到备机!Rsync实时备份进程已重新启动!"

                    exit 0  #rsync.sh正常执行,返回信号量0--正常

                else

                    echo "Keepalived is OK!数据传输到备机!Rsync实时备份进程未能重新启动,请联系管理员!"

                    exit 2 #rsync.sh不能正常执行,返回信号量2--紧急,请求管理员处理

                fi

            fi

        fi 

    else

        if [ ${processNum} = 2 ]

        then

            /usr/bin/pkill rsync.sh #杀死rsync.sh进程,数据写到主机,备机这边应该将rsync.sh脚本暂停

            if [ ${processNum} = 2 ]  #再次判断rsync.sh进程数

            then

                echo "Keepalived is OK!数据传输到主机!Rsync实时备份进程未能正常关闭,请联系管理员!"

                exit 2

            else

                echo "Keepalived is OK!数据传输到主机!Rsync实时备份进程正常关闭!"

                exit 0

            fi

        else

            echo "Keepalived is OK!数据传输到主机!Rsync实时备份进程关闭正常!"

            exit 0

        fi

    fi

else

    if [ ${processNum} = 2 ] #keepalived进程数异常,判断rsync实时备份进程数是否正常

    then

        /usr/bin/pkill rsync.sh #rsync实时备份进程数正常的话,我们需要kill掉

        if [ ${processNum} = 2 ]

        then

            echo "Keepalived is ERR!Rsync实时备份进程未能正常关闭,请联系管理员!"

            exit 2 #Rsync实时备份进程未能关掉,返回信号量2--紧急,请联系管理员

        else

            echo "Keepalived is ERR!Rsync实时备份进程正常关闭!"

            exit 1 #Rsync实时备份进程正常关掉,返回信号量1--警告

        fi

    else

        echo "Keepalived is ERR!Rsync实时备份进程正常关闭!"

        exit 1

    fi 

fi

=====================================================================


4.keepalived安装与配置

  1)Keepalived的编译安装

    cd /usr/local/src/

    wget http://www.keepalived.org/software/keepalived-1.1.20.tar.gz

    tar xf keepalived-1.2.15.tar.gz

    cd keepalived-1.1.20

    ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-279.el6.x86_64/

    make && make install

    将Keepalived做成服务:

     cd /usr/local/keepalived/ && cp etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ && cp etc/sysconfig/keepalived /etc/sysconfig/ && mkdir /etc/keepalived && cp etc/keepalived/keepalived.conf /etc/keepalived/ && cp sbin/keepalived /usr/sbin/

  2)修改防火墙

    -A INPUT -p vrrp -j ACCEPT #基于DR模式,当用户发出请求后,只有DR响应ARP广播包,允许vrrp虚拟路由器冗余协议

    重启防火墙:service iptables restart

  3)keepalived配置文件修改

   vim /etc/keepalived/keepalived (主)

==================================================

! Configuration File for keepalived

global_defs {

    notification_email {                        //定义邮件服务的

        root@localhost                         //定义收件人,这里改为本机,只是测试使用 

    }

    notification_email_from kaadmin@localhost   //定义发件人,

    smtp_server 127.0.0.1                       //定义邮件服务器,一定不能使用外部地址

    smtp_connect_timeout 30                     //超时时间

    router_id  LVS_DOWNLOAD                      

}


vrrp_instance VI_1 {          //定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称

    state MASTER              //开启后,该节点的优先级比另一节点的优先级高,所以转化为MASTER状态

    interface eth0            //所有的通告等信息都从eth0这个接口出去

    virtual_router_id 7      //虚拟路由的ID,而且这个ID也是虚拟MAC最后一段的来源,这个ID号一般不能大于255,且这个ID一定不能有冲突

    priority 100            //初始优先级

    advert_int 1            //通告的个数

    authentication {        //认证机制

        auth_type yzkj      //认证类型

        auth_pass yzkj1234      //密码,应该为随机的字符串

    } 

    virtual_ipaddress {     //虚拟地址,即VIP

        10.124.151.4

    }

}

==========================================================

   vim /etc/keepalived/keepalived (备)

==========================================================

! Configuration File for keepalived

global_defs {

    notification_email {                        //定义邮件服务的

        root@localhost                         //定义收件人,这里改为本机,只是测试使用 

    }

    notification_email_from kaadmin@localhost   //定义发件人,

    smtp_server 127.0.0.1                       //定义邮件服务器,一定不能使用外部地址

    smtp_connect_timeout 30                     //超时时间

    router_id  LVS_DOWNLOAD                      

}


vrrp_instance VI_1 {          //定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称

    state BACKUP              //修改从节点的状态,主节点为MASTER,从节点就为BACKUP

    interface eth0            //所有的通告等信息都从eth0这个接口出去

    virtual_router_id 7      //虚拟路由的ID,而且这个ID也是虚拟MAC最后一段的来源,这个ID号一般不能大于255,且这个ID一定不能有冲突

    priority 99            //修改优先级,注意从节点的优先级一定要小于主节点

    advert_int 1            //通告的个数

    authentication {        //认证机制

        auth_type yzkj      //认证类型

        auth_pass yzkj1234      //密码,应该为随机的字符串

    } 

    virtual_ipaddress {     //虚拟地址,即VIP

        10.124.151.4

    }

}


至此服务器配置完毕!




问题:在测试过程中 sh /opt/shell/rsync.sh & 使实时备份脚本后台运行之时,当把终端关掉就会由于hub信号量的问题导致进程被死掉。解决这个问题,最简单的方法就是: (sh /opt/shell/rsync.sh &) 使其躲过hub信号量的检查,从而保持后台运行的状态。

相关参考文档链接:http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/ 


附注:参考链接


LVM磁盘管理 http://www.cnblogs.com/gaojun/archive/2012/08/22/2650229.html

基于keepalived实现VIP转移 lvs nginx的高可用 http://www.it165.net/admin/html/201309/1865.html

rsync启动脚本  http://my.oschina.net/u/236631/blog/113472

inotifyrsync -- 用inotify和rsync实现多机文件实时同步 http://gaopenghigh.iteye.com/blog/1746741










本文转自 南非波波 51CTO博客,原文链接:http://blog.51cto.com/nanfeibobo/1636225,如需转载请自行联系原作者
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
目录
相关文章
|
4月前
|
存储 运维 Python
基于 ChunkServer 的数据备份与恢复方案
【8月更文第30天】在分布式文件系统中,数据的安全性和持久性是至关重要的。为了应对可能发生的硬件故障、网络中断等问题,需要有一套完善的备份与恢复方案。本文将详细介绍如何设计和实现一套基于 ChunkServer 的数据备份与恢复流程,确保数据的完整性和持久性。
53 0
|
15天前
|
NoSQL 容灾 MongoDB
MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份
在资源受限的情况下,为了实现MongoDB的高可用性,本文探讨了两种在两台服务器上部署MongoDB的方案。方案一是通过主备身份轮换,即一台服务器作为主节点,另一台同时部署备节点和仲裁节点;方案二是利用`priority`设置实现自动主备切换。两者相比,方案二自动化程度更高,适合追求快速故障恢复的场景,而方案一则提供了更多的手动控制选项。文章最后对比了这两种方案与标准三节点副本集的优缺点,指出三节点方案在高可用性和数据一致性方面表现更佳。
|
5天前
|
存储 Shell 数据库
某客户多节点磁盘故障集群恢复
gbase 数据 某客户多节点磁盘故障集群恢复
|
4月前
|
存储 运维 负载均衡
构建高可用的 ChunkServer 系统
【8月更文第30天】在分布式文件系统中,ChunkServer(也称为 DataNode)负责存储文件的数据块(chunks)。为了保证系统的高可用性和数据冗余,需要设计一种可靠的 ChunkServer 部署方案。本文将探讨如何设计和实现一个高可用的 ChunkServer 系统,并通过具体的代码示例来展示其实现细节。
66 0
|
7月前
|
存储 缓存 安全
【VSAN数据恢复】VSAN集群节点数据迁移失败的数据恢复案例
VSAN存储是一个对象存储,以文件系统呈现给在vSphere主机上。这个对象存储服务会从VSAN集群中的每台主机上加载卷,将卷展现为单一的、在所有节点上都可见的分布式共享数据存储。 对于虚拟机来说,只有一个数据存储,这个分布式数据存储来自VSAN集群中每一台vSphere主机上的存储空间,通过磁盘组进行配置,在单独的存储中存放所有的虚拟机文件。这种数据存储方式比较安全,当闪存盘或者容量盘出现故障的时候,数据会向其他节点转移,在转移过程中有可能出现故障。
|
6月前
|
监控 关系型数据库 分布式数据库
PolarDB故障恢复机制:快速恢复与数据一致性保障
【6月更文挑战第29天】**PolarDB云原生数据库的故障恢复机制确保高可用性与数据一致性。利用ROW快照备份实现秒级备份,结合Redo Log进行时间点恢复。通过日志分析定位故障,快速启动备用实例恢复服务。分布式事务及强一致性读保证数据完整性。PolarDB的高效恢复策略是其在云数据库市场中的关键优势。**
141 16
|
6月前
|
存储 关系型数据库 分布式数据库
PolarDB产品使用问题之存储热备集群是否可以关闭
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
存储 缓存 运维
【高并发/高可用/哨兵机制/集群模式/高可用与主备切换/主从复制/断点续传】
【高并发/高可用/哨兵机制/集群模式/高可用与主备切换/主从复制/断点续传】
195 0
【高并发/高可用/哨兵机制/集群模式/高可用与主备切换/主从复制/断点续传】
|
NoSQL MongoDB
副本集mogodb 物理备份与恢复
副本集mogodb 物理备份与恢复
220 0
|
关系型数据库 MySQL Linux
Mysql主从复制与高可用主备切换搭建完整详细版
Mysql主从复制与高可用主备切换搭建完整详细版