Redis 3.0 编译安装

官方主站:http://www.redis.io/
下载地址:http://www.redis.cn/download.html
Command API: http://www.redis.cn/commands.html
Redis官方文档:http://redis.io/documentation

一.Redis 介绍:
Redis是Remote Dictionary Server的缩写。他本质上一个Key/Value数据库,与Memcached类似的NoSQL型数据库,但是他的数据可以持久化的保存在磁盘上,解决了服务重启后数据不丢失的问题,他的值可以是string(字符串)、list(列表)、sets(集合)或者是ordered sets(被排序的集合),所有的数据类型都具有push/pop、add/remove、执行服务端的并集、交集、两个sets集中的差别等等操作,这些操作都是具有原子性的,Redis还支持各种不同的排序能力。

二.Redis 部署
1.安装相关依赖包:
yum -y install gcc gcc-c++ cmake make

2.安装tcmalloc包[ 尝试采用新的内存分配方式 ]
Redis并没有自己实现内存池,没有在标准的系统内存分配器上再加上自己的东西。
所以系统内存分配器的性能及碎片率会对Redis造成一些性能上的影响。
在最新版本中,jemalloc已经作为源码包的一部分包含在源码包中,所以可以直接被使用。
如果要使用tcmalloc的话,是需要自己安装的。

tcmalloc是google-proftools( http://code.google.com/p/gperftools/downloads/list)中的一部分,
所以我们实际上需要安装google-proftools。如果你是在64位机器上进行安装,需要先安装其依赖的libunwind库,32位的系统不需要
下载地址: http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-alpha.tar.gz

(1).安装libunwind
tar zxvf libunwind-0.99-alpha.tar.gz
cd libunwind-0.99-alpha/
CFLAGS=-fPIC ./configure
make CFLAGS=-fPIC
make CFLAGS=-fPIC install

(2).安装gperftools
tar zxvf gperftools-2.1.tar.gz
cd gperftools-2.1
./configure –disable-cpu-profiler –disable-heap-profiler –disable-heap-checker –disable-debugalloc –enable-minimal
make && make install
cd /usr/local/lib
ln -sv libtcmalloc_minimal.so.4.1.2 libtcmalloc.so
# 加粗部分如果不做的话,后面编译redis会报错: usr/bin/ld: cannot find ltcmalloc
echo “/usr/local/lib” > /etc/ld.so.conf.d/usr_local_lib.conf #如果没有这个文件,自己建一个
/sbin/ldconfig

3.Redis 安装:
tar zxvf redis-3.0.0.tar.gz
cd redis-3.0.0
mkdir -p /usr/local/redis-3.0
# make prefix= install
# 将redis安装在/bin下/usr/local/redis-3.0/bin下
# make PREFIX=/usr/local/redis-3.0 install # 此方式安装,使用linux默认的内存分配方式
make PREFIX=/usr/local/redis-3.0 USE_TCMALLOC=yes FORCE_LIBC_MALLOC=yes install

4.建相关目录,并配置redis.conf 文件[简单配置]
cd /usr/local/redis-3.0/
mkdir etc #存放配置文件,这里目录名,可建为:conf
mkdir log #存放日志和pid文件
mkdir data #存放数据
vim etc/redis.conf
daemonize yes
port 6379
pidfile /usr/local/redis-3.0/log/redis_6379.pid
dir /usr/local/redis-3.0/data
logfile /usr/local/redis-3.0/log/redis_6379.log

5.Redis服务启动、关闭
(1).启动服务:
/usr/local/redis-3.0/bin/redis-server /usr/local/redis-3.0/etc/redis.conf
注:
此命令仅有一个启动参数,指定目录下的配置文件,不加参数执行默认配置。
测试启动:
/usr/local/redis-3.0/bin/redis-cli ping
返回PONG,则启动成功。
查看端口是否被占用:
netstat -ntlp |grep 6379

(2).关闭服务:
/usr/local/redis-3.0/bin/redis-cli shutdown
如果非默认端口,可指定端口:
/usr/local/redis-3.0/bin/redis-cli -p 6380 shutdown

(3).验证redis内存分配方式是否在使用tcmalloc
lsof -n |grep tcmalloc
redis-ser 2754 root mem REG 253,0 1078467 1725996 /usr/local/lib/libtcmalloc_minimal.so.4.1.2

6.Redis 服务启动脚本
redis 本身提供了redis安装脚本:utils/install_server.sh
但 这个脚本包括安装服务,有点烦,我们直接取其安装脚本:
#!/bin/sh
#Configurations injected by install_server below….
EXEC=/usr/local/redis-3.0/bin/redis-server
CLIEXEC=/usr/local/redis-3.0/bin/redis-cli
PIDFILE=/usr/local/redis-3.0/log/redis_6379.pid
CONF=”/usr/local/redis-3.0/etc/redis.conf”
REDISPORT=”6379″

case “$1” in
start)
if [ -f $PIDFILE ]
then
echo “$PIDFILE exists, process is already running or crashed”
else
echo “Starting Redis server…”
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo “$PIDFILE does not exist, process is not running”
else
PID=$(cat $PIDFILE)
echo “Stopping …”
$CLIEXEC -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo “Waiting for Redis to shutdown …”
sleep 1
done
echo “Redis stopped”
fi
;;
status)
PID=$(cat $PIDFILE)
if [ ! -x /proc/${PID} ]
then
echo ‘Redis is not running’
else
echo “Redis is running ($PID)”
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo “Please use start, stop, restart or status as first argument”
;;
esac

