dedecms生成文书档案数据库崩溃,上崩溃难题处理方案

By admin in 美高梅手机版4858 on 2019年3月25日

 迁移的网站生成文书档案到叁分一左右的时候报错:

环境为CentOS系统,1G内存,Mysql5.5.30。
在/etc/my.cnf内添加:

环境为CentOS系统,1G内存,Mysql5.5.30。
在/etc/my.cnf内添加:

引言

Error infos:德德Cms错误警告:连接数据库退步大概是数据库密码不对或数据库服务器出错!

复制代码 代码如下:

复制代码 代码如下:

近些年博客又抽风了,打开主页后提示 Error Establishing a Database
Connection 。仔细思忖,应该正是数据库服务器 mariadb
挂了;往日也赶上过类似的题材。经过分析日志,并结成网上的材料最终消除了难题。

火大,登陆MySQL发现

skip-external-locking
skip-name-resolve
max_connections = 1024
query_cache_dedecms生成文书档案数据库崩溃,上崩溃难题处理方案。size = 16M
sort_buffer_size = 1M
table_cache = 256
innodb_buffer_pool_size = 128M
innodb_additional_mem_pool_size = 4M
innodb_log_file_size = 128M
innodb_log_files_in_group = 2
innodb_log_buffer_size = 2M
innodb_flush_log_at_trx_commit = 1

skip-external-locking
skip-name-resolve
max_connections = 1024
query_cache_size = 16M
sort_buffer_size = 1M
table_cache = 256
innodb_buffer_pool_size = 128M
innodb_additional_mem_pool_size = 4M
innodb_log_file_size = 128M
innodb_log_files_in_group = 2
innodb_log_buffer_size = 2M
innodb_flush_log_at_trx_commit = 1

日志

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket
‘/var/lib/mysql/mysql.sock’

修改前先将mysql服务结束:
service mysqld restart
是因为修改了日记大小重启会报错:
130319 04:45:14 mysqld_safe mysqld from pid file
/var/run/mysqld/mysqld.pid ended
130319 05:02:43 mysqld_safe Starting mysqld daemon with databases from
/var/lib/mysql
130319 5:02:54 [Note] Plugin ‘FEDERATED’ is disabled.
130319 5:02:59 InnoDB: The InnoDB memory heap is disabled
130319 5:02:59 InnoDB: Mutexes and rw_locks use InnoDB’s own
implementation
130319 5:02:59 InnoDB: Compressed tables use zlib 1.2.3
130319 5:02:59 InnoDB: Using Linux native AIO
130319 5:03:01 InnoDB: Initializing buffer pool, size = 128.0M
130319 5:03:02 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880
bytes
InnoDB: than specified in the .cnf file 0 134217728 bytes!
130319 5:03:02 [ERROR] Plugin ‘InnoDB’ init function returned error.
130319 5:03:02 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE
ENGINE failed.
130319 5:03:02 [ERROR] Aborting
将/var/lib/mysql下本来的ib_logfile0、ib_logfile1删除再重启mysql。
service mysqld start
健康运行:
130319 05:20:59 mysqld_safe mysqld from pid file
/var/run/mysqld/mysqld.pid ended
130319 05:22:53 mysqld_safe Starting mysqld daemon with databases from
/var/lib/mysql
130319 5:22:56 [Note] Plugin ‘FEDERATED’ is disabled.
130319 5:22:57 InnoDB: The InnoDB memory heap is disabled
130319 5:22:57 InnoDB: Mutexes and rw_locks use InnoDB’s own
implementation
130319 5:22:57 InnoDB: Compressed tables use zlib 1.2.3
130319 5:22:57 InnoDB: Using Linux native AIO
130319 5:22:57 InnoDB: Initializing buffer pool, size = 128.0M
130319 5:22:57 InnoDB: Completed initialization of buffer pool
130319 5:22:57 InnoDB: highest supported file format is Barracuda.
130319 5:22:58 InnoDB: Waiting for the background threads to start
130319 5:22:59 InnoDB: 5.5.30 started; log sequence number 2621452
130319 5:22:59 [Note] Server hostname (bind-address): ‘0.0.0.0’; port:
3306
130319 5:22:59 [Note] – ‘0.0.0.0’ resolves to ‘0.0.0.0’;
130319 5:22:59 [Note] Server socket created on IP: ‘0.0.0.0’.
130319 5:23:00 [Warning] ‘proxies_priv’ entry ‘@ root@server08’
ignored in –skip-name-resolve mode.
130319 5:23:04 [Note] Event Scheduler: Loaded 0 events
130319 5:23:04 [Note] /usr/libexec/mysqld: ready for connections.
Version: ‘5.5.30’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306 MySQL
Community Server (GPL) by Remi
选择mysqladmin variables命令可查看全部参数变量。

