手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 免费部署 N8N 的 Zeabur 注册 | 登陆
浏览模式: 标准 | 列表全部文章

IBDATAi清除

其实之前也遇到过样的问题,但这次是发生在虚拟机上,所以不得不再次记录一下
虚拟机磁盘空间有限,因此,当ibdata1的文件过大的时候,机器动不了了,一重启之后,mysql也无法启动了。哭
一看ibdata1居然就占用了我800多M的空间,我一共是8G的虚拟机,这怎么吃得消?于是找了篇文章做参考。
ibdata1是mysql使用InnoDB引擎的时候需要使用的文件。这个文件有的时候会变得很大,并且在你删除数据的时候,文件也不减小。这意味着,即使我将数据库啥的清空了也没啥用,ibdata1大小仍然保持不变。
不得已,只能做了如下操作
1、对每张表使用单独的innoDB文件, 修改/etc/my.cnf文件
[mysqld]
innodb_file_per_table

2、 导出所有的数据,重建数据库,然后恢复数据:
# /usr/bin/mysqldump -R -q --all-databases > /temp/all.sql
# service mysql stop ,ubuntu下面可以是/etc/init.d/mysql stop
# rm -fr /var/lib/mysql/*
# /usr/bin/mysql_install_db
# service mysql restart ,同上/etc/init.d/mysql start
# mysql < /tmp/all.sql

这样导入的sql,root是没有用户名的,所以还需要再设置一下

  1. >use mysql  
  2. >update user set password=password("new_pass") where user="root";  
  3. >flush privileges;

如果这样还不行,参考这一篇:http://neatstudio.com/show-1042-1.shtml

3、 /var/lib/mysql的每个数据库下面,都有会很多的.ibd文件。这些分散的.ibd文件取代了原来的那个ibddata1。
以后删除数据库的时候,直接删除某个数据库的目录就可以了

-------EOF-------
以上的参考来自于:http://bbs.chinaunix.net/thread-3646471-1-1.html
还有一段:
mysql 使用的引擎:
mysql> show engines;
+------------+---------+----------------------------------------------------------------+
| Engine | Support | Comment |
+------------+---------+----------------------------------------------------------------+
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys |
| BerkeleyDB | YES | Supports transactions and page-level locking |
| BLACKHOLE | NO | /dev/null storage engine (anything you write to it disappears) |
| EXAMPLE | NO | Example storage engine |
| ARCHIVE | NO | Archive storage engine |
| CSV | NO | CSV storage engine |
| ndbcluster | NO | Clustered, fault-tolerant, memory-based tables |
| FEDERATED | NO | Federated MySQL storage engine |
| MRG_MYISAM | YES | Collection of identical MyISAM tables |
| ISAM | NO | Obsolete storage engine |
+------------+---------+----------------------------------------------------------------+
12 rows in set (0.00 sec)
For InnoDB tables, OPTIMIZE TABLE is mapped to ALTER TABLE, which rebuilds the table to update index statistics and free unused space in the clustered index.
所以不会直接来减少ibdata的文件尺寸。
减少ibdata的方法如下

- 1. 用mysqldump等工具导出数据 - 2. 停止 mysqld
- 3. 删除ibdata*, ib_logfile* 文件
- 4. 重新启动 mysqld(这时mysqld就会自动创建 idbdata*, ib_logfile* 文件)

- 5. 将到出来的数据导回去,体积才会减小。

Tags: mysql

ZendFramework

Zend 2.0的框架改动与1比实在是太大了,当然抛开Namespace不说,即使是应用和架构,都有了一部分调整。
Zend实在太庞大了。用来开发项目不一定是首选。以前都是当成类库来用的,毕竟他实现了几乎目前所需要用到的一切功能,甚至GData之类的接口都全了,你还能奢求什么?
要赶时髦?openID和oauth也有,要实用?连pdf库都有,发邮件、本地化、命令行,应有尽有,不是类库是什么?
不过2.0就不太一样。我随便看了一个DB类,和以前的操作都有点不太一样了。或许是一下子没有适应过来那种newZend_Db_TableGateway之类的调用方式吧
手册在这里:http://packages.zendframework.com/docs/latest/manual/en
下载在这里:http://packages.zendframework.com/

还有一个相对比较实用的wiki:http://framework.zend.com/wiki/display/ZFDEV2/Home
可以看看。2.0的架构和代码还是值得学习的。

Tags: zend, yii

一周回顾

