mysql---源码安装


1、安装依赖包

[root@localhost mysql-5.1.50]# yum -y install gcc gcc-c++ ncurses ncurses-devel openssl openssl-devel libtool*
2、创建用户
[root@localhost mysql-5.1.50]# groupadd mysql
[root@localhost mysql-5.1.50]# useradd mysql -g mysql -s /sbin/nologin
3、安装Mysql
[root@localhost mysql]# tar xf mysql-5.1.50.tar.gz
[root@localhost mysql]# cd mysql-5.1.50
[root@localhost mysql-5.1.50]# ./configure '--prefix=/usr/local/services/mysql' '--localstatedir=/data/dbdata/' '--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock' '--with-charset=utf8' '--with-extra-charsets=complex' '--with-pthread' '--enable-thread-safe-client' '--with-ssl' '--with-client-ldflags=-all-static' '--with-mysqld-ldflags=-all-static' '--with-plugins=partition,federated,ndbcluster,innobase,csv,blackhole,myisam,innodb_plugin,heap,archive' '--enable-shared' '--enable-assembler'

详解
--prefix ------》指定 Mysql 安装目录 (必须)
--localstatedir ------》指定Mysql数据存储目录(必须)
--with-unix-socket-path -----》执行socke存放位置(必须)
--with-charset -----》指定默认字符集
--with-extra-charsets -----》可以扩展复杂字符集

--with-pthread 强制使用pthread类库
--enable-thread-safe-client 使用编译客户端;(让客户端支持线程的意思)
--with-ssl 启用SSL的支持
--with-client-ldflags=-all-static 静态编译MySQL客户端;(静态链接提高13%性能)
--with-mysqld-ldflags=-all-static 静态编译MySQL服务器端;(静态链接提高13%性能)
--with-plugins -----》MySQL服务器端支持的存储引擎
--enable-shared 共享变异模块
--enable-assembler 使用汇编模式提高效率
更多的详细信息可以参考:http://2999835.blog.51cto.com/2989835/1376960
4、初始化
[root@localhost mysql-5.1.50]# mkdir /data/dbdata -p
-----》 建立Mysql的数据存储目录
[root@localhost mysql-5.1.50]# chown -R mysql:mysql /data/dbdata/
----》授权
[root@localhost mysql-5.1.50]# chown -R mysql:mysql /usr/local/services/mysql
----》授权
[root@localhost mysql-5.1.50]# /usr/local/services/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/services/mysql --datadir=/data/dbdata/
------》开始初始化
[root@localhost mysql-5.1.50]# cp /usr/local/services/mysql/share/mysql/mysql.server /etc/init.d/mysqld
[root@localhost mysql-5.1.50]# chmod 755 /etc/init.d/mysqld
[root@localhost ~]# vim /etc/init.d/mysqld
-------->修改启动脚本
basedir=/usr/local/services/mysql
datadir=/data/dbdata/

5、配置文件
[root@localhost mysql]# cp /mysql/my.cnf /etc/my.cnf
———》这是自己的配置文件
[root@localhost mysql]# vim /etc/my.cnf
[client]      
port            = 3306   #客户端连接端口3306(可以更改)
socket          = /usr/local/mysql/tmp/mysql.sock  #(连接sock所在位置)
[mysqld]
datadir=/data/dbdata/   #数据库存放目录
skip-name-resolve      #garnt时,必须使用ip,不能使用主机名
lower_case_table_names=1 #不区分大小写
innodb_file_per_table=1 #可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间
expire_logs_days = 10    #binlog日志保留10天
federated              #本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现
port            = 3306  # Mysql 端口默认3306 ,可以修改 socket          = /usr/local/mysql/tmp/mysql.sock  #Mysql 定义sock的存放位置
back_log = 50   #在MySQL的连接请求等待队列中允许存放的最大连接请求数。系统默认值为50
max_connections = 330 #最大并发连接数 ,增大该值需要相应增加允许打开的文件描述符数 max_connect_errors = 1000  #如果某个用户发起的连接error超过该数值,则该用户的下次连接将被阻塞, table_open_cache = 2048    # Table_open_cache:表描述符缓存大小,可减少文件打开/关闭次数
max_allowed_packet = 16M  #将发出“信息包过大”错误,并关闭连接,默认值16M
binlog_cache_size = 2M     #限制其最大大小(当单个事务过大的时候 MySQL 会申请更多的内存)
max_heap_table_size = 64M  #内存表的大小
sort_buffer_size = 8M       #MyISAM表发生变化时重新排序所需的缓冲。一般64M足矣
join_buffer_size = 4M       # InnoDB用来缓存数据和
thread_cache_size = 64     # 缓存可重用的线程数,可以适当的调整
thread_concurrency = 8     #这个是innodb内核的并发线程处理参数,前端有100个连接,发来1000个sql,如果这个参数被设置成2。那么这1000个sql中,最多只有2 个sql在innodb内核运行。其它都得等。(事实上,处理过程很复杂,可以先这么理解,不是所有sql都需要放在Innodb内核处理的)
query_cache_size = 128M   #指定MySQL查询结果缓冲区的大小。调优可以适当调整
query_cache_limit = 2M    #缓存单条SQL的结果集上限。默认4KB。调优可以适当调整
ft_min_word_len = 4     #指定被索引的关键词的最小长度。注意:在更改该参数值后,索引必须重建!注意此值设定好后。不要随意修改
default-storage-engine = innodb  #默认引擎使用innodb
thread_stack = 192K           #应小于可用内存保持默认
transaction_isolation = REPEATABLE-READ  #设定默认的事务隔离级别
tmp_table_size = 128M  # 内部(内存中)临时表的最大大小  如果一个表增长到比此值更大,将会自动转换为基于磁盘的表. 此限制是针对单个表
log-bin=mysql-bin    # 打开二进制日志功能.注意此功能必须打开
binlog_format=mixed #Mysql主从复制参数,必须开启
slow_query_log      #开启慢日志
long_query_time = 2  #命令耗时大于2秒的记录
server-id = 1   #主从复制唯一的服务辨识号,数值位于 1 到 2^32-1之间. 忽略此选项,MySQL不会作为master生效,越小优先级越高成为master
key_buffer_size = 8M  #关键词缓冲的大小, 一般用来缓冲MyISAM表的索引块
read_buffer_size = 2M # 用来做MyISAM表全表扫描的缓冲大小. 
read_rnd_buffer_size = 2M #当在排序之后,从一个已经排序好的序列中读取行时,行数据将从这个缓冲中读取来防止磁盘寻道
bulk_insert_buffer_size = 64M  # 当突发插入被检测到时此缓冲将被分配用于myisam
myisam_sort_buffer_size = 128M  # 这在每个线程中被分配.所以在设置大值时需要小心
myisam_max_sort_file_size = 10G # MySQL重建索引时所允许的最大临时文件的大小如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)
myisam_repair_threads = 1  #如果一个表拥有超过一个索引, MyISAM 可以通过并行排序使用超过一个线程去修复他们
myisam_recover          #  自动检查和修复没有适当关闭的 MyISAM 表
innodb_additional_mem_pool_size = 32M  #附加的内存池被InnoDB用来保存 metadata 信息,正常保持默认
innodb_buffer_pool_size = 2G# InnoDB使用一个缓冲池来保存索引和原始数据,越大所需要的磁盘I/O 就越少,服务器物理内存大小的70%
innodb_data_file_path = ibdata1:10M:autoextend #如果你只有单个逻辑驱动保存你的数据,一个单个的自增文件就足够好了
innodb_file_io_threads = 8  # 用来同步IO操作的IO线程的数量
innodb_thread_concurrency = 16 # 在InnoDb核心内的允许线程数量 过高的值可能导致线程的互斥颠簸
 
