本文在文章:http://hi.baidu.com/cwbdde/blog/item/adc89b0ed94f80d17acbe1a7.html的基础上做了一些改动,应用到自己的系统上,由于机器上以前有一个mysql,所以这是在同一机器上安装两个mysql的情况。 InnoDB with Memcached是在提供MySQL服务的同一进程中提供Memcached服务。memcached是作为MySQL的插件程式,通过访问本地的InnoDB API直接访问innodb数据。如下图:
准备工作 由于mysql5.5版本之后不提供configure源码安装的方式,而采用cmake方式,没安装cmake,那就提前安装一下吧,很简单。 安装mysql5.6.2 wget http://downloads.mysql.com/snapshots/pb/mysql-5.6-labs-innodb-memcached/mysql-5.6.2-labs-innodb-memcached.tar.gz 1)、下载MySQL。#cd /usr/local/src #wget http://downloads.mysql.com/snapshots/pb/mysql-5.6-labs-innodb-memcached/mysql-5.6.2-labs-innodb-memcached.tar.gz 2)、添加必要的组和拥有者 #groupadd mysql #useradd -r -g mysql mysql 3)、解压MySQL #tar -zvxf mysql-5.5.8.tar.gz 4)、配置编译 #mkdir /usr/local/mysql-5.6.2 #mkdir /mysql-5.6.2_data #cd /usr/local/src/mysql-5.6.2 编译参数 #cmake . \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.2/ \ -DMYSQL_DATADIR=/mysql-5.6.2_data/ \ -DMYSQL_UNIX_ADDR=/tmp/mysql.3308.sock \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=0 \ -DWITH_ARCHIVE_STORAGE_ENGINE=0 \ -DWITHOUT_PARTITION_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DMYSQL_TCP_PORT=3308 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_DEBUG=0 \ -DWITH_EMBEDDED_SERVER=1 \ -DWITH_SSL=system \ -DWITH_READLINE=1 注意:编译参数里有几项需要根据自己具体情况设置。我这里将MySQL5.5.16运行于3306端口,并安装在mysql5516目录。 -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql5516/ 设置mysql的安装目录 -DMYSQL_DATADIR=/data0/mysql/3306/data 设置mysql数据库文件的位置 -DMYSQL_UNIX_ADDR=/data0/mysql/3306/mysqld.sock 设置mysql启动后sock文件位置 -DMYSQL_TCP_PORT=3308 设置mysql的监听端口 -DDEFAULT_CHARSET=utf8 //使用utf8字符 -DDEFAULT_COLLATION=utf8_general_ci //校验字符 -DEXTRA_CHARSETS=all //安装所有扩展字符集 -DENABLED_LOCAL_INFILE=1 //允许从本地导入数据 #make #make install 注意事项: 重新编译时,需要清除旧的对象文件和缓存信息。 # make clean # rm -f CMakeCache.txt 4)、设置目录权限 # cd /usr/local/mysql-5.6.2 # chown -R root:mysql . //把当前目录中所有文件的所有者所有者设为root,所属组为mysql # chown -R mysql:mysql /mysql-5.6.2_data 5)、配置文件 # cp support-files/my-medium.cnf /etc/my-5.6.2.cnf //这个配置仅适合小内存系统(32M - 64M) 打开如下注释: innodb_data_home_dir = /usr/local/mysql/data innodb_data_file_path = ibdata1:10M:autoextend innodb_log_group_home_dir = /usr/local/mysql/data innodb_buffer_pool_size = 16M innodb_additional_mem_pool_size = 2M innodb_log_file_size = 5M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50 添加默认字符集: [client] default-character-set = utf8 // 添加编码支持 [mysqld] default-character-set = utf8 // 添加编码支持 max_connections = 10000 //根据服务器性能调节 basedir = /usr/local/mysql //设置安装目录,这样在系统启动时才能正确运行到/etc/rc.d/init.d/mysql start 6)、创建系统数据库的表 # cd /usr/local/mysql-5.6.2 # ./scripts/mysql_install_db --defaults-file=/etc/my-5.6.2.cnf --basedir=/usr/local/mysql-5.6.2 --datadir=/mysql-5.6.2_data/ --user=mysql --pid-file=/mysql-5.6.2_data/mysql-5.6.2.pid --port=3308 --socket=/tmp/mysql.3308.sock
启动mysql /usr/local/mysql-5.6.2/bin/mysqld --basedir=/usr/local/mysql-5.6.2 --datadir=/mysql-5.6.2_data/ --plugin-dir=/usr/local/mysql-5.6.2/lib/plugin --user=mysql --log-error=/mysql-5.6.2_data/mysqld.log --open-files-limit=51200 --pid-file=/mysql-5.6.2_data/mysqld.pid --socket=/tmp/mysql.3308.sock --port=3308 &
导入配置表 scripts目录下有个innodb_memcached_config.sql文件,是对memcached插件的配置 cd /usr/local/mysql2/bin/ 运行完这个脚本,会创建一个innodb_memcache的数据库,以及下面3个表:containers,cache_policies和config_options。 config_options表目前只有一条记录,指定了分隔符,默认值是’|',用于多列数据情况下的分隔。 加载memcached插件 mysql>install plugin daemon_memcached soname 'libmemcached.so'; 可以查看一些配置属性,可以在配置文件[mysqld]部分自行调整。 其他的配置属性,比如memcahced的属性可以在daemon_memcached_option指定,比如,指定11212端口 loose-daemon_memcached_option=’-p 11222′即可。 这里解释下loose前缀的作用,经常会在配置插件属性的时候,看到HandlerSocket属性中有loose_handlersocket_port这种写法,其实目的是为了:”选项有前缀loose,如果程序未识别出选项不会提示错误退出,只是会发出一条警告,不至于会终止程序。” 测试一下 mysql>use innodb_memcache; 可以看到数据是存放在test库的demo_test表中,实际应用的时候可以自己修改。 往memcache里面添加条数据,如下: #php -r ‘$m = memcache_connect(“localhost”, 11211); $m->add(“key”, “value”); var_dump($m->get(“key”));’ select查询之前,由于daemon_memcached_w_batch_size配置的存在如果数据字节小于32是不会显示的,所以需要修改下,如下: mysql>set session TRANSACTION ISOLATION LEVEL read uncommitted; 对于用memcache来存放session的服务,同样可以这样实现: [php.ini文件设置] 小结 memcached作为mysqld的守护插件:mysqld和memcached是在同一进程空间中运行,对数据的访问具有非常低的延迟支持多列:用户可以通过value映射到多个列,该值是分离预先定义的“分离器”。可选的本地缓存:"cache-only", "innodb-only", 和 "caching", 适用于Memcached的set,get,delete和flush操作. 不但可以省去开发中使用Memcached来缓存数据的麻烦,并且具有更好的可靠性和数据一致性批量操作:用户可以通过指定daemon_memcached_r_batch_size和daemon_memcached_w_batch_size大小来进行批量提交支持所有的memcached配置选项,通过daemon_memcached_option参数设置
start_mysql.sh方式 #!/bin/bash bash -c "/usr/local/mysql2/bin/mysqld_safe --defaults-file=/mysql/3308/my.cnf" & stop_mysql.sh方式 #!/bin/bash /usr/local/mysql2/bin/mysqladmin -u root -p -S /mysql/3308/mysql.sock shutdown
my.cnf样本
[client] #password = your_password port = 3308 socket = /mysql/3308/mysql.sock
# Here follows entries for some specific programs
[mysqld_safe] datadir = /mysql/3308/data log-error = /mysql/3308/mysql_error.log pid-file = /mysql/3308/mysql.pid
# The MySQL server [mysqld] port = 3308 socket = /mysql/3308/mysql.sock skip-external-locking key_buffer_size = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M |
Innodb with Memcached –安装
最新推荐文章于 2024-08-08 04:39:59 发布