修改前先将mysql服务结束:
service mysqld restart
鉴于修改了日记大小重启会报错:
130319 04:45:14 mysqld_safe mysqld from pid file
/var/run/mysqld/mysqld.pid ended
130319 05:02:43 mysqld_safe Starting mysqld daemon with databases from
/var/lib/mysql
130319 5:02:54 [Note] Plugin ‘FEDERATED’ is disabled.
130319 5:02:59 InnoDB: The InnoDB memory heap is disabled
130319 5:02:59 InnoDB: Mutexes and rw_locks use InnoDB’s own
implementation
130319 5:02:59 InnoDB: Compressed tables use zlib 1.2.3
130319 5:02:59 InnoDB: Using Linux native AIO
130319 5:03:01 InnoDB: Initializing buffer pool, size = 128.0M
130319 5:03:02 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880
bytes
InnoDB: than specified in the .cnf file 0 134217728 bytes!
130319 5:03:02 [ERROR] Plugin ‘InnoDB’ init function returned error.
130319 5:03:02 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE
ENGINE failed.
130319 5:03:02 [ERROR] Aborting
将/var/lib/mysql下本来的ib_logfile0、ib_logfile1删除再重启mysql。
service mysqld start
常规运行:
130319 05:20:59 mysqld_safe mysqld from pid file
/var/run/mysqld/mysqld.pid ended
130319 05:22:53 mysqld_safe Starting mysqld daemon with databases from
/var/lib/mysql
130319 5:22:56 [Note] Plugin ‘FEDERATED’ is disabled.
130319 5:22:57 InnoDB: The InnoDB memory heap is disabled
130319 5:22:57 InnoDB: Mutexes and rw_locks use InnoDB’s own
implementation
130319 5:22:57 InnoDB: Compressed tables use zlib 1.2.3
130319 5:22:57 InnoDB: Using Linux native AIO
130319 5:22:57 InnoDB: Initializing buffer pool, size = 128.0M
130319 5:22:57 InnoDB: Completed initialization of buffer pool
130319 5:22:57 InnoDB: highest supported file format is Barracuda.
130319 5:22:58 InnoDB: Waiting for the background threads to start
130319 5:22:59 InnoDB: 5.5.30 started; log sequence number 2621452
130319 5:22:59 [Note] Server hostname (bind-address): ‘0.0.0.0’; port:
3306
130319 5:22:59 [Note] – ‘0.0.0.0’ resolves to ‘0.0.0.0’;
130319 5:22:59 [Note] Server socket created on IP: ‘0.0.0.0’.
130319 5:23:00 [Warning] ‘proxies_priv’ entry ‘@
[email protected]’
ignored in –skip-name-resolve mode.
130319 5:23:04 [Note] Event Scheduler: Loaded 0 events
130319 5:23:04 [Note] /usr/libexec/mysqld: ready for connections.
Version: ‘5.5.30’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306 MySQL
Community Server (GPL) by Remi
应用mysqladmin variables命令可查阅全部参数变量。

以下是 mariadb
服务器挂掉时的相比较关键的日记音讯,从底下的日记音讯中,大家能够很不难地看出由于内部存款和储蓄器不足,从而致使数据库服务器运行时崩溃。

service mysqld restart 重启退步:mysql daemon failed to start

