存档

‘Linux’ 分类的存档

解决在phpmyadmin中执行sql语句出现的错误:Unknown storage engine ‘InnoDB’

2016年10月3日 没有评论

问题:phpmyadmin报错——Unknown storage engine ‘InnoDB’

解决方法:解决方法:
1.关闭MySQL数据库
   2.修改my.ini文件,把skip-innodb这行注释掉
   3.打开MySQL数据库
当然把innodb改成MyISAM也行

原因:没有开启MySQL InnoDB存储引擎。

关于innodb引擎的资料:
事务型数据库的首选引擎,支持ACID事务,支持行级锁定。InnoDB是为处理巨大数据量时的最大性能设计。InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB存储它的表&索引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与MyISAM表不同,比如在MyISAM表中每个表被存在分离的文件中。InnoDB 表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。InnoDB默认地被包含在MySQL二进制分发中。Windows Essentials installer使InnoDB成为Windows上MySQL的默认表。

  简介   InnoDB 给 MySQL 提供了具有事务(transaction)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)、多版本并发控制(multi-versioned concurrency control)的事务安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行级锁(locking on row level),提供与 Oracle 类似的不加锁读取(non-locking read in SELECTs)。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。在SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。这些特性均提高了多用户并发操作的性能表现。在InnoDB表中不需要扩大锁定(lock escalation),因为 InnoDB 的行级锁定(row level locks)适宜非常小的空间。InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。   在技术上,InnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。

MySQL

InnoDB 把数据和索引存放在表空间里,可能包含多个文件,这与其它的不一样,举例来说,在 MyISAM 中,表被存放在单独的文件中。InnoDB 表的大小只受限于操作系统的文件大小,可也可以每个表使用各自独立的表空间,只需要启用选项 innodb_file_per_table。   在 MySQL 的源代码中,从 3.23.34a 开始包含 InnoDB 表引擎,并在 MySQL -Max 的二进制版本中激活。

分类: Linux, 解决方案 标签: ,

scp和rsync限制传输速度

2016年9月25日 没有评论

在linux下经常向其他服务器传输文件。有时在总带宽的限制下。不可能时时跑满占用带宽。这种情况下我们就需要对传输进行一定的限制和自定义。以下写出两个经常使用的传输命令的参数,希望对大家有一定帮助。

1.scp 限速100KB/s

scp -l 1000 testfiles root@192.168.1.108
此时的传输速率就是1M/8=100KB左右

2.rsync 限速100KB/s
rsync -auvzP –bwlimit=100 本地文件 远程文件
参数说明:
v:详细提示
a:以archive模式操作,复制目录、符号连接,等价于 -rlptgoD 。
z:压缩
u:只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时
P:是综合了–partial –progress两个参数,
此时的rsync支持了断点续传。

通常情况下。大文件,我建议大家使用rsync。因为有断点续传。可以有更好的选择。

分类: Linux, 解决方案 标签: , , , ,

Ubuntu 解决ssh登录不上permission denied

2016年8月7日 没有评论

新版本的ubuntu server版本安装完成后是默认不能ssh直接登陆的。要配置密钥配合。这样其实很麻烦。

ssh不能登录上,就修改sshd的默认配置
ssh出现permission denied (publickey)问题:

修改/etc/ssh/sshd-config文件.

将其中的PermitRootLogin no修改为yes

PubkeyAuthentication yes修改为no

AuthorizedKeysFile .ssh/authorized_keys前面加上#屏蔽掉,

PasswordAuthentication no修改为yes就可以了。

有关key的文件都先#注释掉吧。重启一下应该可以连了。建议这些都使用SSH Secure Shell 或者 SecureCRT。
如果要用putty,建议使用版本0.63以上。

分类: Linux, 解决方案 标签: ,

linux让apache不区分大小写办法

2016年6月10日 没有评论

在linux下,路径是区分大小写的,今天我们来把它改成不区分大小写的方法吧,有需要的朋友可以参考一下。

inux是区分大小写,下面是让aparch不区分路径的大小写

http.conf

加载mod_speling模块: LoadModule speling_module /usr/lib/apache2/modules/mod_speling.so

开启模块: CheckSpelling on

重启apache
这样改一下就正常了

分类: Linux, 解决方案 标签: ,

利用rsync命令和scp命令实现本机带进度条提示拷贝

2016年6月7日 没有评论

rsync命令

