最近用go把数据库的自动化运维重构了一遍,之前都是些一些分散的脚本,没有成体系,现在把所有的功能都集成到了agent中,agent中封装的有些命令,会执行一些条件检查,避免手工执行的一些问题,比如建库,库名重复,等等,agent不曝漏密码,可以对执行的所有命令进行记录,审计,agent定时收集数据上传,并提供接口给server端,server端可以通过接口调用agent,操作mysql。server端使用raft,执行统计,以及调用agent接口操作mysql。

agent支持的命令如下:

The commands are listed below.

install <role>
start
shutdown
upgrade
startslave
stopslave
stopio
stopsql
startio
startsql
restartslave
isreadonly
setreadonly
slavestatus
version
kill <id>
backup
backuptables <tables>
comparevar
flushlogs
purgelogs <toLog>
waitutil <targetgtid>
setreplpos <pos>
changemaster <master>,<port>
delayrepl <seconds>
filterrepl <replicationdb>
utilsqlafter <targetgtid>
showblock
showprocesslist
showbigtrx
showmaster
showslaves
showerror
showrole
showvar <pattern>
showlogs
showos
showerrant
showdbs
showusers
showgrant <user>
createdb <dbname>,<rw_net>,<ro_net>
grant <user>,<db>,<privileges>,<nets>