InnoDB引擎配置优化 innodb_buffer_pool_size=1G
//二个Innodb最重点的参数,这几个参数和MyISAM的key_buffer_size有相似之处,但也是有反差的。那个参数首要缓存innodb表的目录,数据,插入数据时的缓冲,设置得越大,存取表里面数据时所须求的磁盘I/O越少,一般是内部存款和储蓄器的2/4,不当先2G,否则系统会崩溃。为Innodb加快优化首要参数。该参数分配内部存储器的基准:那么些参数默许分配只有8M,能够视为相当小的八个值。如若是一个专用DB服务器,那么她能够占到内部存储器的7/10-五分之四。这些参数不能动态更改,所以分配需多着想。分配过大,会使Swap占用过多,致使Mysql的询问特慢。若是您的多少比较小,那么可分配是你的多寡大小+10%左右做为那一个参数的值。
比如:数据大小为50M,那么给那几个值分配innodb_buffer_pool_size=64M
innodb_additional_mem_pool_size=16M
//用来存放Innodb的内部目录那个值不用分配太大,系统能够自行调。不用安装太高。平时相比较大数目设置16M丰盛了,假设表比较多,能够确切的叠加。如若这一个值自动扩大,会在error
log有中显示的。
innodb_log_file_size=256M
//在日志组中各种日志文件的分寸,一般是innodb_buffer_pool_size的25%,官方推荐是innodb_buffer_pool_size的40-3/6。一般控制在多少个LOG文件相加大小在2G以内为佳。具体情状还索要看您的业务大小,数据大小为基于。表明:那些值分配的轻重和数据库的写入速度,事务大小,非常重启后的回涨有相当的大的关联。
innodb_log_files_in_group=2
//钦赐你有多少个日志组。分配原则:一般大家能够用2-3个日值组。暗中认可为八个。
innodb_log_buffer_size=3M
//事务在内存中的缓冲。分配原则:控制在2-8M.那几个值不用太多的。他中间的内部存款和储蓄器一般一秒钟写到磁盘一遍。具体写入措施和你的事体提交格局有关。在oracle等数据库明白那一个,一般最大钦定为3M比较确切。
innodb_flush_logs_at_trx_commit=0
//控制工作的交给情势分配原则:这几个参数只有3个值,0,1,2请确认一下自已能接受的级别。暗中认可为1,主库请不要转移了。品质更高的能够安装为0或是2,但会丢掉一分钟的事情。表明:这几个参数的安装对Innodb的属性有不小的熏陶,所以在此处给多说多美滋(Dumex)下。当以此值为1时:innodb
的工作LOG在每一趟提交后写入日值文件,并对日值做刷新到磁盘。这一个能够完结不丢任何三个业务。当那么些值为2时:在每一个提交,日志缓冲被写到文件,但狼狈日志文件做到磁盘操作的基础代谢,在对日记文件的刷新在值为2的景况也每秒产生一遍。但须要注意的是,由于经过调用方面包车型地铁标题,并不能够确定保证每秒100%的发出。从而在性质上是最快的。但操作系统崩溃或掉电才会去除最终一秒的事务。当这么些值为0时:日志缓冲每秒贰各处被写到日志文件,并且对日记文件做到磁盘操作的基础代谢,不过在2个工作提交不做别的操作。mysqld进程的崩溃会删除崩溃前最终一秒的工作。