#rsync -av –progress /mnt/vps12com2/full20100526.tar.gz /mnt/vps12com1/

[以上命令] 可以实现本机带进度条提示拷贝,可以实现不同机器带进度条提示拷贝,可以拷贝多个文件

scp命令

#scp -v /mnt/vps12com2/full20100526.tar.gz /mnt/vps12com1/
[以上命令] 本机拷贝无法显示进度

#scp -v /mnt/vps12com2/full20100526.tar.gz root@192.168.1.1:/mnt/vps12com1/
[以上命令] 不同机器拷贝可以显示进度条,即使不带“-v”参数也可以显示进度条

#scp -v /mnt/vps12com2/full20100526.tar.gz root@127.0.0.1:/mnt/vps12com1/
[以上命令] 变相实现本机带进度条提示拷贝,可以不带“-v”参数

cp命令

没有找到带进度条提示拷贝,有知道的朋友请分享,谢谢。

关于rsync, scp, cp拷贝速度

我做了一个简单的测试,拷贝一个240M的文件,仅供参考

#cp full20100526.tar.gz full20100526.tar.gz.bak

速度很快

#rsync -av –progress full20100526.tar.gz full20100526.tar.gz.bak

速度比较快(113.10MB/s)

#scp -v full20100526.tar.gz root@127.0.0.1:/root/full20100526.tar.gz

速度有些慢(26.9MB/s)

确认cp拷贝速度的方法

#cp full20100526.tar.gz full20100526.tar.gz.bak1 && full20100526.tar.gz.bak1 full20100526.tar.gz.bak2

#stat full20100526.tar.gz.bak1

Access: 2010-06-11 11:02:01.000000000 +0800
Modify: 2010-06-11 11:01:58.000000000 +0800
Change: 2010-06-11 11:01:58.000000000 +0800

#stat full20100526.tar.gz.bak2

Access: 2010-06-11 11:01:58.000000000 +0800
Modify: 2010-06-11 11:02:01.000000000 +0800
Change: 2010-06-11 11:02:01.000000000 +0800

分类: Linux, 解决方案 标签:

rpmdb: unable to join the environment的解决办法

2016年6月7日 没有评论

有一次在centos上用RPM命令装gcc时,遇到了下面的问题,错误提示:

  rpmdb: unable to join the environment
  error: db4 error(11) from dbenv->open: Resource temporarily unavailable
  error: cannot open Packages database in /var/lib/rpm

  经多方查阅,并尝试各种办法之后发现,这是因为rpm的数据库被损坏了,解决的办法就是重建数据库。在重建之前,你需要先删掉以前rpm数据库的相关内容,即/var/lib/rpm目录下的__db.*的几个文件,若有一个*.back文件,也需要删除。主要是以下的两条命令完成删除和重建:

  rm -rf /var/lib/rpm/__db*
  rpm -rebuilddb

  如果在第二条命令执行时,又提示你“空间不够”时,这时你可以删除/var/log目录下的所有文件,然后再次执行上述的第二条命令就可以了。 想了下之前好像打了个很大的tar包。估计是空间满了。应该就是出现这个原因。清空一下空间

分类: Linux, 解决方案 标签: ,

centos磁盘爆满,查找大文件并清理(转)

2016年5月6日 没有评论

今天发现vps敲入crontab -e 居然提示 “Disk quota exceeded” 无法编辑。于是”df -h”查了查发现系统磁盘空间使用100%了。最后定位到是/var/spool/mail/root 这个文件有几个G。于是清理掉,问题解决。如果不知道是哪些文件占了磁盘空间,可以看下面查找大文件方法。

以下内容转自 http://hi.baidu.com/11haiou/item/f3a4878b601e084e840fab17

linux操作系统中,经常会遇到磁盘空间满的问题。遇到这样的问题,先查下是什么文件过大或过多引起的,至于引起这个更深一层的原因,先不探讨。怎么查看大文件所在的路径,linux中有一个命令,叫du,
先贴命令:du -m –max-depth=1或du -h –max-depth=1du:用于统计linux中文件或目录所占磁盘空间的大小du参数######-
m:以M为单位展示查询结果
-h:以K、M、G为单位展示查询结果,提高信息可读性
–max-depth=1:其中,数字“1”是指查询结果中最多显示的目录层数,这里指最多显示一层目录。