rhel6下,源码编译安装mysql 5.6.14

从mysql 5.5开始,mysql编译采取了cmake编译,来取代原来的configure,因此,我们下面的编译安装,也是使用cmake编译安装。
需要准备的源码包:

mysql源码包:mysql-5.6.14.tar.gz

cmake源码包:cmake-2.8.10.2.tar.gz [cmake我们也采取编译安装,并下载最新版本]

1.对于全新的系统环境,源码编译安装,需要很多包,但是,系统光盘里基本上提供了,所以,建议大家先配置yum源,这里不做演示[可参考博客里 “yum仓库配置”一文]。这里默认大家已经配置好yum源:

  1. [root@client100 ~]# yum -y install gcc-c++ ncurses-devel make perl bison ncurses  

2.进入存放源码包的目录,解压cmake源码包

  1. # 解压源码包  
  2. [root@client100 tmp]# tar -xf cmake-2.8.10.2.tar.gz  
  3. # 进入解压目录  
  4. [root@client100 tmp]# cd cmake-2.8.10.2  
  5. # 配置安装参数  
  6. [root@client100 cmake-2.8.10.2]# ./configure –prefix=/usr/local/cmake  
  7. # 编译源码  
  8. [root@client100 cmake-2.8.10.2]# gmake  
  9. # 安装  
  10. [root@client100 cmake-2.8.10.2]# make install  
  11. # 修改配置文件  
  12. [root@client100 cmake-2.8.10.2]# vim /etc/profile  
  13. # 在文件的最后,添加如下两行[即修改PATH的路径,指定cmake命令的路径]  
  14. PATH=/usr/local/cmake/bin:$PATH  
  15. export path  
  16. # 使配置文件立即生效  
  17. [root@client100 cmake-2.8.10.2]# source /etc/profile  
  18. # 执行如下操作,如果能显示具体版本,cmake就安装成功  
  19. [root@client100 cmake-2.8.10.2]# cmake –version  
  20. cmake version 2.8.10.2  

3.mysql编译前,准备工作:

  1. # 创建mysql用户组  
  2. [root@client100 tmp]# groupadd mysql  
  3. # 创建用户并加入用户组,并取消login权限  
  4. [root@client100 tmp]# useradd -g mysql -s ‘/sbin/nologin’ mysql  
  5. # 建立mysql安装目录  
  6. [root@client100 test]# mkdir -p /usr/local/mysql  
  7. # 建立mysql数据存放目录  
  8. [root@client100 test]# mkdir -p /home/mysql/data  
  9. # 建立mysql安装目录的属主  
  10. [root@client100 mysql-5.6.14]# chown mysql.mysql -R /usr/local/mysql  
  11. # 修改mysql数据存放目录的所属者  
  12. [root@client100 mysql-5.6.14]# chown mysql.mysql -R /home/mysql/data   