InnoDB引擎配置优化 innodb_buffer_pool_size=1G
//一个Innodb最要害的参数,这么些参数和MyISAM的key_buffer_size有相似之处,但也是有反差的。那么些参数重要缓存innodb表的目录,数据,插入数据时的缓冲,设置得越大,存取表里面数据时所急需的磁盘I/O越少,一般是内部存款和储蓄器的50%,不抢先2G,不然系统会崩溃。为Innodb加速优化首要参数。该参数分配内部存款和储蓄器的规则:这一个参数暗许分配唯有8M,可以算得相当小的3个值。假诺是三个专用DB服务器,那么他得以占到内部存款和储蓄器的十分七-4/5。那个参数不可能动态更改,所以分配需多考虑。分配过大,会使Swap占用过多,致使Mysql的查询特慢。借使你的多寡比较小,那么可分配是你的数据大小+10%左右做为这几个参数的值。
例如:数据大小为50M,那么给那么些值分配innodb_buffer_pool_size=64M
innodb_additional_mem_pool_size=16M
//用来存放Innodb的里边目录那么些值不用分配太大,系统能够活动调。不用安装太高。常常相比大数量设置16M足足了,若是表相比多,能够适合的附加。要是那几个值自动增加,会在error
log有中突显的。
innodb_log_file_size=256M
//在日志组中每种日志文件的分寸,一般是innodb_buffer_pool_size的百分之二十五,官方推荐是innodb_buffer_pool_size的40-50%。一般控制在多少个LOG文件相加大小在2G以内为佳。具体意况还索要看您的业务大小,数据大小为基于。表达:那一个值分配的轻重和数据库的写入速度,事务大小,分外重启后的回涨有相当的大的涉及。
innodb_log_files_in_group=2
//钦点你有多少个日志组。分配原则:一般我们能够用2-3个日值组。暗中认可为四个。
innodb_log_buffer_size=3M
//事务在内部存款和储蓄器中的缓冲。分配原则:控制在2-8M.这几个值不用太多的。他中间的内部存款和储蓄器一般一分钟写到磁盘二回。具体写入措施和你的思想政治工作提交格局有关。在oracle等数据库领悟这一个,一般最大内定为3M比较安妥。
innodb_flush_logs_at_trx_commit=0
//控制工作的交给格局分配原则:这一个参数唯有3个值,0,1,2请确认一下自已能接受的级别。默许为1,主库请不要转移了。品质更高的能够安装为0或是2,但会丢掉一分钟的事情。表明:那些参数的安装对Innodb的脾性有十分的大的熏陶,所以在此间给多说Bellamy(Bellamy)下。当以此值为1时:innodb
的工作LOG在每一趟提交后写入日值文件,并对日值做刷新到磁盘。那一个能够做到不丢任何三个业务。当这几个值为2时:在各样提交,日志缓冲被写到文件,但难堪日志文件做到磁盘操作的基础代谢,在对日记文件的刷新在值为2的图景也每秒产生三遍。但供给注意的是,由于经过调用方面包车型地铁标题,并不能够确认保证每秒100%的发出。从而在性质上是最快的。但操作系统崩溃或掉电才会去除末了一秒的事情。当那些值为0时:日志缓冲每秒三回地被写到日志文件,并且对日记文件做到磁盘操作的基础代谢,可是在3个工作提交不做其它操作。mysqld进度的崩溃会删除崩溃前最终一秒的作业。

InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files…
InnoDB: Restoring possible half-written data pages from the
doublewrite
InnoDB: buffer…
160919  2:47:12  InnoDB: Waiting for the background threads to start
160919  2:47:13 Percona XtraDB (http://www.percona.com) 5.5.46-MariaDB-37.6 started; log sequence
number 352718445
160919  2:47:13 [ERROR] mysqld: Out of memory (Needed 128917504
bytes)
160919  2:47:13 [Note] Plugin ‘FEEDBACK’ is disabled.
160919  2:47:13 [Note] Server socket created on IP: ‘0.0.0.0’.
160919  2:47:13 [Note] Event Scheduler: Loaded 0 events
美高梅手机版4858 ,160919  2:47:13 [Note] /usr/libexec/mysqld: ready for connections.
Version: ‘5.5.47-MariaDB’  socket: ‘/var/lib/mysql/mysql.sock’  port:
3306  MariaDB Server
160919 02:47:35 mysqld_safe Number of processes running now: 0
160919 02:47:35 mysqld_safe mysqld restarted
160919  2:47:35 [Note] /usr/libexec/mysqld (mysqld 5.5.47-MariaDB)
starting as process 28614 …
160919  2:47:35 InnoDB: The InnoDB memory heap is disabled
160919  2:47:35 InnoDB: Mutexes and rw_locks use GCC atomic builtins
160919  2:47:35 InnoDB: Compressed tables use zlib 1.2.7
160919  2:47:35 InnoDB: Using Linux native AIO
160919  2:47:35 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137756672 bytes) failed; errno 12
160919  2:47:35 InnoDB: Completed initialization of buffer pool
160919  2:47:35 InnoDB: Fatal error: cannot allocate memory for the
buffer pool
160919  2:47:35 [ERROR] Plugin ‘InnoDB’ init function returned
error.
160919  2:47:35 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE
ENGINE failed.
160919  2:47:35 [ERROR] mysqld: Out of memory (Needed 128917504
bytes)
160919  2:47:35 [ERROR] mysqld: Out of memory (Needed 96681984
bytes)
160919  2:47:35 [ERROR] mysqld: Out of memory (Needed 72499200
bytes)
160919  2:47:35 [Note] Plugin ‘FEEDBACK’ is disabled.
160919  2:47:35 [ERROR] Unknown/unsupported storage engine: InnoDB
160919  2:47:35 [ERROR] Aborting