innodb_flush_log_at_trx_commit = 2 # 0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘  # 2代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上
innodb_log_buffer_size = 16M    # 用来缓冲日志数据的缓冲区的大小.  当此值快满时, InnoDB将必须刷新数据到磁盘上
innodb_log_file_size = 512M  #在日志组中每个日志文件的大小,
innodb_log_files_in_group = 3 # 在日志组中的文件总数.  通常来说2~3是比较好的
innodb_max_dirty_pages_pct = 60  #在InnoDB缓冲池中最大允许的脏页面的比例.  60-90都可以
innodb_lock_wait_timeout = 120  #在被回滚前,一个InnoDB的事务应该等待一个锁被批准多久
[mysqldump]
quick  # 不要在将内存中的整个结果写入磁盘之前缓存. 在导出非常巨大的表时需要此项 
max_allowed_packet = 256M  # 每个连接独立的大小.大小动态增加 
[mysql]
auto-rehash         #可以在命令可以使用tab键补齐
prompt=\\u@\\d \\R:\\m>  #在Mysql命令显示主机名字
[myisamchk]
key_buffer_size = 512M # MyISAM 使用特殊的类似树的cache来使得突发插入
sort_buffer_size = 512M  # 这在每个线程中被分配.所以在设置大值时需要小心
read_buffer = 8M  # 用来做MyISAM表全表扫描的缓冲R大小.  当全表扫描需要时,在对应线程中分配
write_buffer = 8M  # 用来做MyISAM表全表扫描的缓冲W大小.  当全表扫描需要时,在对应线程中分配
[mysqlhotcopy]
interactive-timeout  #服务器关闭交互式连接前等待活动的秒数参数默认值:28800秒(8小时)
[mysqld_safe]
open-files-limit = 8192 #设置打开文件的句柄数量,在系统里面可以用ulimit –a 查看
 

6、启动服务和设置环境变量
[root@localhost mysql]# vim /etc/profile
MYSQL=/usr/local/services/mysql/bin
PATH=$PATH:$MYSQL
export PATH
[root@localhost mysql]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost mysql]# source /etc/profile
[root@localhost mysql]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/services/mysql/bin

启动服务
[root@localhost mysql]# /etc/init.d/mysqld start
Starting MySQL.......Manager of pid-file quit without updat
[FAILED].
[root@localhost dbdata]# cat /data/dbdata/localhost.localdomain.err
------》查看报错的日志
。。。。。。。
141026 4:10:35 [ERROR] Can't start server : Bind on unix socket: No such file or directory
141026 4:10:35 [ERROR] Do you already have another mysqld server running on socket: /usr/local/mysql/tmp/mysql.sock ?
141026 4:10:35 [ERROR] Aborting


解决办法
[root@localhost mysql]# mkdir /usr/local/mysql/tmp/ -p
[root@localhost mysql]# chown -R mysql:mysql /usr/local/mysql/tmp/
[root@localhost mysql]# /etc/init.d/mysqld start
Starting MySQL.. [ OK ]
[root@localhost mysql]# mysql
------》运行mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.50-log Source distribution

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

root@(none) 18:21>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值