openstack基于mysql的问题修复

同事一台openstack单节点服务器由于未知原因,无法正常工作。

远程引导同事检查故障。

[[email protected] ~]# nova-manage service list

出现错误:SQL connection failed 。貌似没有连接数据库,看来可能是服务或数据库有问题。

引导同事检测openstack服务及数据库:

[[email protected] init.d]# /etc/init.d/openstack-keystone status
keystone (pid  12593) is running...
[[email protected] init.d]# /etc/init.d/openstack-nova-api status
openstack-nova-api (pid  7446) is running...
[[email protected] init.d]# /etc/init.d/openstack-nova-compute status
openstack-nova-compute (pid  11728) is running...
[[email protected] init.d]# /etc/init.d/openstack-nova-conductor status
openstack-nova-conductor (pid  7704) is running...
[[email protected] init.d]# /etc/init.d/mysqld status
 
mysql is stoppd 
[[email protected] init.d]# /etc/init.d/mysqld start
starting mysqld: [FAILED]

restart也是如此,看来是mysqld服务没有启动的问题。为什么没有启动了,找到了mysqld的日志查看:

tail -100 /var/lib/mysql/sxun.err

错误日志报大致错误如下:

170420 15:00:20  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.

......

因图不完整,引用以下网址文本http://blog.chinaunix.net/uid-27038861-id-3667209.html?bsh_bid=310758849 ,也按照其方法处,没动脑地操作了一下试试

##############以下引用#############

 130508 16:30:53 mysqld_safe Starting mysqlddaemon with databases from /data/mysql
130508 16:30:54 [Warning] The syntax‘--log-slow-queries‘ is deprecated and will be removed in a future release.Please use ‘--slow-query-log‘/‘--slow-query-log-file‘ instead.
130508 16:30:54 InnoDB: The InnoDB memoryheap is disabled
130508 16:30:54 InnoDB: Mutexes andrw_locks use GCC atomic builtins
130508 16:30:54 InnoDB: Compressed tablesuse zlib 1.2.3
130508 16:30:54 InnoDB: Initializing bufferpool, size = 500.0M
130508 16:30:54 InnoDB: Completedinitialization of buffer pool
130508 16:30:54 InnoDB: highest supportedfile format is Barracuda.
InnoDB: Log scan progressed past thecheckpoint lsn 27219795678
130508 16:30:54  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information fromthe .ibd files...
InnoDB: Restoring possible half-writtendata pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to logsequence number 27219928522

##############引用,中间省略#############

解决办法: 
删除掉 
ibdata* ,
ib_logfile* ,
所有的日志。
重启后可启动数据库,因数据库是非正常关闭引起的。所有会造成数据丢失。要做好备份工作

##############以上引用#############

[[email protected] mysql]# ll
total 225356
drwx------ 2 mysql mysql      4096 Feb 15 16:06 cinder
drwx------ 2 mysql mysql      4096 Oct  1  2016 glance
-rw-rw---- 1 mysql mysql 220200960 Apr 20 18:08 ibdata1
-rw-rw---- 1 mysql mysql   5242880 Apr 20 18:08 ib_logfile0
-rw-rw---- 1 mysql mysql   5242880 Apr 20 18:08 ib_logfile1
drwx------ 2 mysql mysql      4096 Oct  1  2016 keystone
drwx------ 2 mysql mysql      4096 Oct  1  2016 mysql
srwxrwxrwx 1 mysql mysql         0 Feb 16 14:52 mysql.sock
drwx------ 2 mysql mysql      4096 Oct  1  2016 nova
drwx------ 2 mysql mysql      4096 Oct  1  2016 ovs_neutron
-rw-r----- 1 mysql root      38548 Feb 16 14:52 sxun.err
drwx------ 2 mysql mysql      4096 Oct  1  2016 test

生产环境不敢删除,先移动其它地方备份记

 [[email protected] init.d]#mv ibdata*  /root/
 [[email protected] init.d]#mv ib_logfile*   /root/
 [[email protected] init.d]# /etc/init.d/mysqld start
starting mysqld:                   [OK]

服务器的数据库已经是启动起来了,也生成了新的ib*文件。测试一下keystone和nova服务,但是:

