Spec-Zone.ru › MySQL Shell 8.4

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 также поддерживается разделом 5.8 «Интеграция API командной строки» MySQL Shell. Эта интеграция командной строки позволяет легко интегрировать AdminAPI в вашу среду. Например, для проверки состояния кластера InnoDB, используя экземпляр песочницы, подключённый к порту 1234:

$ mysqlsh root@localhost:1234 -- cluster status

Это соответствует эквивалентной команде в MySQL Shell:

mysql-js> cluster.status()

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-shell-8.4-en/use-mysql-shell-execute-script.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API