首页 > 数据库 > 国内数据库 > OceanBase 配置NFS备份
环境介绍:
环境说明:
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/ ,如需转载,请注明出处,否则将追究法律责任。