ITPub博客

首页 > 数据库 > 国内数据库 > OceanBase 配置NFS备份

OceanBase 配置NFS备份

原创 国内数据库 作者:gycixput 时间:2023-05-21 18:50:01 0 删除 编辑


环境介绍:

环境说明:

ob 324版本

192.168.15.65   dbdriver.bj.bob.test    dbdriver

192.168.15.65   test.bj.gyc.test    db00

192.168.15.66   db01.bj.bob.test    db01

192.168.15.67   db02.bj.bob.test    db02

192.168.15.68   db03.bj.bob.test    db03

192.168.15.69   db04.bj.bob.test    db04

192.168.15.70   db05.bj.bob.test    db05


Red Hat Enterprise Linux Server release 7.6 (Maipo)


nfs_server: 192.168.15.65 /nfsbackup

nfs_client:

192.168.15.66

192.168.15.67

192.168.15.68

192.168.15.69

192.168.15.70


1、部署 NFS 软件的服务器端


lvcreate -L 500G -n nfsbackup osvg 

mkfs.ext4 /dev/osvg/nfsbackup 

mkdir /nfsbackup

mount /dev/mapper/osvg-nfsbackup /nfsbackup/


yum install nfs-utils


配置/etc/exports文件,设置以下信息。


[root@dbdriver ~]# cat /etc/exports

[root@dbdriver ~]# echo "/nfsbackup 192.168.15.0/24(rw,sync,all_squash)" >> /etc/exports

[root@dbdriver ~]# cat /etc/exports

/nfsbackup 192.168.15.0/24(rw,sync,all_squash)


nfsnobody 赋权,确保 nfsnobody 有权限访问 exports 中指定的目录。


chown nfsnobody:nfsnobody -R /nfsbackup


执行 vim /etc/sysconfig/nfs 命令,打开配置文件。

调整如下所示参数:

RPCNFSDCOUNT=8

RPCNFSDARGS="-N 2 -N 3 -U"

NFSD_V4_GRACE=90

NFSD_V4_LEASE=90



systemctl restart nfs-config


systemctl restart nfs-server

设置 Slot Table。

执行 vim /etc/sysctl.conf 命令,打开 sysctl.conf配置文件,在文件中添加一行如下信息:

sysctl -a | grep tcp_max_slot_table_entries

cat /etc/sysctl.conf | grep tcp_max_slot_table_entries

echo "sunrpc.tcp_max_slot_table_entries=128" >> /etc/sysctl.conf

cat /etc/sysctl.conf | grep tcp_max_slot_table_entries

sysctl -p 

sysctl -a | grep tcp_max_slot_table_entries


也可以通过 cat /proc/sys/sunrpc/tcp_max_slot_table_entries 命令查看设置是否生效,如果返回值为 128,则说明修改成功。


查看nfs运行状态

nfsstat

查看rpc运行状态

rpcinfo

查看网络端口,默认端口为111

netstat -tu -4




2、部署 NFS 客户端

部署 NFS 客户端时,需要在所有 OBServer 机器上进行操作。

以下以在某一台 OBServer 上的操作为例,提供操作指导。

登录 OBServer。

安装nfs server


yum install nfs-utils


sysctl -a | grep tcp_max_slot_table_entries

cat /etc/sysctl.conf | grep tcp_max_slot_table_entries

echo "sunrpc.tcp_max_slot_table_entries=128" >> /etc/sysctl.conf

cat /etc/sysctl.conf | grep tcp_max_slot_table_entries

sysctl -p 

sysctl -a | grep tcp_max_slot_table_entries


(可选)重启机器。

选择一个合适的目录作为 Mount 点, 执行以下命令,挂载 NFS。

mkdir /nfsbackup

mount -tnfs4 -o rw,nfsvers=4.1,sync,lookupcache=positive,hard,timeo=600,wsize=1048576,rsize=1048576,namlen=255 192.168.15.65:/nfsbackup /nfsbackup


写入配置文件:

echo "192.168.15.65:/nfsbackup /nfsbackup      nfs4    defaults,rw,nfsvers=4.1,sync,lookupcache=positive,hard,timeo=600,wsize=1048576,rsize=1048576,namlen=255 0 0" >> /etc/fstab


风险:重启后,一旦nfs相关服务或者网络异常,系统启动失败,建议放到开启脚本中,不影响系统重启。


语句中:

nfsvers=4.1:由于备份依赖 nfs 4 原生的文件锁,推荐使用 nfs 4.1 及以上版本。nfs 4.0 有一个已知 Bug,在重命名文件以后可能会读到旧文件。

