Wednesday 23 July 2014

MYSQL MANUAL INSTALL

MYSQL MANUAL INSTALL


  • 下载及校验(5.5)
    从官方下载http://www.mysql.com/downloads/mysql/#downloads页面选择对应稳定版本后下载:
    http://dev.mysql.com/downloads/mysql/#downloads  
    (选择源码版Generic Linux (Architecture Independent), Compressed TAR Archive)
#wget   
#md5sum [filename]                         ;对比下载页面的md5值

*note:
    1. 也可从其他服务器复制
    2. 如果系统已经默认安装了低版本的,可以先用命令yum erase mysql 删除

  • 安装依赖组件bison和cmake
    • bison: yum install bison
    • cmake: yum install cmake
    • ncurses-devel
note:5.5以后,cmake取代configure编译

* Preconfiguration setup
#groupadd mysql
#useradd -r -g mysql mysql

note: mysql服务将会以mysql启动而不是root,这样可减少安全风险,如果存在则会报已存在

#mkdir -p /opt/mysqldata/{data,logbin}
# chown -R mysql:mysql /opt/mysqldata/data

* Beginning of source-build specific instructions
#tar zxvf mysql-VERSION.tar.gz
#cd mysql-VERSIONc
#cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/opt/mysqldata/data -DSYSCONFDIR=/etc/ \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_SPHINX_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_USER=mysql

note:
    1. 错误”Curses library not found. Please install appropriate package,“ 
      需 yum install ncurses-devel   ;然后重新编译
    2. 重新编译则需# make clean # rm -f CMakeCache.txt
    3. cmake报错则是缺失相关组件,gcc/c++/make/autoconf /automake 等:
      yum install gcc* c++* autoconf automake zlib* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel*
      然后删除原解压目录(或CMakeCache.txt文件),重新解压后再编译。
    4. 参数说明:
      -DWITH_READLINE=1          ——readline 库
      -DENABLED_LOCAL_INFILE=1  ——允许从本地导入数据
    5. 可忽略:
      警告:提领类型双关的指针将破坏强重叠规则,  
      警告:类型双关作用在不完全类型上可能破坏强重叠规则

#make
#make install

*Postinstallation setup
# cd /usr/local/mysql
# chown -R mysql:mysql .
# chown -R mysql /opt/mysqldata/

# cp ./support-files/my-huge.cnf /etc/my.cnf     //复制配置文件
 or #cp ./support-files/my-innodb-heavy-4G.cnf /etc/my.cnf

#vi /etc/my.cnf
在 [mysqld] 段增加
basedir = /usr/local/mysql
datadir = /opt/mysqldata/data
其他配置参考后文:配置优化。
注意以下值的修改 (例子4G内存):
skip-name-resolve
character-set-server = utf8
slow_query_log_file= ——不同于5.5之前版本
innodb_buffer_pool_size = 2G 
innodb_flush_log_at_trx_commit = 2
innodb_data_file_path = ibdata1:3G:autoextend
innodb_lock_wait_timeout = 120
innodb_flush_method = O_DIRECT


初始化数据:
# /usr/local/mysql/scripts/mysql_install_db \
--defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/opt/mysqldata/data --user=mysql
# chown -R root /usr/local/mysql
# cd /usr/local/bin
# ln -fs /usr/local/mysql/bin/mysql mysql
# ln -s /usr/local/mysql/lib/libmysqlclient.so /usr/lib/libmysqlclient.so
64位系统:ln -s /usr/local/mysql/lib/libmysqlclient.so.18  /usr/lib64/

【optional】#bin/mysqld_safe --user=mysql &   //测试,用netstat -tnl查看一下3306端口

设置服务为开机自启动
# cd /usr/local/mysql/
# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
# vi /etc/rc.d/init.d/mysqld ,编辑
basedir=/usr/local/mysql
datadir=/opt/mysqldata/data

