分类目录
-
近期文章
其他
我的朋友
推荐站点
经典朋友
功能
分类目录归档:数据库
利用Tokyo Tyrant构建兼容Memcached协议、支持故障转移、高并发的分布式key-value持久存储系统
转自:http://blog.s135.com/read.php/362.htm 这么牛X的数据库,为什么没人广泛采用呢? 估计 1、大部分人 不了解这东西; 2、项目管理层的人也许了解,但不敢尝试。 希望能有机会用到这样的好东西。 Tokyo Cabinet 是日本人 平林幹雄 开发的一款 DBM 数据库,该数据库读写非常快,哈希模式写入100万条数据只需0.643秒,读取100万条数据只需0.773秒,是 Berkeley DB 等 DBM 的几倍。 Tokyo Tyrant 是由同一作者开发的 Tokyo Cabinet 数据库网络接口。它拥有Memcached兼容协议,也可以通过HTTP协议进行数据交换。 Tokyo Tyrant 加上 Tokyo Cabinet,构成了一款支持高并发的分布式持久存储系统,对任何原有Memcached客户端来讲,可以将Tokyo Tyrant看成是一个Memcached,但是,它的数据是可以持久存储的。这一点,跟新浪的Memcachedb性质一样。 相比Memcachedb而言,Tokyo Tyrant具有以下优势: 1、故障转移:Tokyo Tyrant支持双机互为主辅模式,主辅库均可读写,而Memcachedb目前支持类似MySQL主辅库同步的方式实现读写分离,支持“主服务器可读写、辅助服务器只读”模式。 这里使用 $memcache->addServer 而不是 $memcache->connect 去连接 … 继续阅读
MYSQL 主从服务器配置
mysql服务器的主从配置,本来是一件很简单的事情,无奈不是从零开始,总是在别人已经安装好的mysql服务器之上 ,这就会牵扯到,mysql的版本,启动文件,等一些问题。 不过没关系,先问清楚两点 1、mysql配置文件my.cnf的位置 2、如何启动、停止mysql,找好启动文件 假设有两台机器,已经安装好了mysql(尽量同版本,且两台机器同一网络,可以ping通) 有朋友说:“从服务器,不能低于主服务器的版本”,不过我是低于的,没有出现问题。 主机A: 192.168.1.100 从机B:192.168.1.101 可以有多台从机 1、先登录主机 A mysql>GRANT REPLICATION SLAVE ON *.* TO ‘backup’@’192.168.1.101‘ IDENTIFIED BY ‘123456’; 赋予从机权限,有多台丛机,就执行多次 2、 打开主机A的my.cnf,输入 server-id = 1 #主机标示,整数 log_bin = /var/log/mysql/mysql-bin.log #确保此文件可写 read-only =0 #主机,读写都可以 binlog-do-db =test #需要备份数据,多个写多行 … 继续阅读
MYSQL 事务 笔记
由于项目设计里面,牵扯到了金钱的转移,于是就要用到MYSQL的事务处理,来保证一组处理结果的正确性 用了事务,就不可避免的要牺牲一部分速度,来保证数据的正确性。 只有InnoDB支持事务 事务 ACID Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性) 1、事务的原子性 一组事务,要么成功;要么撤回。 2、稳定性 有非法数据(外键约束之类),事务撤回。 3、隔离性 事务独立运行。 一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。 事务的100%隔离,需要牺牲速度。 4、可靠性 软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。 可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。 开启事务 START TRANSACTION 或 BEGIN 提交事务(关闭事务) COMMIT 放弃事务(关闭事务) ROLLBACK 折返点 SAVEPOINT adqoo_1 ROLLBACK TO SAVEPOINT adqoo_1 发生在折返点 adqoo_1 之前的事务被提交,之后的被忽略 事务的终止 设置“自动提交”模式 … 继续阅读
MySQL DBA 管理 常用 命令
虽然自己不是DBA,但是作为一个程序员,多多少少,应该了解一些数据库方面的东西,并不能只关心程序,不考虑数据库,看到一篇文章,就先转过来,也许以后自己哪天会用到。 查看mysql的某个选项 show variables like ‘%VAR_NAME%’; select @@VAR_NAME; 在Linux下管理MySQL数据库的时候总有一些很紧急的情况,发现数据库突然变得压力很大了,那么作为一个DBA,也许需要一些常用的手段或者说命令去分析问题出现在哪里,然后解决: 数据库突然产生压力时查看正在查询的SQL:(如果这里内容太多表示并发执行的SQL过多,或许数据库堵塞了,会越来越慢,正常情况下这里应该很少有东西的,也就是连接都在Sleep状态) /usr/local/mysql/bin/mysql -uroot -ppassword databaseName -e “show full processlist” | grep -v Sleep 正在运行的SQL太多了,看不过来,那需要排序了,看持续执行时间最长的那些SQL: /usr/local/mysql/bin/mysql -uroot -ppassword databaseName -e “show full processlist” | grep -v Sleep | sort -k6rn >sort.tmp … 继续阅读
mysqldump 导出单个表
导出整个数据库database mysqldump –opt -uroot -ppassword database > dump.sql 导出单个数据表table mysqldump –opt –add-drop-table -uroot -ppassword database table > dump.sql
超级诡异的MySQL server has gone away解决办法
遇到了一个非常变态的mysql错误,可能和他遇到的一样变态,点击查看。 无论怎么优化都一直出现这样的mysql错误:MySQL server has gone away 我程序中出现的错误原因可能是,mysql连接超时被关闭了,这可以通过修改my.ini,修改wait_timeout的值,来延长等待时间。(此方法未尝试) 我在程序中加入了如下判断,程序可以执行了。 下载: connect.php< ?php if (!$link){ mysql_close($link);//这里最好先再关闭一次,否则可能会出错 $link = content(); }elseif(!mysql_ping($link)){ mysql_close($link); $link = … 继续阅读