sync:使用同步写保证数据能及时刷到服务端,从而保证数据的一致性。

lookupcache=positive:用于避免并发访问目录或者文件时误报目录或文件不存在的问题,保证数据的一致性。

hard:在 NFS 不可用的情况下,系统会卡住应用的读写请求,以保证数据的一致性。不能使用 soft 选项,会有数据错误的风险。

timeo:用于指定重试的等待时间,单位为 0.1s。在设置时,建议不要设置得过大,推荐值为 600。

wsize:表示读的数据块大小,建议设置为 1048576。

rsize:表示写的数据库大小,建议设置为 1048576。

namlen:建议设置为 255。

192.168.15.65:表示 NFS 服务器的 IP 地址。


注意

在挂载 NFS 时,必须保证备份挂载环境的参数中包含 nfsvers=4.1、sync、lookupcache=positive 及 hard。

Docker 环境需要在宿主机上挂载 NFS,然后映射到 Docker 里面。如果 Docker 内部直接挂载 NFS,可能会出现客户端 Hung 住的场景。



3、验证 NFS 的性能。

fio -filename=/nfsbackup/fio_test -direct=1  -rw=randwrite -bs=2048K -size=10G  -runtime=300 -group_reporting -name=mytest  -ioengine=libaio -numjobs=1 -iodepth=64 -iodepth_batch=8 -iodepth_low=8 -iodepth_batch_complete=8

执行结果如下:

[root@db01 nfsbackup]# fio -filename=/nfsbackup/fio_test -direct=1  -rw=randwrite -bs=2048K -size=10G  -runtime=300 -group_reporting -name=mytest  -ioengine=libaio -numjobs=1 -iodepth=64 -iodepth_batch=8 -iodepth_low=8 -iodepth_batch_complete=8

mytest: (g=0): rw=randwrite, bs=(R) 2048KiB-2048KiB, (W) 2048KiB-2048KiB, (T) 2048KiB-2048KiB, ioengine=libaio, iodepth=64

fio-3.1

Starting 1 process

mytest: Laying out IO file (1 file / 10240MiB)

fio: native_fallocate call failed: Operation not supported


Jobs: 1 (f=1): [w(1)][100.0%][r=0KiB/s,w=513MiB/s][r=0,w=256 IOPS][eta 00m:00s]

mytest: (groupid=0, jobs=1): err= 0: pid=150139: Fri May  5 13:53:35 2023

  write: IOPS=211, BW=422MiB/s (443MB/s)(10.0GiB/24242msec)

    slat (usec): min=1394, max=10386, avg=2336.40, stdev=541.71

    clat (msec): min=32, max=725, avg=181.10, stdev=123.63

     lat (msec): min=35, max=727, avg=183.44, stdev=123.64

    clat percentiles (msec):

     |  1.00th=[   36],  5.00th=[   39], 10.00th=[   43], 20.00th=[   68],

     | 30.00th=[   91], 40.00th=[  120], 50.00th=[  146], 60.00th=[  197],

     | 70.00th=[  245], 80.00th=[  284], 90.00th=[  342], 95.00th=[  401],

     | 99.00th=[  550], 99.50th=[  684], 99.90th=[  726], 99.95th=[  726],

     | 99.99th=[  726]

   bw (  KiB/s): min=196608, max=655360, per=98.96%, avg=428032.00, stdev=113794.35, samples=48

   iops        : min=   96, max=  320, avg=209.00, stdev=55.56, samples=48

  lat (msec)   : 50=11.74%, 100=21.43%, 250=38.54%, 500=26.70%, 750=1.60%

  cpu          : usr=2.95%, sys=4.59%, ctx=3113, majf=0, minf=32807

  IO depths    : 1=0.0%, 2=0.0%, 4=0.0%, 8=0.2%, 16=28.8%, 32=56.9%, >=64=14.2%

     submit    : 0=0.0%, 4=0.0%, 8=100.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%

     complete  : 0=0.0%, 4=0.0%, 8=99.8%, 16=0.0%, 32=0.2%, 64=0.0%, >=64=0.0%

     issued rwt: total=0,5120,0, short=0,0,0, dropped=0,0,0

     latency   : target=0, window=0, percentile=100.00%, depth=64


Run status group 0 (all jobs):

  WRITE: bw=422MiB/s (443MB/s), 422MiB/s-422MiB/s (443MB/s-443MB/s), io=10.0GiB (10.7GB), run=24242-24242msec


注:生产上的操作请经过严格测试。



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24585765/viewspace-2952603/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-11-05

  • 博文量
    69
  • 访问量
    212866