然后,利用此命令,逐层(目录)深入,这样就一定会查询到大文件所在目录,但也有可能是目录中文件过多所致。当找到大文件后,若因某些原因,不想对文件进行删除,可以用echo或cat或clear命令清除文件内容:
echo > /var/log/big.log此命令会把/var/log目录中的big.log文件内容清除,而又不删除big.log文件
cat > /var/log/big.log此命令能与“echo > /var/log/big.log”达到相同效果,不过,命令执行后,需要用“Ctrl + d”结束
clear > /var/log/big.log此命令会把big.log文件内容清空,而不删除文件

==========================================================

另一种情况: 也可能是inode用完了.

用# df -i 可以查看。

真的是inode用完了,磁盘没法再写入新的内容了,这个是某些临时的小文件太多了,把inode用完了,把它删掉就行了。

# find /var/spool/clientmqueue -type f -print -exec rm -f {} \;
这个命令中 /var/spool/clientmqueue 是要删除的文件所在的目录 -type f这个参数限定find只查找普通文件(即不是管道文件,不是块文件,不是链接文件,不是目录等),防止误删除系统文件。

原因分析:系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件;

centos 内存越来越大 内存占满 释放内存

2016年5月6日 没有评论

Centos 内存占满 释放内存

大家经常使用centos系统是不是感觉经常使用top看到内存在使用一段时间后会越来越大,我也一样,今天用 free -m 查看,发现内存跑满了。
top后按下shift+m,就是按内存占用百分比排序的程序,发现排在第一的进程,才占用0.9%,那是什么占用的呢?谷歌了一下,据说是centos为了提高效率,把部分使用过的文件缓存到了内存里。如果是这样的话,我又不需要这样的文件性能,那就可以释放。如下两个命令就可以:

1
2
sync
echo 3 > /proc/sys/vm/drop_caches

远程密令临时开启ssh端口

2016年5月5日 没有评论

linux服务器,我们一般是通过ssh通道远程管理,这就需要我们开启ssh端口,如22。但开启端口有被暴力破解的风险,你会说可以设置复杂的密码或使用证书避免。就算破解不了密码,但openssh也可能会有漏洞,你会说可以更改ssh端口,但还是有可能被扫描出来。还有一种选择,我们可以只允许指定IP访问ssh,通过vpn登录管理服务器,但局限很明显,万一紧急情况vpn登录不上去了怎么办。(有条件的我们可以多设置几个指定ip访问,保险些。也推荐大家用这个方法,对我们做数据中心服务器提供商多设置几个ip允许访问当然没有什么问题,因为资源多。)资源少的可以有其他办法吗?答案是肯定的。

下面给出一种个人觉得比较满意的解决方案,即使用iptables的recent模块,通过密令临时开启ssh端口。当然,密令需要保管好,防止外泄。(其实这种办法个人来讲,并不是非常推荐。因为人长时间不连服务器容易健忘密令。哈)

1、iptables规则设定

1
2
3
4
#指定78字节的icmp数据包(包含IP头部20字节,ICMP头部8字节)通过被加入openssh列表。
iptables -A INPUT -p icmp --icmp-type 8 -m length --length 78 -m recent --set --name sshopen --rsource -j ACCEPT
#检查openssh列表是否存在你的来源IP,如果存在,即从第一次使用密令开始15秒钟内开启ssh端口22,超过15秒端口自动关闭,不再允许新连接,已连接的不会断开。
iptables -A INPUT -p tcp --dport 22 --syn -m recent --rcheck --seconds 15 --name sshopen --rsource -j ACCEPT

2、临时开启ssh端口密令

1
2
linux下:ping -s 50 host
windows下:ping -l 50 host

3、示例一个目前服务器上使用的iptables规则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 123 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m length --length 50 -m recent --set --name sshopen --rsource -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 --syn -m recent --rcheck --seconds 15 --name sshopen --rsource -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443  -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT

在ubuntu中允许root远程访问

2016年4月26日 没有评论

首先,确保服务器在安装过程中,选择安装openssh软件。
如没有进行安装,请使用以下命令进行安装:
apt-get install -y openssh-server

安装完成后,使用root登录系统:
编辑vim /etc/ssh/sshd_config文件,将PermitRootLogin的值改为yes

因为为root账户设置了密码,所以还要更改PermitEmptyPasswords为 no。然后:wq保存文件!

然后重启ssh服务,如下:
sudo service ssh restart

分类: Linux, 解决方案 标签: ,