6.7 Скрипты AdminAPI
MySQL Shell поддерживает выполнение скриптов в режиме пакетной обработки. Это позволяет автоматизировать процессы с использованием AdminAPI с помощью скриптов на JavaScript или Python, которые можно запустить с помощью опции MySQL Shell --file. Например:
$> mysqlsh --file setup-innodb-cluster.js
Любые параметры командной строки, указанные после имени файла скрипта, передаются в скрипт, а не в MySQL Shell. Вы можете получить доступ к этим параметрам, используя массив os.argv в JavaScript или массив sys.argv в Python. В обоих случаях первым элементом в массиве будет имя скрипта.
Здесь показано содержимое примера файла скрипта, написанного на JavaScript:
print('InnoDB Cluster sandbox set up\n');
print('==================================\n');
print('Setting up a MySQL InnoDB Cluster with 3 MySQL Server sandbox instances,\n');
print('installed in ~/mysql-sandboxes, running on ports 3310, 3320 and 3330.\n\n');
var dbPass = shell.prompt('Please enter a password for the MySQL root account: ', {type:"password"});
try {
print('\nDeploying the sandbox instances.');
dba.deploySandboxInstance(3310, {password: dbPass});
print('.');
dba.deploySandboxInstance(3320, {password: dbPass});
print('.');
dba.deploySandboxInstance(3330, {password: dbPass});
print('.\nSandbox instances deployed successfully.\n\n');
print('Setting up InnoDB Cluster...\n');
shell.connect('root@localhost:3310', dbPass);
var cluster = dba.createCluster("prodCluster");
print('Adding instances to the Cluster.');
cluster.addInstance({user: "root", host: "localhost", port: 3320, password: dbPass});
print('.');
cluster.addInstance({user: "root", host: "localhost", port: 3330, password: dbPass});
print('.\nInstances successfully added to the Cluster.');
print('\nInnoDB Cluster deployed successfully.\n');
} catch(e) {
print('\nThe InnoDB Cluster could not be created.\n\nError: ' +
+ e.message + '\n');
}
Или на Python:
print('InnoDB Cluster sandbox set up\n');
print('==================================\n');
print('Setting up a MySQL InnoDB Cluster with 3 MySQL Server sandbox instances,\n');
print('installed in ~/mysql-sandboxes, running on ports 3310, 3320 and 3330.\n\n');
dbPass = shell.prompt('Please enter a password for the MySQL root account: ', type ="password");
try:
print('\nDeploying the sandbox instances.');
dba.deploy_sandbox_instance(3310, password = dbPass);
print('.');
dba.deploy_sandbox_instance(3320, password = dbPass);
print('.');
dba.deploy_sandbox_instance(3330, password = dbPass);
print('.\nSandbox instances deployed successfully.\n\n');
print('Setting up InnoDB Cluster...\n');
shell.connect('root@localhost:3310', dbPass);
cluster = dba.create_cluster("prodCluster");
print('Adding instances to the Cluster.');
cluster.add_instance('root@localhost:3320', password = dbPass);
print('.');
cluster.add_instance('root@localhost:3330', password = dbPass);
print('.\nInstances successfully added to the Cluster.');
print('\nInnoDB Cluster deployed successfully.\n');
except ValueError:
print('\nThe InnoDB Cluster could not be created.\n\nError.\n');
Интеграция AdminAPI в командную строку MySQL Shell
AdminAPI также поддерживается интегрированием в командную строку MySQL Shell, как описано в Разделе 5.8, “Интеграция API в командную строку”. Эта интеграция позволяет легко интегрировать AdminAPI в вашу среду. Например, чтобы проверить статус InnoDB Cluster с использованием экземпляра песочницы, прослушивающего порт 1234:
$ mysqlsh root@localhost:1234 -- cluster statusЭто соответствует эквивалентной команде в MySQL Shell:
mysql-js> cluster.status()
© 2025 Oracle
Licensed under the GPLv2 License.