4.开始编译安装mysql

  1. # 解压mysql 源码包  
  2. [root@client100 tmp]# tar -xf  mysql-5.6.14.tar.gz  
  3. # 进入mysql源码包目录  
  4. [root@client100 mysql-5.6.14]# cd mysql-5.6.14  
  5. # 用cmake配置安装选项  
  6. [root@client100 mysql-5.6.14]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \  
  7. -DMYSQL_DATADIR=/home/mysql/data \  
  8. -DSYSCONFDIR=/etc \  
  9. -DWITH_MYISAM_STORAGE_ENGINE=1 \  
  10. -DWITH_INNOBASE_STORAGE_ENGINE=1 \  
  11. -DWITH_MEMORY_STORAGE_ENGINE=1 \  
  12. -DWITH_READLINE=1 \  
  13. -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysqld.sock \  
  14. -DMYSQL_TCP_PORT=3306 \  
  15. -DENABLED_LOCAL_INFILE=1 \  
  16. -DWITH_PARTITION_STORAGE_ENGINE=1 \  
  17. -DEXTRA_CHARSETS=all \  
  18. -DDEFAULT_CHARSET=utf8 \  
  19. -DDEFAULT_COLLATION=utf8_general_ci  
  20.   
  21. # /*  以下为配置参数注解   */  
  22. # /*  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql    # 指定mysql安装位置  
  23. # /*  -DMYSQL_DATADIR=/home/mysql/data            # 数据文件存放位置  
  24. # /*  -DSYSCONFDIR=/etc                                       # 配置文件my.cnf的位置  
  25. # /*  -DWITH_MYISAM_STORAGE_ENGINE=1            # 支持MyIASM引擎  
  26. # /*  -DWITH_INNOBASE_STORAGE_ENGINE=1         # 支持InnoDB引擎  
  27. # /*  -DWITH_MEMORY_STORAGE_ENGINE=1           # 支持Memory引擎  
  28. # /*  -DWITH_READLINE=1                                      # 快捷键功能(我没用过)  
  29. # /*  -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysqld.sock       # 连接数据库socket路径  
  30. # /*  -DMYSQL_TCP_PORT=3306                              # 端口  
  31. # /*  -DENABLED_LOCAL_INFILE=1                           # 允许从本地导入数据  
  32. # /*  -DWITH_PARTITION_STORAGE_ENGINE=1        # 安装支持数据库分区  
  33. # /*  -DEXTRA_CHARSETS=all                                 # 安装所有的字符集  
  34. # /*  -DDEFAULT_CHARSET=utf8                              # 默认字符  
  35. # /*  -DDEFAULT_COLLATION=utf8_general_ci           # 指定服务器默认的校对规则,默认latin1_general_ci  
  36. # /*  -DWITH_xxx_STORAGE_ENGINE             # 指定静态编译到mysql的存储引擎,
  37. MyISAM,MERGE,MEMORY以及CSV四种引擎默认即被编译至服务器,不需要特别指定[1.代表编译]  
  38. # /*  -DWITHOUT_xxx_STORAGE_ENGINE      # 指定不编译的存储引擎
  39. # /*  -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk   
  40.   
  41. # 开始编译  
  42. [root@client100 mysql-5.6.14]#gmake  
  43. # 安装mysql到刚才参数配置的目录  
  44. [root@client100 mysql-5.6.14]# make install  
  45. # /*  注意事项   */  
  46. 重新编译时,需要清除旧的对象文件和缓存信息[如果可以,就把解压的目录删掉,重新解压目录或者执行如下操作]  
  47. # make clean  
  48. # rm -f CMakeCache.txt  
  49. # rm -rf /etc/my.cnf  

