场景:我想要了解ovsdb的数据长啥样,所以就用ovsdb-client小小操作一下。
一、替换数据库的schema文件(可以不替换,因为我有新增)
- 按照我的apt-get install安装方法的话,文件位置在
/usr/share/openvswitch
- 修改保存后要重新编译(不是必要步骤,因为我这个环境是自己搭的,没有脚本维护,所以要手动更新)
参考文章:修改database schema为Open vSwitch添加新功能 | Sunbo's Blog
1、执行校验
cksum xxx/vswitch.ovsschema > xxx/vswitch.ovsschema.stamp (xxx代表路径,下同)
2、更新系统的数据库文件(把原来的conf.db改名)
ovsdb-tool create xxx/openvswitch/conf.db xxx/vswitch.ovsschema
ps:我执行第二步的时候报错
lockfile|WARN|/var/lib/openvswitch/.conf.db.~lock~: \
cannot lock file because it is already locked by pid 767,
意思就是767进程在跑,我们kill 767再执行一次命令就可以了,
然后可以打开db文件看一下,自己新增的表加入成功了没。
(建议ps -ef | grep conf查一下,方便下面重新拉起来)
- 重新连上数据库(就是把杀掉的进程重新拉起来)
-
ovsdb-server /etc/openvswitch/conf.db -vconsole:emer -vsyslog:err -vfile:info --remote=punix:/var/run/openvswitch/db.sock --private-key=db:Open_vSwitch,SSL,private_key --certificate=db:Open_vSwitch,SSL,certificate --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert --no-chdir --log-file=/var/log/openvswitch/ovsdb-server.log --pidfile=/var/run/openvswitch/ovsdb-server.pid --detach
二、插入表数据并监控输出
开两个客户端,一边插入表数据,一边监控表数据。
- 插入数据命令(和schema文件的格式要匹配)
ovsdb-client transact '["Open_vSwitch",{"op":"insert","table":"LogFetch","row":{"session_id":"","filename":"","target":"","duration":0,"status":"","message":"","upload_url":""}}]'
成功会返回一个uuid:
[{"uuid":["uuid","0575de86-8153-410d-a168-f6e9f2619209"]}]
- 监控表数据
参考博客:https://www.cnblogs.com/ssyfj/p/11881384.html#%E4%B8%89ovsdb-client
监控表用这个命令:
ovsdb-client monitor DATABASE TABLE
下面的命令用来辅助:
1、列出主机上的所有databases,默认只有一个库Open_vSwitch
ovsdb-client list-dbs
2、获取指定数据库的schema信息
ovsdb-client get-schema [DATABASE]
3、列出指定数据库的所有表
ovsdb-client list-tables [DATABASE]
4、dump指定数据库所有数据,不加参数dump所有table数据
ovsdb-client dump [DATABASE] [TABLE]