Access the Database

All should be run on the controller.

Find the database_password:

./cc-ansible --site /opt/site-config edit_passwords

Get inside mariadb service container:

docker exec -it mariadb bash

Enter database_password:

mysql -u root -p

Show the databases:

MariaDB [(none)]> SHOW DATABASES; 
+--------------------+
| Database           |
+--------------------+
| PERCONA_SCHEMA     |
| blazar             |
| cinder             |
| doni               |
| glance             |
| heat               |
| information_schema |
| ironic             |
| keystone           |
| mysql              |
| neutron            |
| nova               |
| nova_api           |
| nova_cell0         |
| performance_schema |
| placement          |
| zun                |
+--------------------+

Select the database:

MariaDB [(none)]> USE zun;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

Show the desired tables:

MariaDB [(none)]> SHOW TABLES from zun;
+--------------------------+
| Tables_in_zun            |
+--------------------------+
| alembic_version          |
| allocation               |
| compute_node             |
| container                |
| container_actions        |
| container_actions_events |
| exec_instance            |
| image                    |
| inventory                |
| network                  |
| pci_device               |
| quota_classes            |
| quota_usages             |
| quotas                   |
| registry                 |
| resource_class           |
| resource_provider        |
| volume                   |
| volume_mapping           |
| zun_service              |
+--------------------------+

Drop a database:

MariaDB [(none)]> DROP DATABASE zun;
Query OK, 20 rows affected (0.175 sec)

Show entris in a table:

select * from networksegment_extra_capabilities;

Here is how to delete an entry of a table. For example here we delete a network segment with id 7edefbb6-78a7-4dc8-af94-6bd18376bb08 in blazar database:

select * from network_segments;
delete from networksegment_extra_capabilities where network_id='7edefbb6-78a7-4dc8-af94-6bd18376bb08';
delete from network_allocations where network_id='7edefbb6-78a7-4dc8-af94-6bd18376bb08';
delete from network_segments where id='7edefbb6-78a7-4dc8-af94-6bd18376bb08';

After cleaning a service's database, Keystone's records must be cleaned as well.

From Keystone the following items should be deleted:

  • The service entry itself:

    'name': 'zun', 'service_type': 'container'

    To delete the service:

    openstack service list
    openstack service delete <service-id>
  • Its endpoints:

    'service': 'zun', 'url': 'http://10.20.111.99:9517/v1/', 'interface': 'admin'
    'service': 'zun', 'url': 'http://10.20.111.99:9517/v1/', 'interface': 'internal'
    'service': 'zun', 'url': 'https://testbed.expeca.proj.kth.se:9517/v1/', 'interface': 'public'

    To delete all endpoints, use Keystone CLI:

    openstack endpoint list
    openstack endpoint delete <endpoint-id1>
    openstack endpoint delete <endpoint-id2>
    openstack endpoint delete <endpoint-id3>
  • Its user:

    'user': 'zun', 'project': 'service'

    Delete the user by:

    openstack user list
    openstack user delete <user-id>

NOTE: zun service has entries in placement database service as well. Deleting them is crucial and resolved a bug. The following instructions are regarding that.

MariaDB [(none)]> use placement;
MariaDB [placement]> select * from resource_providers;

We need to remove the controller-01-k8s resource provider which is a key item. However, it has references in other tables of the database. So they should be deleted too.

  • allocations table:

MariaDB [placement]> select * from allocations;
MariaDB [placement]> DELETE FROM allocations WHERE id='17';
MariaDB [placement]> DELETE FROM allocations WHERE id='18';
MariaDB [placement]> DELETE FROM allocations WHERE id='21';
  • inventories table:

MariaDB [placement]> select * from inventories;
MariaDB [placement]> DELETE FROM inventories WHERE id='1';
MariaDB [placement]> DELETE FROM inventories WHERE id='2';
MariaDB [placement]> DELETE FROM inventories WHERE id='3';

Then the foreign key check must be disabled, delete the resource provider, and enable it again.

MariaDB [placement]> SET FOREIGN_KEY_CHECKS=0;
MariaDB [placement]> DELETE FROM resource_providers WHERE id='1';
MariaDB [placement]> SET FOREIGN_KEY_CHECKS=1;

Then deploy the service to create a new database.

Last updated