Estou escrevendo um script de backup para um banco de dados e quero usar o util.dumpSchemas()
utilitário mysqlshell.
Mas como diabos posso fazê-lo funcionar de dentro de um script de shell?
O processo básico que tenho é este:
filename_1: backup.sh
. . .
mysqlsh --file mysqlshell_backup.js
filename_2: mysqlshell_backup.js
\connect backup_user:<password>@127.0.0.1:3306
util.dumpSchemas(<options........>)
\q
Mas quando executo tudo o que recebo são erros:
SyntaxError: Invalid or unexpected token at mysqlshell_backup.js:2:0
in \connect backup_user:<password>@127.0.0.1:3306
mas se eu executar o código manualmente, por exemplo:
mysqlsh
MySQL JS > \connect backup_user:<password>@127.0.0.1:3306
Funciona bem.
MySQL 127.0.0.1:3306 ssl JS >
Eu tentei tornar o arquivo um executável por si só e executá-lo por conta própria adicionando:
#!/usr/local/mysql-shell/bin/mysqlsh --file
\connect backup_user:<password>@127.0.0.1:3306
util.dumpSchemas(<options........>)
\q
mas então eu recebo:
mysqlshell_backup.js: line 2: connect: command not found
mysqlshell_backup.js: line 3: syntax error near unexpected token `[<options>],'
mysqlshell_backup.js: line 3: `util.dumpSchemas(<options>)
Mas, novamente, se eu executá-lo diretamente de dentro do mysqlshell, o código funciona bem, então eu sei que não há erros de sintaxe.
Existe realmente uma maneira de executar um comando mysqlshell como parte de um script maior ou estou apenas perdendo meu tempo aqui?
OK, eu percebi isso. No script principal eu posso executar:
mysqlsh backup_user:<password>@127.0.0.1:3306 --file mysqlshell_backup.js
o que significa que posso remover essa linha (e o
\q
) do script JS.