openstack基于mysql的问题修复

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

远程引导同事检查故障。

[root@localhost ~]# nova-manage service list

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

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

[root@sxun init.d]# /etc/init.d/openstack-keystone status
keystone (pid  12593) is running...
[root@sxun init.d]# /etc/init.d/openstack-nova-api status
openstack-nova-api (pid  7446) is running...
[root@sxun init.d]# /etc/init.d/openstack-nova-compute status
openstack-nova-compute (pid  11728) is running...
[root@sxun init.d]# /etc/init.d/openstack-nova-conductor status
openstack-nova-conductor (pid  7704) is running...
[root@sxun init.d]# /etc/init.d/mysqld status
mysql is stoppd
[root@sxun 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* ,
所有的日志。
重启后可启动数据库,因数据库是非正常关闭引起的。所有会造成数据丢失。要做好备份工作

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

[root@sxun 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

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

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

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

[root@sxun 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,)[root@sxun 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数据库

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

[root@sxun01 mysql(keystone_admin)]#mysqldump -uroot  --all-database  >> my_mysql.dump
-- Warning: Skipping the data of tablemysql.event. Specify the --events option explicitly.[root@sxun01 mysql(keystone_admin)]#/etc/init.d/mysqld stop
Stopping mysqld:                                          [  OK  ][root@sxun01 mysql(keystone_admin)]# rm -rfibdata1 ib_logfile0 ib_logfile1
[root@sxun01 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.0key_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    = 100Mdefault-storage-engine = InnoDB[mysqldump]
quick
quote-names
"/etc/my.cnf" 43L, 811C written[root@sxun01 mysql(keystone_admin)]# mkdirdatabase_bak
[root@sxun01 mysql(keystone_admin)]# mvcinder/ glance/ keystone/ nova/ ovs_neutron/ database_bak/
[root@sxun01 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
[root@sxun01 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
[root@sxun01 mysql(keystone_admin)]#
[root@sxun01 mysql(keystone_admin)]#
[root@sxun01 mysql(keystone_admin)]#/etc/init.d/mysqld restart
Stopping mysqld:                                          [  OK  ]
Starting mysqld:                                          [  OK  ]
[root@sxun01 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 distributionCopyright (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
[root@sxun01 mysql(keystone_admin)]# mysql-uroot < my_mysql.dump
[root@sxun01 mysql(keystone_admin)]#
[root@sxun01 mysql(keystone_admin)]#
[root@sxun01 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 distributionCopyright (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 -ADatabase changedmysql> select * from  instances;mysql> quit
Bye[root@sxun01 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[root@sxun01 mysql(keystone_admin)]# reboot
[root@sxun01 mysql(keystone_admin)]#
Broadcast message from root@sxun01(/dev/pts/0) at 15:49 ...The system is going down for reboot NOW!
Last login: Thu Apr 20 15:28:26 2017[root@sxun01 ~]# 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

最终结果,可喜可贺。

转载于:https://blog.51cto.com/fzhddn/1917888

openstack基于mysql的问题修复相关推荐

  1. SpringSecurity实战:基于mysql自定义SpringSecurity权限认证规则

    上文<Spring Security 源码分析:Spring Security 授权过程>已经详细分析了Spring Security 授权过程,接下来通过上文的授权过程我们可以自定义授权 ...

  2. linux ftp 团队认证,linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建

    linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建 1.FTP协议:有命令和数据连接两种 命令连接,控制连接:21/tcp 数据连接: 主动模式,运行在20/tcp端口 和 ...

  3. 如何基于MySQL及Redis搭建统一的kv存储服务 | 秦波

    一.MySQL+Redis常用部署方式 1.1  拓扑 1.2  特点 业务层通过双写同时写MySQL及Redis.读通常在Redis,若读取不到,则从MySQL读取,然后将数据同步到Redis,Re ...

  4. mysql分布式数据库实践论文_新浪微博基于MySQL的分布式数据库实践

    提起微博,相信大家都是很了解的.但是有谁知道微博的数据库架构是怎样的呢?在今天举行的2011数据库技术大会上,新浪首席DBA杨海潮为我们详细解读了新浪微博的数据库架构--基于MySQL的分布式数据库实 ...

  5. 秒杀 mysql 事务_秒杀怎么样才可以防止超卖?基于mysql的事务和锁实现

    Reference:  http://blog.ruaby.com/?p=256 并发事务处理带来的问题? 相对于串行处理来说,并发事务处理能大大增加数据库资源的利用率,提高数据库系统的事务吞吐量,从 ...

  6. elasticsearch 数据类型_基于 MySQL Binlog 的 Elasticsearch 数据同步实践

    来源;马蜂窝 一.背景 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存 ...

  7. 基于 MySQL Binlog 的 Elasticsearch 数据同步实践

    一.为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存储业务数 ...

  8. mysql php 新手卡生成_PHPMaker(基于MYSQL数据库自动生成PHP 脚本的软件)

    PHPMaker 注册版是一款PHP代码自动生成工具,一款在Windows平台上运行的基于MYSQL数据库自动生成PHP脚本的软件.使用生成的PHP代码,你可以通过WEB网页 对数据库的记录进行浏览. ...

  9. SQL注入-基于MySQL的注入提权(十七)

    实验目的(我的2003是32位的懒得搞了,大家参照一下吧) 普及结合dll文件对Windows系统进行启动项提权.MOF和UDF提权的基本思路,以及提权的主要方法.PS:面试时不要说打靶场什么东西,就 ...

最新文章

  1. 【VB6笔记-01】 读取Excel绑定到DataGrid
  2. Linux命令行–基本的bash shell命令
  3. PHP大文件分片上传
  4. Linux学习之CentOS(五)--让我有些郁闷的mount命令
  5. 深入理解Spark 2.1 Core (八):Standalone模式容错及HA的原理与源码分析
  6. Verilog HDL语言实现ROM、RAM+有限状态机
  7. python 发送邮件不显示附件_求助:写python脚本发 带有附件的邮件, 收到邮件后,发现附件直接显示在屏幕上了,而不是以附件形式...
  8. 4.c++模式设计-建造者模式
  9. go 查找模块位置_如何使用Go语言插件功能?
  10. C 语言传递数组给函数的三种形式
  11. 使用 Maven Profile 和 Filtering 打各种环境的包(转)
  12. Bailian3858 和数【暴力+集合】
  13. HttpCanary使用指南——静态注入器
  14. 源码方式安装nginx及其依赖并设置服务开机启动
  15. mysql 绿色版的安装过程和配置
  16. No matching provisioning profile found: Your build settings specify a provis...
  17. 梦幻仙缘剧情java_BT版梦幻仙缘下载_最新变态版梦幻仙缘公益服下载安装_高手游...
  18. 网贷风控体系之-决策引擎
  19. 如何用一个鼠标控制多台电脑?
  20. echarts绘制四川地图

热门文章

  1. GDCM:使用Stream Image Writer伪造图像的测试程序
  2. Boost::context模块callcc的斐波那契测试程序
  3. C++类的Const数组的初始化
  4. VTK:可视化之RandomProbe
  5. VTK:可视化之ColorAnActor
  6. VTK:可视化之CursorShape
  7. VTK:Medical之MedicalDemo3
  8. Qt Creator使用文本编辑宏
  9. Qt Creator导入3D资产Importing 3D Assets
  10. C++两个整数的总和是否为整数溢出的算法实现(附完整源码)