安装 libmemcached, memcache_functions_mysql
我们到目标是 mysql 同步更新 memcache 服务器. 为此我们给它装上必要到软件. 现在要安装的是 libmemcache 和 memcache_functions_mysql 两个软件包. 下载地址为:
libmemcached: http://download.tangent.org/libmemcached-0.30.tar.gz
memcache_functions_mysql: http://download.tangent.org/memcached_functions_mysql-0.8.tar.gz
安装libmemcached需要装机器上已经安装 memcache, 这个前面已经有介绍. 这里不再说明.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | wget http://download.tangent.org/libmemcached-0.30.tar.gz wget http://download.tangent.org/memcached_functions_mysql-0.8.tar.gz tar -zxf libmemcached-0.30.tar.gz tar -zxf memcached_functions_mysql-0.8.tar.gz cd libmemcached-0.30 ./configure make sudo make install sudo ln -s /usr/local/lib/libmemcached.so.2 /usr/lib/ cd ../memcached_functions_mysql-0.8 ./configure --with-mysql=/usr/local/mysql/bin/mysql_config --libdir=/usr/local/mysql/lib/ make sudo make install /usr/local/mysql/bin/mysql -u root -p |
说明一下. libmemcached 安装后要装 /usr/lib 里建一个链接, 不然 memcache_functions_mysql 包编译不过. 它会提示 找不到 libmemcached.
如果编译安装的 mysql 装编译 memcache_functions_mysql 包时 使用参数 --libdir=/usr/local/mysql/lib/mysql/ 假设 mysql 安装在 /usr/local/mysql 目录. 这里使用的是直接下载编译好的二进制包.
到此, 安装OK!
安装 Memcache 服务器.
服务器初始化环境: Ubuntu-8.04.2 base-system + 编译环境.
载 memcache 和 libevent 包. Memcache用到了libevent这个库用于Socket的处理.
1 2 3 4 5 6 7 8 9 10 11 12 | wget http://www.monkey.org/~provos/libevent-1.3.tar.gz wget http://memcached.googlecode.com/files/memcached-1.2.8.tar.gz tar -zxf libevent-1.3.tar.gz tar -zxf memcached-1.2.8.tar.gz cd libevent-1.3 ./configure --prefix=/usr make sudo make install cd ../memcached-1.2.8 ./configure --with-libevent=/usr make sudo make install |
安装后 memcached 会这 /usr/local/bin/目录下. 启动Memcache的服务器端:
sudo /usr/local/bin/memcached -d -m 64 -u root -l 192.168.1.232 -p 12001 -c 32 -P /tmp/memcached.pid
-d 选项是启动一个守护进程,
-m 是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u 是运行Memcache的用户,我这里是root,
-l 是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,
-p 是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c 选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P 是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
结束Memcache进程,执行:
sudo kill `cat /tmp/memcached.pid`
可以启动多个守护进程, 端口不能一样.
现在用PHP脚本测试一下. 测试服务器是 192.168.1.230
1 2 3 4 5 6 7 8 9 10 | /** * memTest.php * Memcache 服务器测试脚本 */ //phpinfo(); $mem = new Memcache(); $mem->addServer('192.168.1.232', 12001); $mem->set('mmKey', 'Hello, Baby!'); var_dump($mem->get('mmKey')); |
http://localhost/memTest.php 可以看到输出了
string(12) "Hello, Baby!"
Memcache 服务器安装配置完毕.
简单的 MySQL 主从配置.
服务器环境 Ubuntu-8.04.2 base-system + 编译环境. 安装 mysql 请参考本站前面系列文章.
数据库服务器Master, 主机名:DB01, IP: 192.168.1.234
数据库服务器Slave, 主机名:DB02, IP: 192.168.1.235
先配置 Master 的 mysql 环境.
修改mysql的配置文件 my.cnf 确保有下面的信息, 没有加上. 有的话修改成下面这样. 其他的可以保持默认配置.
[mysqld]
log-bin = mysql-bin
server-id = 1#for innodb extra setting.
#innodb_flush_log_at_trx_commit = 1
#sync_binlog = 1
创建测试数据库,数据表.
CREATE DATABASES anjuke USE anjuke CREATE TABLE IF NOT EXISTS `tests` ( `id` int(11) NOT NULL AUTO_INCREMENT, `content` text, `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; INSERT INTO `tests` (`id`, `content`, `created`) VALUES (1, 'Hello, First insert', '2009-06-15 10:16:59'), (2, 'This is second insert data', '2009-06-15 10:16:59');
给添加一个账号给 Slave 同步使用.
GRANT REPLICATION SLAVE ON *.* TO repluser@192.168.1.235 IDENTIFIED BY 'testpassword';
添加一个远程master测试账号
GRANT ALL PRIVILEGES ON *.* TO mmroot@192.168.1.230 IDENTIFIED BY 'password';
OK, 简单的 MySQL master 服务器配置到这里.
重启mysql服务, 登入, 查看 master 状态. 如下图:

查看一下原始数据, 如图

OK, Master 数据库已经配置OK, 运行正常.
再配置 Slave 的 mysql 环境.
同样修改 my.cnf 配置文件. 确保下面有如下信息.
[mysqld]
server-id=2
master-host = 192.168.1.234
master-user = repluser
master-password = testpassword
master-port = 3306
master-connect-retry = 120
replicate-do-db = anjuke
保存修改, 重启 mysql 服务. 登入数据库, 可以看到 slave 状态信息. 如下图:

配置正常. 现在用远程账号在 192.168.1.230 上的mysql连接master服务器, 插入一条记录到 tests 表. 可以看到 slave 已经和 master 的数据库和数据一样了.
简单的 MySQL 主从配置就OK了. 当然这个是测试环境使用. 生成环境还需要很多地方的优化配置.
Zend Studio For Eclipse 6.1.2 启动异常解决
新装的 Ubuntu 9.04 上安装 Zend Studio For Eclipse 6.1.2 总感觉很慢. 奇怪的很. 电脑配置不低. 为啥允许这么慢呢? 用命令行启动了一下studio, 发现有个异常抛出. 贴一下:
java.io.FileNotFoundException: /usr/local/Zend/ZendStudioForEclipse-6.1.2/plugins/com.zend.php_6.1.2.v20090405-1701/about.mappings (Permission denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at com.zend.php.core.core.basic.a.e(a.java)
at com.zend.php.core.core.basic.c.e(c.java)
at com.zend.php.core.core.basic.c.a(c.java)
at com.zend.php.core.core.network.f.run(f.java)
at java.lang.Thread.run(Unknown Source)
怪了. 怎么报权限错误了. 没办法了. 把 /usr/local/Zend/ZendStudioForEclipse-6.1.2/plugins/com.zend.php_6.1.2.v20090405-1701/about.mappings 文件的权限改成 777 就不抛出异常了.
不是很懂 JAVA , 真是奇怪.
好玩的 Linux 命令: dmidecode
今天看有人推荐 dmidecode 命令. 试玩了一下. 非常的不错. 可以把系统里的硬件信息全部显出来. 很直观. 目前用的是 Ubuntu, 默认已经安装. 没安装 sudo apt-get install dmidecode 即可.
这个命令需要管理员权限执行. 查看一下简单到用法: sudo dmidecode -h
查看BIOS信息: sudo dmidecode -t bios
查看系统信息: sudo dmidecode -t system
查看主板信息: sudo dmidecode -t baseboard
查看CPU信息: sudo dmidecode -t processor
查看内存信息: sudo dmidecode -t memory
还有很多其他到. 自己慢慢玩吧.