本周没有什么大事发生,只是对于自己来说有几件事情要记住。
1、编码,关于编码这件事,我在文章出现乱码怎么办?已经记录了
2、mongo,虽然很多人说,如果只有一台服务器就不要用mongo了,但是想来想去,我大字段内容过多,而且访问频繁,短时间内居然不能做缓存,这才是我纠结的,毕竟只要做了缓存,那就什么都好说了
3、redis的订阅。我用的是yiiredis的订阅。然后事情就开始纠结了。在yii的event中,我写了一个小函数,将内容再存到redis中,但死活存不进去。可能还是闭包的问题。没有仔细查,实在没时间啊。
   不过本周会测试一下,不用yiiredis组件中自带的订阅,再看一下究竟如何

4、其它就真没大事了

Tags: 一周回顾

SQL to Mongo Mapping Chart

mysql 与 mongo之间是怎么替换的?
官方有一个表格:

SQL Statement Mongo Query Language Statement
CREATE TABLE USERS (a Number, b Number) Implicit or use MongoDB::createCollection().
INSERT INTO USERS VALUES(1,1) $db->users->insert(array("a" => 1, "b" => 1));
SELECT a,b FROM users $db->users->find(array(), array("a" => 1, "b" => 1));
SELECT * FROM users WHERE age=33 $db->users->find(array("age" => 33));
SELECT a,b FROM users WHERE age=33 $db->users->find(array("age" => 33), array("a" => 1, "b" => 1));
SELECT a,b FROM users WHERE age=33 ORDER BY name $db->users->find(array("age" => 33), array("a" => 1, "b" => 1))->sort(array("name" => 1));
SELECT * FROM users WHERE age>33 $db->users->find(array("age" => array('$gt' => 33)));
SELECT * FROM users WHERE age<33 $db->users->find(array("age" => array('$lt' => 33)));
SELECT * FROM users WHERE name LIKE "%Joe%" $db->users->find(array("name" => new MongoRegex("/Joe/")));
SELECT * FROM users WHERE name LIKE "Joe%" $db->users->find(array("name" => new MongoRegex("/^Joe/")));
SELECT * FROM users WHERE age>33 AND age<=40 $db->users->find(array("age" => array('$gt' => 33, '$lte' => 40)));
SELECT * FROM users ORDER BY name DESC $db->users->find()->sort(array("name" => -1));
CREATE INDEX myindexname ON users(name) $db->users->ensureIndex(array("name" => 1));
CREATE INDEX myindexname ON users(name,ts DESC) $db->users->ensureIndex(array("name" => 1, "ts" => -1));
SELECT * FROM users WHERE a=1 and b='q' $db->users->find(array("a" => 1, "b" => "q"));
SELECT * FROM users LIMIT 10 SKIP 20 $db->users->find()->limit(10)->skip(20);
SELECT * FROM users WHERE a=1 or b=2 $db->users->find(array('$or' => array(array("a" => 1), array("b" => 2))));
SELECT * FROM users LIMIT 1 $db->users->find()->limit(1);
EXPLAIN SELECT * FROM users WHERE z=3 $db->users->find(array("z" => 3))->explain()
SELECT DISTINCT last_name FROM users $db->command(array("distinct" => "users", "key" => "last_name"));
SELECT COUNT(*y) FROM users $db->users->count();
SELECT COUNT(*y) FROM users where AGE > 30 $db->users->find(array("age" => array('$gt' => 30)))->count();
SELECT COUNT(AGE) from users $db->users->find(array("age" => array('$exists' => true)))->count();
UPDATE users SET a=1 WHERE b='q' $db->users->update(array("b" => "q"), array('$set' => array("a" => 1)));
UPDATE users SET a=a+2 WHERE b='q' $db->users->update(array("b" => "q"), array('$inc' => array("a" => 2)));
DELETE FROM users WHERE z="abc" $db->users->remove(array("z" => "abc"));


不过,硬要说的话,这个还不全,http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart,这里有更全的。
在上面的页面还能够讲这个mapping chart导出成pdf。
比如,这个:docs-8716963-090117-10.pdf

Tags: mongo

文章出现乱码怎么办?

文本本来是UTF-8的。但是会出现乱码,类似:
像吉本芭娜娜一æ·ï¼Œåœ¨è¿™ä¸ªä¸–界上,
我最喜欢的地方就是厨房。
—— 李妙生
这种在显示的时候出现很让人郁闷,但不能不解决它,怎么办?写了一个无耻的函数:

XML/HTML代码
  1. function getUtf8Content($content,$default=null){  
  2.         $dContent = utf8_decode($content);  
  3.         if(mb_detect_encoding($dContent) == mb_detect_encoding($content)){//这句话有点妖。多试试就知道了  
  4.             if($default !== null){  
  5.                 $content = $default ;  
  6.             }else{  
  7.                 if(strpos($dContent,"??????")===false){  
  8.                     $content = $dContent;  
  9.                 }  
  10.             }  
  11.         }  
  12.         return $content;  
  13.     }  

不管了,能解决问题就好。。黑黑,不要怕丑

Tags: 乱码