# chmod 755 /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# chkconfig --level 345 mysqld on

添加myql/bin到path变量
# vi /etc/profile
 在”Path manipulation“ 下添加:
       pathmunge /usr/local/mysql/bin/
然后# source /etc/profile
服务启动、停止
#service mysqld start
#service mysqld stop




后续:
  • 检查存储引擎(需要InnoDB): show engines
  • 更改root密码:
    • shell 下:
      #mysqladmin -u root password 'newpassword'
    • mysql下
      --for 当前用户:
      SET PASSWORD=PASSWORD('password')    
      --for特定用户:
SET PASSWORD FOR ‘user_name’@’host_name’=PASSWORD('newpass');
      其相当于:
mysql> UPDATE user SET Password=PASSWORD(’new_password’) WHERE user=’username’ and HOST=’hostname’
mysql> FLUSH PRIVILEGES

  • 增加相关账户及删除无用账户
    • 设置完全权限用户,(有root了,所以一般不设置)
      GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password'
    • 设置对单个库的完全权限:
      grant all on DB.* to ‘xxxx’@’%’ identified by 'password';
    • 设置备份用户
      grant SELECT, Lock tables, Reload,SUPER,REPLICATION CLIENT on *.* to 'bakupuser'@'localhost' IDENTIFIED BY 'password' ;
    • 设置同步用户
      grant replication slave  on *.* to  'slave'@'%' IDENTIFIED BY 'password'
    • 删除空密码账户
      delete from mysql.user where password='';

  • 【optional】配置优化:
    • skip-name-resolve
    • character-set-server = utf8
    • max_connections=200
    • 取消innodb注释后,修改相关值:
      note:修改后再启动无法启动,报错“InnoDB: Error: data file /opt/mysqldata/data/ibdata1 is of a different size”; 这是因为innodb的配置选项在mysql最初启动时候系统使用了默认值,当把关于注释去掉的时候,就会出现这个报错。删除相关文件后启动即可。
注意:
      • 若修改innodb_log_file_size 相关值,重启不起来,也需删除之前的ib_logfile文件。
      • 其他innodb相关重要参数
innodb_buffer_pool_size = 2G 
innodb_flush_log_at_trx_commit = 2
innodb_data_file_path = ibdata1:3G:autoextend
innodb_lock_wait_timeout = 120
innodb_flush_method = O_DIRECT

  • 每日备份脚本
  • 历史日志清除脚本
    • 历史logbin
    • 历史慢查询

  • 常见错误:
    • 警告:提领类型双关的指针将破坏强重叠规则
      • 编译时的错误警报
      • 可以正常编译完毕、安装后创建表无问题,则可忽略该报警
    • [Warning] 'user' entry 'root@xxxx' ignored in --skip-name-resolve mode.



--------------------------------------------------------------------------------------------
附录A:5.5之前版本源码安装
1、建立MySQL使用者和群组:
#groupadd mysql
#useradd -g mysql mysql
2、针对gcc编译器优化
CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors   -fno-exceptions -fno-rtti -fomit-frame-pointer -ffixed-ebp"

./configure --prefix=/usr/local/mysql --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=all --enable-assembler --with-plugins=max

3, make && make install
在make install 的时候,可能会有一步卡住比较久,这时候可以不管它,一会就过去了.
完成后,拷贝配置文件到/etc/my.cnf,在源码目录内
#cp support-files/my-innodb-heavy-4G.cnf /etc/my.cnf    这个配置,需要服务器至少有4G内存.
并编辑配置文件,设定程序目录,数据目录等:
# generic configuration options
port            = 3306
socket          = /usr/local/mysql/tmp/mysql.sock
basedir         = /usr/local/mysql
datadir         = /opt/mysqldata/data
default-character-set=utf8
skip-locking
skip-name-resolve