5.后续mysql相关操作:

  1. #  进入mysql安装目录下的脚本目录  
  2. [root@client100 /]# cd /usr/local/mysql/scripts/  
  3. #  安装mysql默认数据库,指明数据库安装目录,数据目录,用户  
  4. [root@client100 scripts]# ./mysql_install_db –basedir=/usr/local/mysql –datadir=/home/mysql/data –user=mysql  
  5. # 进入mysql配置文件目录  
  6. [root@client100 mysql]# cd /usr/local/mysql/support-files/  
  7. # 复制配置文件到/etc目录下,并改名为my.cnf[如果目录下有my.cnf文件,选择覆盖或者删除或者在上面进行修改]  
  8. [root@client100 support-files]# cp  my-default.cnf /etc/my.cnf  
  9. # 修改/etc/my.cnf的属主  
  10. [root@client100 support-files]# chown mysql:mysql /etc/my.cnf  
  11. # 将安装目录属主改为mysql[上面更改,到这里又变成root属主了,所以可以选择更改为mysql]  
  12. [root@client100 support-files]# chown mysql:mysql  -R /usr/local/mysql  
  13. # 修改/etc/my.cnf配置文件  
  14. [root@client100 support-files]# vim /etc/my.cnf  
  15. # 配置文件内容如下: [ 编辑完成后,保存退出 ]  
  16. [client]  
  17. socket = /usr/local/mysql/mysqld.sock  
  18. port = 3306  
  19.   
  20. [mysqld]  
  21. basedir =/usr/local/mysql  
  22. datadir =/home/mysql/data  
  23. socket = /usr/local/mysql/mysqld.sock  
  24.   
  25. port =3306  
  26. server_id =100  
  27. user = mysql  
  28. join_buffer_size = 128M  
  29. sort_buffer_size = 2M  
  30. read_rnd_buffer_size = 2M  
  31. default_storage_engine = MYISAM  
  32. join_buffer_size = 128M  
  33. max_allowed_packet= 1M  
  34. net_buffer_length= 8K  
  35.   
  36. skip-external-locking  
  37. skip-host-cache  
  38. skip-name-resolve  
  39.   
  40. # InnoDB  
  41. innodb_buffer_pool_size = 128M  
  42. innodb_log_file_size = 48M  
  43. innodb_file_per_table = 1  
  44. innodb_flush_method = O_DIRECT  
  45.   
  46. # MyISAM  
  47. key_buffer_size = 48M  
  48. character-set-server=utf8  
  49. collation-server=utf8_general_ci  
  50.   
  51. # LOG  
  52. log_error = /home/mysql/data/mysql-error.log  
  53. long_query_time = 1  
  54. slow-query-log  
  55. slow_query_log_file = /home/mysql/data/mysql-slow.log  
  56.   
  57. # Others  
  58. explicit_defaults_for_timestamp=true  
  59. max_connections = 500  
  60. open_files_limit = 65535  
  61. sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  
  62.   
  63.   
  64. # 复制启动脚本文件到/etc/init.d/目录下  
  65. [root@client100 support-files]# cp mysql.server /etc/init.d/mysqld  
  66. # 修改启动脚本权限  
  67. [root@client100 support-files]#chmod 755 /etc/init.d/mysqld  
  68. # 修改启动脚本  
  69. [root@client100 support-files]# vim /etc/init.d/mysqld  
  70. # 仅修改如下两行,指定mysql安装目录,数据存放目录  
  71. basedir=/usr/local/mysql  
  72. datadir=/home/mysql/data  
  73. # 编译配置文件,将mysql相关命令路径放到PATH环境变量里  
  74. [root@client100 support-files]# vim /etc/profile  
  75. PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:/usr/local/cmake/bin:$PATH  
  76. export PATH  
  77. # 重读配置文件,立即生效  
  78. [root@client100 support-files]# source  /etc/profile  
  79. # 启动mysql数据库  
  80. [root@client100 mysql]# /etc/init.d/mysqld start  
  81. # 登陆测试[默认第一次登陆,没有密码]  
  82. [root@client100 mysql]# mysql  
  83.   
  84. #/* 下面是mysql的一些简答操作 */  
  85. #/*  安装mysql后,设置root用户密码  
  86. [root@client100 mysql]# mysqladmin -uroot password ‘kongzhong’  
  87. # 设置完密码后,在直接用mysql登陆,是登陆不了  
  88. [root@client100 mysql]# mysql  
  89. ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)  
  90. # 需要使用此种方式登陆  
  91. [root@client100 mysql]# mysql -uroot -pkongzhong  
  92. # 下面是删除mysql数据库中,密码为空的用户  
  93. mysql> use mysql  
  94. mysql> select Host,User,Password from user;  
  95. mysql> delete from user where password=”;  
  96. # 刷新授权表  
  97. mysql> flush privileges;  
  98. # 可选:运行安全设置脚本,修改MySQL用户root(不是系统的root!)的密码,禁止root远程连接(防止破解密码),移除test数据库和匿名用户,强烈建议生产服务器使用:/usr/local/mysql/bin/mysql_secure_installation [在我们的安装环境中,命令行直接输入mysql_secure_installation 即可]