OpenStack Newton版nova数据库同步不完全故障处理
Newton平台搭建好后创建虚拟机报错:
<class 'oslo_db.exception.DBError'>(HTTP 500)(Request-ID:req-fa547356-649a-4f23-8edf-c8c09f2cfb59)
排错思路:
检查/var/log/nova/nova-api.log /var/log/nova/nova-scheduler.log等目录发现插入数据库表项报错如下:
(补图,点击打开可看大图)
问题原因:同步数据库Nova表时缺少device_metadata和keypairs
解决办法:drop掉Nova数据库后重新同步数据库
mysql -uroot -pdevops -e "DROP DATABASE IF EXISTS nova;"
mysql -uroot -pdevops -e "DROP DATABASE IF EXISTS nova_api;"
mysql -uroot -pdevops -e "CREATE DATABASE nova;"
mysql -uroot -pdevops -e "CREATE DATABASE nova_api;"
mysql -uroot -pdevops -e "FLUSH PRIVILEGES;"
mysql -uroot -pdevops -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'devops';"
mysql -uroot -pdevops -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'devops';"
mysql -uroot -pdevops -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'devops';"
mysql -uroot -pdevops -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'devops';"
mysql -uroot -pdevops -e "FLUSH PRIVILIGES;"
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage db sync" nova
PS:drop数据库在某些时候会解决比较棘手的问题,但是使用需注意尤其是生产环境会导致服务中断甚至有被跑路风险。
1.drop keystone数据库会导致所有的endpoint信息和service信息丢失,所有服务器均无法注册认证使用。(已验证)
2.drop nova数据库会导致所有虚拟机服务信息丢失。(验证部分)
//计算节点信息丢失openstack compute service-list无显示,systemctl restart openstack-nova-compute.service neutron-linuxbridge-agent.service
3.drop neutron数据库暂时未试过,应该是会导致所有网络挂掉。(待验证)
4.drop keystone数据库后/var/lib/glance/images的文件都直接rm -rf *干掉完全无法用了。(已验证)