[[email protected] instances]# nova-manage service list
CRITICAL nova[req-97fd8f67-8a06-4ab7-b421-01d36bc6ad02 None None] (ProgrammingError) (1146,"Table ‘nova.services‘ doesn‘t exist") ‘SELECT services.created_at ASservices_created_at, services.updated_at AS services_updated_at,services.deleted_at AS services_deleted_at, services.deleted ASservices_deleted, services.id AS services_id, services.host AS services_host,services.`binary` AS services_binary, services.topic AS services_topic,services.report_count AS services_report_count, services.disabled ASservices_disabled, services.disabled_reason AS services_disabled_reason \nFROMservices \nWHERE services.deleted = %s‘ (0,)
  
[[email protected] instances]# keystone user-list
Authorization Failed: An unexpected errorprevented the server from fulfilling your request. (ProgrammingError) (1146,"Table ‘keystone.domain‘ doesn‘t exist") ‘SELECT domain.id ASdomain_id, domain.name AS domain_name, domain.enabled AS domain_enabled,domain.extra AS domain_extra \nFROM domain \nWHERE domain.id = %s‘ (‘default‘,)(HTTP 500)

mysqld起来了,但由于ib*文件已经更换,数据不一样了。nova等各项服务已经出错了, 尝试reboot重启了一下服务器,仍然不行,ib*得还原,但还原又启动不了mysqld了。

直接抄袭主义不行,关键还得想办法:

InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.

问题在于这个错误,数据库非正常关机,然后数据库重启后有一个恢复操作,恢复不了就挂了。

 

后续的解决方案:

1、还原ib*文件,

2、在配置文件加入 不强制恢复数据的 关掉 #innodb_force_recover = 6。

3、启动数据库,mysqldump将数据库导出。
4、删除数据库文件,mysql启动完成后重新导入mysql数据库

同事操的刀,具体操作如下:

[[email protected] mysql(keystone_admin)]#mysqldump -uroot  --all-database  >> my_mysql.dump
-- Warning: Skipping the data of tablemysql.event. Specify the --events option explicitly.
 
[[email protected] mysql(keystone_admin)]#/etc/init.d/mysqld stop
Stopping mysqld:                                          [  OK  ]
 
[[email protected] mysql(keystone_admin)]# rm -rfibdata1 ib_logfile0 ib_logfile1
[[email protected] mysql(keystone_admin)]# vi/etc/my.cnf
[client]
port   = 3306
socket   = /var/lib/mysql/mysql.sock
[mysqld_safe]
socket   = /var/lib/mysql/mysql.sock
[client]
port   = 3306
socket   = /var/lib/mysql/mysql.sock
[mysqld_safe]
socket   = /var/lib/mysql/mysql.sock
nice   = 0
[mysqld]
user   = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket   = /var/lib/mysql/mysql.sock
port     = 3306
basedir  = /usr
datadir  = /var/lib/mysql
tmpdir   = /tmp
skip-external-locking
 
#innodb_force_recover = 6
bind-address    = 0.0.0.0
 
 
key_buffer         = 16M
max_allowed_packet = 16M
thread_stack       = 192K
thread_cache_size  = 8
myisam-recover     = BACKUP
query_cache_limit  = 1M
query_cache_size   = 16M
log_error          = /var/log/mysqld.log
expire_logs_days   = 10
max_binlog_size    = 100M
 
default-storage-engine = InnoDB
 
 
 
[mysqldump]
quick
quote-names
"/etc/my.cnf" 43L, 811C written
 
