Mysql cannot allocate memory for the buffer pool 解决方法

今天打开网站提示数据库连接失败,吓我一跳,赶紧查日志,果然数据库服务挂了,具体日志如下

190605 8:35:19 [Note] /usr/libexec/mysqld (mysqld 5.5.56-MariaDB) starting as process 10509 …
190605 8:35:19 InnoDB: The InnoDB memory heap is disabled
190605 8:35:19 InnoDB: Mutexes and rw_locks use GCC atomic builtins
190605 8:35:19 InnoDB: Compressed tables use zlib 1.2.7
190605 8:35:19 InnoDB: Using Linux native AIO
190605 8:35:19 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137756672 bytes) failed; errno 12
190605 8:35:19 InnoDB: Completed initialization of buffer pool
190605 8:35:19 InnoDB: Fatal error: cannot allocate memory for the buffer pool
190605 8:35:19 [ERROR] Plugin ‘InnoDB’ init function returned error.
190605 8:35:19 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
190605 8:35:19 [ERROR] mysqld: Out of memory (Needed 128917504 bytes)
190605 8:35:19 [Note] Plugin ‘FEEDBACK’ is disabled.
190605 8:35:19 [ERROR] Unknown/unsupported storage engine: InnoDB
190605 8:35:19 [ERROR] Aborting

190605 8:35:19 [Note] /usr/libexec/mysqld: Shutdown complete

190605 08:35:19 mysqld_safe mysqld from pid file /var/run/mariadb/mariadb.pid ended

大致的意思,就是没法为缓存池分配128M的内存。这个嘛,可以理解,这台主机只有1G内存,好吧,查查资料,说这个缓存池主要用来缓存innodb的索引,好了,不废话了,怎么解决呢

在配置文件中,有一个选项是用来调整缓存大小的,如果你没有这个选项,或者注释了,那默认就是128M,具体你可以去查查文档。所以,你要么把这个值改小一点,比如50M。我选择重启服务器。

innodb_buffer_pool_size = 128M

如果你还要进一步优化,很简单:1,加内存;2,加虚拟缓存。后者治标,前者治本。

Posted in mysql | Tagged | Leave a comment

redis报错槽被占用 ERR Slot 741 is already busy (Redis::CommandError)

该错误是因为原来的节点非空,如果已经备份了数据,并且需要重新创建集群,可以尝试以下操作:

1清空数据 flushall

2重置节点

cluster reset

Posted in reids | Tagged | Leave a comment

redis报错节点非空[ERR] Node is not empty. Either the node already knows other nodes

如果重新创建集群,需要先清空数据,否则集群创建失败,具体方法如下:

1)、将需要新增的节点下aof、rdb等本地备份文件删除;

2)、同时将新Node的集群配置文件删除,即:删除你redis.conf里面cluster-config-file所在的文件;

3)、再次添加新节点如果还是报错,则登录新Node,./redis-cli–h x –p对数据库进行清除:

192.168.xx.xx:7001> flushdb #清空当前数据库

Posted in reids | Tagged | Leave a comment

查看gitlab版本号

#查看PostgreSQL版本

/opt/gitlab/embedded/bin/psql –version

#查看gitlab的版本

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

Posted in gitlab | Tagged | Leave a comment

gitlab报错404的解决方法

之前创建了项目之后,今天重启了服务器,点击项目URL报错404

谷歌了很多资料,最后觉得靠谱的还是缓存问题,按照下面小哥的方法清了下缓存,就可以了

A gitlab-rake cache:clear solves this issue immediately, so the problem is apparently an incoherent cache.

It is reproducible, a formerly renamed or deleted project triggers the cached 404.

原文的连接如下:

https://gitlab.com/gitlab-com/support-forum/issues/561

Posted in gitlab | Tagged | Leave a comment

svn精细配置各个目录的权限

首先给大家看下目录结构,再多级的目录也是一样的方法

先简要介绍下结构,IT管理只能项目管理员来看,常用资料就是管理员能上传,其他用户只能读,研发管理,所以用户都能写。

我这里是直接在根下创建/svn总的大目录,进入/svn,再用svnadmin创建一个project的版本库,如果你要创建多个也可以,这个命令太简单了,我不详细介绍了,不知道的自行百度。

svnadmin create project

配置好3个配置文件:svnserver authz passwd

[root@svn ~]# ll /svn/project/conf/
total 12
-rw-r–r– 1 root root 1328 May 30 23:12 authz
-rw-r–r– 1 root root 371 May 30 22:54 passwd
-rw-r–r– 1 root root 3079 May 30 22:35 svnserve.conf

其中svnserver.conf配置的是版本库本身的信息,如果这个配置文件又改动,需要重启svn服务。authz配置的是文件夹的权限,passwd存放的是用户的用户名和密码,这2个配置文件改动之后,不需要重启svn服务。

