注:于 2017年6月份 更新了该文章
一、mysql的各个文件的作用
目录 | 目录解释 |
---|---|
bin, scripts | mysqld server, client and utility programs(实用程序) |
data | Log files, databases(存放日志文件,数据库) |
docs | MySQL manual in Info format(文档) |
man | Unix manual pages(说明书) |
include | Include (header) files |
lib | Libraries (库) |
share | Miscellaneous support files, including error messages, sample configuration files, SQL for database installation(各种支持文件:错误信息,示例配置文件,SQL数据库安装) |
sql-bench | Benchmarks(基准) |
二、使用二进制方式安装MySQL
1、获取MySQL安装包
从官网下载MySQL安装包:http://dev.mysql.com/downloads/
版本:GA 、DMR 、RC 、Beta
- 一般,使用GA版本安装。
- DMR:开发版,未完善完整。
- Beta:在DMR的基础上,进一步完善,但仍然不完整,未正式公布。
在官网下载MySQL时,可以留意下MD5:
- MD5 文件作用:校验下载的软件 是否安全、是否有损坏。
- 命令:md5sum 软件安装包名
- 在线上使用,下载到软件安装包,最好校验一下,避免安装失败。
2、安装前准备 之 配置Linux环境
(1) 关闭numa
- 即使是多实例,也建议关闭!
- 关闭numa,需要重启Linux系统,若不想重启Linux,可以在启动mysql之前 执行:
- numactl -interleave=all /path/mysqld --defaults-file=/path/my.cnf &
- 查看numa是否关闭:
- numactl --show 或 numactl --hardware
(2) 限制设置 /etc/security/limits.conf
主要的参数:
① open files
- 针对的错误:too many open file:24 或 os error code 11:resource temporarily unavailable
- 通过配置参数来避免以上两个错误:
- 在/etc/rc.local 文件,配置 ulimit -Sn 65535 和 ulimit -Su 10000
- 或者 在 limit.conf文件中添加四个参数:
- hard nproc 65535
- soft nproc 65535
- hard nofile 65535
- soft nofile 65535
② max user processes
(3) swap
要么不分配swap,要么最多分配4G!
查看swap 存放的位置:sysctl -a |grep swap
建议禁掉swappiness,操作为:
- 首先,直接执行 sysctl -w vm.swapiness=0
- 然后,在文件/etc/sysctl.conf 中添加一行 vm.swapiness=0 ,以实现在系统重启之后,通过文件指定生效
(4) 文件系统的选择
推荐XFS,也可以使用 ext4。
(5) selinux and iptables
常见的相关报错:Errcode: 13 - Permission denied ——selinux影响所致
关闭selinux:
- 首先,setenforce 0
- 然后,修改文件/etc/sysconfig/selinux ,以实现在系统重启之后,通过文件指定生效
查看selinux是否关闭:
- getenforce # 若显示 disables 即为已关闭
iptables:
- 一般在内网环境会关闭。
- 关闭的命令:chkconfig --del iptables
3、安装MySQL
(1) 为MySQL创建 使用的 账户
groupadd mysql # 创建 名为mysql的组
useradd -g mysql -d /usr/local/mysql -s /sbin/nologin -M mysql
id mysql # 确认用户创建成功
命令解释:
- groupadd 创建一个组;useradd 创建一个用户;
- 由于/sbin/nologin ,使得 创建的账号 不可以登录;
- -g mysql 即指定用户属于mysql组;-d /path 即指定用户登入是的启动目录;
- -s /path 即用户登录后使用的shell;-M 即不自动创建用户登录目录;mysql 即创建的用户名。
(2) 基本的软件 安装
mkdir /opt/mysql
cd /opt/mysql
tar xzvf mysql-5.7.18-linix-glibc2.5-x86_64.tar.gz
# 使该目录属于 mysql组和mysql用户,由于mysql目录是软链接,继而真实文件同时会被修改属组属主
chown -R mysql:mysql mysqll-5.7.18-linix-glibc2.5-x86_64
cd /usr/local
# 在/usr/local下创建一个解压目录的软链接,名为 mysql目录
ln -s /opt/mysql/mysql-5.7.18-linix-glibc2.5-x86_64 mysql
(3) 修改配置文件 和 创建一些数据库相关的目录
① 修改配置文件 :/etc/my.cnf
- mysql --help|grep my.cnf
- # 查看my.cnf的默认路径,确认该路径下是否存在my.cnf,默认路径没有最好,若在两处有,则会从前开始加载执行到最后一个配置文件,如果某参数在两处都有,那么在后面的配置文件会覆盖前面的。
- ln /usr/my.cnf /etc/my.cnf
- # 找到my.cnf文件,将该文件硬链接到my.cnf默认的路径一份 (一般使用/etc/my.cnf)
② 配置文件 my.cnf 中的 目录 设计
- 建议 将数据库的数据和日志存放在一个单独挂载的目录下!
- /data 是一个单独挂载的分区
- datadir /data/mysql/mysql3306/data
- log-bin /data/mysql/mysql3306/logs/mysql-bin
- tmpdir /data/mysql/mysql3306/tmp
③ 创建目录:
- mkdir /data/mysql/mysql3306/{data,logs,tmp} -p # 根据my.cnf创建目录
基本的配置文件内容:
[mysqld]
user = mysql
port = 3306
basedir = /usr/local/mysql
datadir = /data/mysql/mysql3306/data
socket = /data/mysql/mysql3306/data/mysql3306.sock
log_error = /data/mysql/mysql3306/data/error.log
pid-file = mysql3306.pid
character-set-server = utf8mb4
log-bin = /data/mysql/mysql3306/logs/mysql-bin
……
(4) 初始化
初始化 即:将一些重要的文件创建了,比如 :数据存储的ibdata文件,日志文件等。
针对 mysql 5.7 版本,如下操作:
- cd /usr/local/mysql
- ./bin/mysqld --defaults-file=/etc/my.cnf --initialize
- 执行本条命令,没有返回消息,就是好消息
- 执行完上条命令,若报错,可以查看/data/mysql/mysql3306/data/error.log 文件中的 [error]
针对 mysql 5.6,5.5 版本,如下操作:
- cd /usr/local/mysql
- ./script/mysql_db_install 或 ./bin/mysql_db_install
(5) 启动
cd /usr/local/mysql
cp support-files/mysql.server /etc/init.d/mysql
/etc/init.d/mysql start
ps axu |grep mysqld # 查看mysql是否启动
扩展:
MySQL一般不使用系统自启动,若因报错退出,需要解决完问题手工启动,以下有两种手工启动方式:
- /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf & # 一般使用它
- /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
将 bin 目录下的命令添加到PATH变量中:
- export PATH=$PATH:/usr/local/mysql/bin
(6) 第一次 连接和登录 mysql
# root 用户 会创建一个临时的密码,查看,并记下,用于第一次登录使用
- cat /data/mysql/mysql3306/data/error.log |grep "password"
# 使得 命令mysql 可以使用
- echo "export PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile
# 连接mysql ,使用记下的临时密码
- mysql -S /tmp/mysql3306.sock -p
# 修改密码,在5.7 版本中,若不修改密码,之后操作会报错!
- > alter user user() identified by 'guolm';
# 定制mysql登录后的提示符:(在 my.cnf 添加)
[mysql]
prompt="\u@centos \\h:\\p [\\d]> "
(7) 关闭 mysql
普通的关闭方法:
- /etc/init.d/mysql stop 或 service mysql stop
若使用以上的手工启动的方法,在关闭时需要使用如下命令:
- mysqladmin -S /tmp/mysql3306.sock -p shutdown
至此,mysql二进制安装方式安装完成!