#log-bin         = /opt/mysqldata/logbin/kwdb-master8
#slow_query_log  = /opt/mysqldata/kwdb-slow.log
#long_query_time = 2
……
说明:一般将data、logbin目录设置在/opt/mysqldata/,(前提/opt有足够空间)。

4,建立相应目录
#mkdir -p /opt/mysqldata/{data,logbin}

5,完成以上操作以后进行初始化数据库
#cd /usr/local/mysql
#bin/mysql_install_db --user=mysql

6,设置给mysql和root用户设定访问权限

#chown -R root.mysql /usr/local/mysql
#chown -R mysql.mysql /opt/mysqldata/
  

7,测试启动mysql
#cd /usr/local/mysql
#bin/mysqld_safe --user=mysql &


8,修改mysql数据库超级用户root的缺省密码:
#/usr/local/mysql/bin/mysqladmin -u root password 'yourpasswd'

9,设定开机就启动mysql,进入源码目录下

# cp support-files/mysql.server /etc/init.d/mysql
# chmod +x /etc/init.d/mysql
# chkconfig --add mysqld
# chkconfig --level 345 mysql on

10,建立数据库及用户,先登录root用户
mysql -u root -p
(要求输入密码)
create database dbtest;    #建立数据库
grant all on dbtest.* to usertest@'%';   #建立usertest的用户,并且将授权此用户对dbtest数据库的任何权限. %表示该用户可从远程任何
主机登录,如需限制为本机,则可将%改成localhost,如需限制为某个ip,则将%改成对应ip
set password for usertest@'%'=password('test');    设置密码

A: 添加mysql/bin到PATH:
在/etc/profile中添加:
export PATH=$PATH:/usr/local/mysql/bin
附1:error:
1、编译源码提示 No curses/termcap library found,但安装curses termcap都提示已经安装。
编译时加上路径即可解决,即
./configure --with-named-curses-libs=/usr/lib/libncurses.so.5
以上为centos 5.2,如果是Ubuntu,需要安装.sudo apt-get install libncurses5-dev

2、/bin/rm: cannot remove `libtoolT': No such file or directory
解决办法:

Is this a build from a source TAR downloaded from dev.mysql.com
or any mirror, you haven't accidently run any of the scripts in
"mysql-5.1.35/BUILD/", or run autoconf/automake/libtoolize manually?
就是在安装目录下,手动按次序执行
# autoreconf --force --install
# libtoolize --automake --force
# automake --force --add-missing

或简单执行:#autoreconf --force --install 再执行./configure就可以。

3、tar 包安装mysql, 在5.1.30 或者 5.1.24 (之前的版本我不知道了) 默认 Configure 如果你不加上 –with-plugins=innobase 这个参数的话! InnoDB 默认是不给你装上的.  而且tar 包还是要 max 版本的
或者:--with-plugins=all(或者max),
show engines命令来查看当前的mysql服务器所支持的存储引擎

附A2:Mysql编译安装参数优化
1. -static  13%
  --with-client-ldflags=-all-static
  --with-mysqld-ldflags=-all-static
静态链接提高13%性能

2. -pgcc  1%
  CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc \
    CXXFLAGS="-O3 -mpentiumpro -mstack-align-double \
    -felide-constructors -fno-exceptions -fno-rtti"
如果是Inter处理器,使用pgcc提高1%性能

3. Unix Socket  7.5%
  --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
使用unix套接字链接提高7.5%性能,所以在windows下mysql性能肯定不如unix下面

4. --enable-assembler
允许使用汇编模式(优化性能)
  
下面是总体的编译文件
编译代码
CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti -fomit-frame-pointer -ffixed-ebp"   
   ./configure \   
      --prefix=/usr/local/mysql --enable-assembler \   
      --with-mysqld-ldflags=-all-static   
      --with-client-ldflags=-all-static   
      --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock   
    --with-charset=utf8   
      --with-collation=utf8_general_ci   

      --with-extra-charsets=all   

No comments:

Post a Comment