cat /var/log/mysqld.log 发现:

你可能感兴趣的小说:

  • MySQL的常见存款和储蓄引擎介绍与参数设置调优
  • MySQL存款和储蓄引擎基础知识
  • Mysql更换MyISAM存款和储蓄引擎为Innodb的操作记录计算
  • MySQL存储引擎中MyISAM和InnoDB差距详解
  • MySQL存款和储蓄引擎中的MyISAM和InnoDB不相同详解
  • Mysql存款和储蓄引擎InnoDB和Myisam的六大分别
  • Mysql
    的囤积引擎,myisam和innodb的区分
  • MySQL存款和储蓄引擎计算
  • MySQL Memory 存储引擎浅析
  • 浅谈MySQL存款和储蓄引擎选拔InnoDB与MyISAM的得失分析
  • MySQL常用存款和储蓄引擎功用与用法详解

在/etc/my.cnf内添加: 复制代码 代码如下: skip-external-locking
skip-name-resolve max_connections = 1024 query_cache_s…

解决

 [NOTE] InnoDB: Initializing buffer pool, size = 128.0M
 [NOTE] InnoDB: mmap(137363456 bytes) failed; errno 12
 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
 [ERROR] Plugin ‘InnoDB’ init function returned error.
 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
 [ERROR] Unknown/unsupported storage engine: InnoDB
 [ERROR] Aborting

在选取 free -m 查看内部存款和储蓄器消息时,发现 swap 分区大小为
0。难怪说数据库服务器相当的小概运行呢,在内部存款和储蓄器不够用的情景下,又一点都不大概选择 swap
分区,自然崩溃了。由于 VPS 使用了
SSD,质量自然毋庸置疑。下边我们给服务器系统 CentOS 7 添加 1024M 的 swap
分区,采纳的法子是开创二个 swap 文件:

题材找到,分配不了丰盛的内部存款和储蓄器,

选拔上面的下令创立 swapfile :

vim /etc/my.cnf

# 1048576 = 1024 * 1024
dd if=/dev/zero of=/swapfile bs=1024 count=1048576

innodb_buffer_pool_size=100M

利用上边包车型客车通令配置 swap 文件:

service mysqld start ——–ok

mkswap /swapfile

搞定 

接下去,使用上面包车型客车下令立刻启用 swapfile
,那样就毫无等到下次重启时自动启用:

 

swapon /swapfile

说到底,大家在 /etc/fstab
中添加上面一行,那样能够在系统下次重启时自动生效创建的 swapfile :

/swapfile       swap    swap defaults   0 0

使用 cat /proc/swaps 或 free -m 查看 swapfile 的见效情状,如下图所示:

美高梅手机版4858 1

在成功地点的步子后,大家还是能够在 /etc/my.cnf
配置文件中添加一些配置新闻,下降 mariadb
财富供给,具体的配备请参见文末给出的链接。

启动

启动 apache 服务器: systemctl start httpd.service ;
启动 mariadb 服务器: systemctl start mariadb.service 。
运转实现后,再度打开网站主页,bingo,难点一举成功了!

总结

低配 VPS 最棒依然要多扩张 swap 分区大小,越发对于利用 SSD 的 VPS 而言,
swap 分区的性质也11分不错;
数据库服务器崩溃后,一定要记得学会分析日志。最简便易行的做法正是应用 tail
命令看看近来的夭折日志,并基于崩溃新闻寻找化解难点的情势;

WordPress 程序自个儿比较占财富,所以运转在低配的 VPS
时,依然供给做些优化办事。具体请参考文末给出的链接。

你可能感兴趣的稿子:

  • 玛丽亚DB(Mysql分支)my.cnf配置文件汉语注释版
  • 浅谈MySQL和mariadb区别
  • MySQL分支选用参考:Percona依旧MariaDB
  • C#连接mariadb(MYSQL分支)代码示例分享
  • 关于玛丽亚DB安装难题小记(CMake Error
    at)
  • MariaDB中的thread
    pool详细介绍和行使办法

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有