[[email protected] mysql(keystone_admin)]# mkdirdatabase_bak
[[email protected] mysql(keystone_admin)]# mvcinder/ glance/ keystone/ nova/ ovs_neutron/ database_bak/
[[email protected] mysql(keystone_admin)]# lldatabase_bak/
total 20
drwx------ 2 mysql mysql 4096 Oct 25 15:08cinder
drwx------ 2 mysql mysql 4096 Oct 25 15:08glance
drwx------ 2 mysql mysql 4096 Oct 25 15:08keystone
drwx------ 2 mysql mysql 4096 Oct 25 15:08nova
drwx------ 2 mysql mysql 4096 Oct 25 15:08ovs_neutron
[[email protected] mysql(keystone_admin)]# ll
total 29648
drwxr-xr-x 2 root  root     4096 Apr 20 15:15 aaa
drwxr-xr-x 2 root  root     4096 Apr 20 15:33 bbb
drwxr-xr-x 7 root  root     4096 Apr 20 15:47 database_bak
-rw-r--r-- 1 root  root 29610746 Apr 20 15:45 my_mysql.dump
drwx------ 2 mysql mysql     4096 Oct 25 15:05 mysql
-rw-r----- 1 mysql root     82317 Apr 20 15:46 sxun01.err
-rw-r----- 1 mysql root    637765 Apr 20 15:35 sxun01.err--
drwx------ 2 mysql mysql     4096 Oct 25 15:05 test
[[email protected] mysql(keystone_admin)]#
[[email protected] mysql(keystone_admin)]#
[[email protected] mysql(keystone_admin)]#/etc/init.d/mysqld restart
Stopping mysqld:                                          [  OK  ]
Starting mysqld:                                          [  OK  ]
[[email protected] mysql(keystone_admin)]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 5.1.73 Source distribution
 
Copyright (c) 2000, 2013, Oracle and/or itsaffiliates. All rights reserved.
 
Oracle is a registered trademark of OracleCorporation and/or its
affiliates. Other names may be trademarksof their respective
owners.
 
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ toclear the current input statement.
 
mysql> quit
Bye
[[email protected] mysql(keystone_admin)]# mysql-uroot < my_mysql.dump
[[email protected] mysql(keystone_admin)]#
[[email protected] mysql(keystone_admin)]#
[[email protected] mysql(keystone_admin)]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 93
Server version: 5.1.73 Source distribution
 
Copyright (c) 2000, 2013, Oracle and/or itsaffiliates. All rights reserved.
 
Oracle is a registered trademark of OracleCorporation and/or its
affiliates. Other names may be trademarksof their respective
owners.
 
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ toclear the current input statement.
 
mysql> use nova ;
Reading table information for completion oftable and column names
You can turn off this feature to get aquicker startup with -A
 
Database changed
 
mysql> select * from  instances;
 
mysql> quit
Bye
 
[[email protected] mysql(keystone_admin)]#nova-manage service list
Binary           Host                                 Zone             Status     State Updated_At
nova-consoleauth sxun01                               internal         enabled    XXX  2017-04-20 05:31:48
nova-scheduler   sxun01                               internal         enabled    XXX  2017-04-20 05:31:54
nova-conductor   sxun01                               internal         enabled    :-)  2017-04-20 07:49:07
nova-cert        sxun01                               internal         enabled    XXX  2017-04-20 05:31:55
nova-compute     sxun01                               nova             enabled    XXX  2017-04-20 05:31:53

[[email protected] mysql(keystone_admin)]# reboot
[[email protected] mysql(keystone_admin)]#
Broadcast message from [email protected]
       (/dev/pts/0) at 15:49 ...
 
The system is going down for reboot NOW!
Last login: Thu Apr 20 15:28:26 2017
 
 
[[email protected] ~]# nova-manage service list
Binary           Host                                 Zone             Status     State Updated_At
nova-consoleauth sxun01                               internal         enabled    :-)  2017-04-20 07:53:28
nova-scheduler   sxun01                               internal         enabled    :-)  2017-04-20 07:53:28
nova-conductor   sxun01                               internal         enabled    :-)  2017-04-20 07:53:28
nova-cert        sxun01                               internal         enabled    :-)  2017-04-20 07:53:28
nova-compute     sxun01                               nova             enabled    :-)  2017-04-20 07:53:24

最终结果,可喜可贺。

时间: 2024-10-25 15:18:31

openstack基于mysql的问题修复的相关文章

实现基于mysql验证的vsftpd虚拟用户 (centos6)

实现基于mysql验证的vsftpd虚拟用户 (centos6) 说明:本实验在两台Cento主机上实现,一台作为FTP服务器,一台作为数据库服务器 FTP服务器ip:172.16.250.90 Mysql服务器ip:172.16.252.16 一.安装ftp服务器安装包 yum install vsftpd pam_mysql 二.数据库服务器创建虚拟用户帐号   1.建立虚拟用户数据库      mysql> create database vsftpd;     mysql> show 

Spring mvc整合mybatis基于mysql数据库实现用户增删改查及其分页显示的完整入门实例【转】

