不同备份数据库脚本区别
同一个数据库不同的2个备份脚本,这两个备份脚本大小差别比较大,看看是哪里的区别?
将2个脚本分别导入不同的数据库中
查看数据库中每个表占用空间,并按大小降序
SELECT
TABLE_NAME,
DATA_LENGTH + INDEX_LENGTH,
TABLE_ROWS,
round((DATA_LENGTH ) / 1024 / 1024,2) as DATA
FROM
information_schema. TABLES
WHERE
TABLE_SCHEMA = 'cxcloud_reimburse' -- 数据库名
ORDER BY DATA + 0 DESC;
- 数据库1
- 数据库2
发现sys_log_interface接口请求报文记录表中无效数据比较多,一张表6000多条数据,占用2G多的空间,那么这个则是程序的一个优化点。
将备份的脚本传送到其他服务器上
scp 指定密码
-
下载安装包
https://sourceforge.net/projects/sshpass/
-
编译
sh configure
-
安装
make&&make install
scp
sshpass -p Max#550 scp cxcloud_reimburse_2022-07-31_09-04-15.sql.tar.gz [email protected]:/opt
k8s基于nfs创建pvc
安装nfs
-
安装rpc跟nfs服务
yum -y install rpcbind nfs-utils
-
创建指定共享目录并修改相应权限
mkdir /nfs && chmod 666 /nfs
-
编译nfs共享文件夹访问权限
vim /etc/exports /nfs *(rw,sync,no_root_squash) 第一部分:/nfs 是服务器共享的目录 第二部分:* 允许访问的ip,*表示所有 例如192.168.0.0/24,其中的/24是掩码,此处表示24个1,即11111111.11111111.11111111.00000000, 即掩码是255.255.255.0。结合前面192.168.0.0表示此处配置IP为 192.168.0.*的主机均可以访问该目录,即局域网上的所有主机。 第三部分:(insecure,rw,sync,no_root_squash,no_subtree_check)
-
载入配置
exportfs -rv
-
启动rpc服务并加入开机自启
systemctl enable rpcbind --now
-
启动nfs服务并加入开机自启
systemctl enable nfs --now
-
服务检查
showmount -e Export list for master: /nfs *
-
客户端将服务nfs目录挂载至本机/mnt,然后df -h查看挂载结果
mount -t nfs 10.1.2.219:/nfs /mnt
创建storageclass
- 创建好storageclass之后,会自动在kube-system命名空间启动nfs-client pod
并通过pod生成pv
-
进入某一个业务应用的命名空间,创建pvc
或者
可能遇到的问题-问题1
-
如果nfs共享文件夹权限设置为root_squash
no_root_squash 这个的意思是nfs client pod内root用户具有root的访问权限;root_squash表示nfs client pod内root用户没有root的访问权限,所以配置成root_squash,查看nfs client pod日志
kubectl describe pod nfs-client-provisioner-5d6bdff8d9-fhkbs -n kube-system
没有权限创建文件夹,进入pod里面看下
kubectl exec -it nfs-client-provisioner-5d6bdff8d9-fhkbs -n kube-system sh
所以需要设置为no_root_squash,root用户才具有root操作权限
问题2
nfs在10.1.2.219虚拟机上,本地电脑mac k8s 创建storageclass 挂载nfs报错:连接超时
这是需要进入k8s内部,确认下是否可以访问10.1.2.219
-
部署一个deploment
vim ndsutils.yaml apiVersion: v1 kind: Pod metadata: name: dnsutils spec: containers: - name: dnsutils image: mydlqclub/dnsutils:1.3 imagePullPolicy: IfNotPresent command: ["sleep","3600"] kubectl create -f ndsutils.yaml -n kube-system
-
进入k8s
kubectl exec -it dnsutils /bin/sh -n kube-system
本地mac的k8s集群访问10.1.2.219是不通的,所以挂在nfs的时候报连接超时是正常的。
-
修改nfs 共享文件夹权限
/nfs 10.1.2.0/24(insecure,rw,sync,no_root_squash,fsid=0) 在宿主机上执行sudo mount -t nfs 10.1.2.219:/nfs /opt/nfs/data 是可以的
为什么我本地mac电脑可以连接内网服务器,因为我本地电脑连接着内网的vpn
vpn连接着蒲公英的一个硬件设备
在蒲公英的网络安全管理平台也可以看到
这个硬件上设备连接着内网服务器,所以我本地电脑连接vpn就可以访问到内网服务器。但是如果把nfs共享文件夹的访问权限,设置为允许所有ip访问
我本地电脑访问则显示没有权限
所以要想局域网可以访问需要配置下局域网的ip范围即局域网下的所有主机可以访问
pod删除之后,又重启
-
先查下deployment
-
再删除deployment
pvc强制删除
kubectl patch pvc 219-pvc -p '{"metadata":{"finalizers":null}}' -n xibaoxiao-cloud
persistentvolumeclaim/219-pvc patched
kubectl delete pvc 219-pvc -n xibaoxiao-cloud