首先看svnserve.conf这个配置文件,要写明全局的权限,以及auth和passwd的路径,这个路径是从conf/这一级目录开始算的,你换成其他路径也可以

[root@svn ~]# egrep -v “^#|^$” /svn/project/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = Hi,baby,what`s up?
[sasl]
[root@svn ~]#

passwd,创建几个用户,我就随便乱写几个了,注意所有的配置都必须顶格写,等号两边规范的写法应该用空格

[users] 
admin = admin 
management = management 
zhangsan = zhangsan

auth,配置每个文件夹的详细权限

注意,[groups]里面可以创建权限组,左边是组名,右边是用户名,我只是恰好用户名和组名一样。下面就是各个文件夹的详细权限。 [/IT管理]代表的是project项目下面的 IT管理 文件夹。

注意,这里有个大坑,目录结构应该是使用admin用户,把项目checkout之后,去项目里面创建的文件夹结构,然后再去提交,不是在服务端用mkdir的方法去创建文件夹。由于第一次使用svn,我研究了半天才明白,百度上也没搜到,希望其他初学者不要犯我的错误了。

# admin=rw表示admin有读写的权限

# *=r表示其他人只能读

# *= 表示其他人什么权限都没有

[root@svn ~]# egrep -v “^#|^$” /svn/project/conf/authz
[aliases]
[groups]
admin = admin
management = management
user = zhangsan
[/]
* = r
@admin = rw
[/IT管理]
@admin = rw
@management = rw
* =
[/常用资料]
@admin = rw
@management = rw
@user = r
* =
[/研发管理]
@admin = rw
@management = rw
@user = rw
* =

完成之后,使用svnserve -d -r /svn 启动版本库

检查端口号

[root@svn ~]# ps -aux | grep svnserve
root 1317 0.0 0.0 186880 1088 ? Ss 01:14 0:00 svnserve -d -r /svn/
root 4516 0.0 0.0 112660 972 pts/2 R+ 02:38 0:00 grep –color=auto svnserve

可以看到,服务已经起来了

剩下的就是去使用了

 

 

 

Posted in svn | Tagged | Leave a comment

openstack服务down时的几种情况

openstack组件很多,依赖的服务也很多,所以当出现服务down时,尤其是重启真机后,服务down了,不要惊慌失措,先好好检查以下服务:

(转载自:https://blog.csdn.net/Poo_Chai/article/details/80887070)

当Openstack不正常工作时,首先查看下服务状态,比如执行nova service-list命令查看Nova相关的服务状态。
如果服务状态为down,根据Openstack服务的心跳机制和状态监控原理,可能有以下几种故障情形:

1. 数据库访问错误导致心跳更新失败,这种情况看日志就能发现错误日志。

mysql -p -u root

2. Rabbitmq连接失败,nova-compute不能直接访问数据库,更新时是通过RPC调用nova-conductor完成的,如果rabbitmq连接失败,RPC将无法执行,导致心跳发送失败。
3. nova-conductor故障,原因同上,不过这种情况概率很低,除非人为关闭了该服务。
4. 时间不同步。这种情况排查非常困难,因为你在日志中是发现不了任何错误信息的,我们知道数据库操作由nova-conductor组件完成的,而计算心跳间隔是在nova-api服务完成的,假如这两个服务所在的主机时间不同步,将可能导致服务误判为down。对于多API节点部署时尤其容易出现这种情况,所有节点务必保证时间同步,NTP服务必须能够正常工作,否则将影响Openstack服务的心跳机制和状态监控。

Posted in OpenStack | Tagged | Leave a comment

svn的日常操作

有大神已经翻译好了,点击传送:

https://blog.csdn.net/happy4nothing/article/details/376604

Posted in svn | Tagged | Leave a comment

TortoiseSVN更换或重置登录用户

不管什么原因,使用TortoiseSVN总是有需要更换用户的时候,这个时候需要去设置里面清除存储的认证信息:

(1)开始菜单打开 setting

(2)选择左边的saved data

(3)点击authentication data 右边的clear 或者 clear all

(4)重新登陆的时候就会有登陆提示了

Posted in svn | Tagged | Leave a comment

如何查看yum安装软件时,软件下载的位置

1、首先查看一下配置文件:

[root@localhost packages]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever #下载包的缓存地址,可以设置
keepcache=0 #这个说明没有存,一安装完就自动删除了,如果要保留,改为1
debuglevel=2
logfile=/var/log/yum.log #yum日志文件
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

2、查看yum缓存文件:

[root@localhost packages]# cd /var/cache/yum

Posted in LinuxBasic | Tagged | Leave a comment