Spring mvc整合mybatis例子, 基于mysql数据库实现对用户的增.删.改.查,及分页显示的完整例子. 查询显示用户 添加用户 更新用户 官方验证: 项目截图 必须修改applicationContext.xml中mysql的配置为本地的,否则启动失败. 另外jar包多一个ehcache.jar无关紧要,删除即可. 1. 使用阿里巴巴Druid连接池(高效.功能强大.可扩展性好的数据库连接池.监控数据库访问性能.支持Common-Logging.Log4j和JdkLog,监控数据库

FTP服务学习笔记之基于MySQL+PAM的vsftpd虚拟用户

基于mysql+PAM的vsftpd虚拟用户配置 一.实验说明 操作系统:Redhat5.8_X64bit 实验平台:VMware Workstation 所需要的软件包:pam_mysql-0.7RC1.tar.gz 二.安装所需要程序 1.事先安装好开发环境和mysql数据库 # yum -y groupinstall "Development Tools" "Development Libraries" #yum -y install mysql-server

基于MySQL元数据的Hive的安装和简单测试

引言: Hive是一种强大的数据仓库查询语言,类似SQL,本文将介绍如何搭建Hive的开发测试环境. 1. 什么是Hive? hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析. 2.  按照Hive的准备条件 2.1  Hadoop集

在Jena框架下基于MySQL数据库实现本体的存取操作

在Jena框架下基于MySQL数据库实现本体的存取操作 转自:http://blog.csdn.net/jtz_mpp/article/details/6224311 最近在做一个基于本体的管理系统.其中对本体的操作部分,我使用的是Jena框架:数据模型是基于本体的语义模型:数据存储则是MySQL 5.5.9版本.由此看来,将本体模型存入数据库和从数据库中取出模型是常用的操作,这里总结一下我学到的方法. 我使用的开发环境是Eclipse3.6,在开发前要将必要的与jena有关的类包加入java

《奥威Power-BI基于MySQL数据源制作报表》腾讯课程开课啦

前阵子奥威公开课讲过基于oracle数据源制作报表,有些宝宝就有小情绪了:简直就是不把我MySQL放在眼里嘛!oracle和MySQL一直以来被大家对比了很多次,同属于 Oracle 旗下产品,本是同根生,相煎何太急?这oracle和MySQL各有千秋,有着不同的侧重点和各自的小成就.为了我们的MySQL铁粉们,奥威软件决定这次就来讲一讲MySQL咯! 讲师介绍:李显斯 多年的甲方.乙方工作经验,熟悉企业的业务流程,主要从事数据库.BI开发,对ETL.数据仓库技术有着丰富的经验. 直播时间:20

SVN基于MYSQL认证

SVN的简介和工作原理 Subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件.Subversion支持linux和windows,但是普通应用在Linux上. SVN主要是通过两种方式来工作:即是通过独立服务器和依赖Apache方式来工作. SVN的作用体现如下方面 1.解决代码管理紊乱的问题. 2.解决代码冲突的问题. 3.解决代码拥有者对代码权限的控制. 系统环境:CentOS release 6.5 (Fina

基于MySQL认证的邮件系统

经过几天的学习和研究,终于完成了基于MySQL的虚拟账号认证的邮件系统的搭建.发现搭建邮件系统及庞大而又复杂,涉及到多方面的知识:DNS的搭建,服务脚本的编写,证书加密原理,数据库的搭建,垃圾邮件的过滤等等.关于其中涉及到的相关独立知识点,之后会单独写日志.另外,需要说明的是本技术文档,基本上全部是使用的最新版本,核心软件全部使用源码包编译安装.其中,也包括搭建过程中遇到的各种问题的解决方法. 所需源码软件:    postfix-2.10.0.tar.gz    cyrus-sasl-2.1.

python基于mysql实现的简单队列以及跨进程锁

在我们做多进程应用开发的过程中,难免会遇到多个进程访问同一个资源(临界资源)的状况,必须通过加一个全局性的锁,来实现资源的同步访问(同一时间只能有一个进程访问资源). 举个例子: 假设我们用mysql来实现一个任务队列,实现的过程如下: 1. 在Mysql中创建Job表,用于储存队列任务,如下: create table jobs( id auto_increment not null primary key, message text not null, job_status not null