mysql安装以及版本的选择

mysql安装以及版本的选择

前言

2008年,当Sun Microsystems以大约一亿美元收购MySQL AB的时候,MySQL迅速成长为大受欢迎的数据库。然而第二年,Oracle接管了Sun,MySQL也是交易的一部分。MySQL的用户和开发者开始质疑开源数据库的命运,与此同时他们开始寻找替代品.Mariadb就此诞生。mariadb带来了很多新特性,据说性能也优于mysql.但是并不是一边倒的形式,mysql在发现mariadb这个黑马比自己的性能好的情况下,后续几个版本也做了优化。至于应该选择mariadb 还是mysql数据库。网上由很多优缺点对比,大家可以根据自己公司业务的需求来选择。因为产品就是这样,适合自己需求才是最好的。另外我个人建议如果公司用mysql已经有一段时间了没什么大问题尽量不要选择更换,因为数据库产品的更换是需要谨慎的,可能代码不支持或者影响业务那就不值得了。如果你执意要更换成mariadb,需要提前和开发沟通,做好技术调研。并应用于测试环境跑上一段时间测试性能以及稳定性,然后迁移到非核心业务模块继续测试,再升级到生产环境。今天以mysql为例和大家一起学习. 

mysql获取以及版本选

必要条件:community(社区版)  mysql社区版是提供免费的版本,但是不包括技术支持和其他客服服务,我们下载一般都是选社区版。

补充条件:再选择社区版后,我们应该选择比较稳定的ga版本,不要选择那些短时间更新发布很多版本的。因为可能有一些漏洞或者bug需要修复才会造成频繁更新。(mysql5.7就是一个很好的版本。而mysql8.0据说速度快于mysql5.7三倍。但是改变比较多,并且还没有太过稳定。永远不要做第一个吃螃蟹的人。)

官网需要登陆oracal账号才可下载

账号:864584523@qq.com

密码:Ww1967770454

搜狐下载源:

http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

源码安装
与二进制发行版本相比,如果我们选择了通过源代码进行安装,那么在安装过程中我们能够对MySQL
所做的调整将会更多更灵活一些。因为通过源代码编译我们可以:
a) 针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码;
b) 根据不同的软件平台环境调整相关的编译参数;
c) 针对我们特定应用场景选择需要什么组件不需要什么组件;
d) 根据我们的所需要存储的数据内容选择只安装我们需要的字符集;
e) 同一台主机上面可以安装多个MySQL;
f) 等等其他一些可以根据特定应用场景所作的各种调整。
在源码安装给我们带来更大灵活性的同时,同样也给我们带来了可能引入的隐患:
a) 对编译参数的不够了解造成编译参数使用不当可能使编译出来的二进制代码不够稳定;
b) 对自己的应用环境把握失误而使用的优化参数可能反而使系统性能更差;
c) 还有一个并不能称之为隐患的小问题就是源码编译安装将使安装部署过程更为复杂,所花费的
时间更长;

安装MySQL(这里我分为普通二进制安装和脚本安装)

mysql二进制安装:

注意:

mysql安装 路径:base_dir=/usr/local/mysql  mysql 数据路径: data_dir=/usr/local/mysql/data  mysql日志路径:/var/log/mysql   socket路径:/usr/local/mysql/mysql.sock  (需要软连接到tmp),或者直接配置/tmp/mysql.sock (推荐后者)接下来所有相关配置要保持一致

1.下载mysql包

wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

2.创建mysql用户

groupadd mysql

useradd mysql -g mysql -s /sbin/nologin

3.解压文件到指定目录

tar -xvzf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

mv  usr/local/mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql

4.创建数据目录,日志目录并授权

mkdir -pv /usr/local/mysql/data/ && chown mysql:mysql  /usr/local/mysql -R

mkdir -pv /var/log/mysql/ &&chown mysql:mysql /var/log/mysql -R

5.设置mysql 服务文件配置环境变量

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

chmod a+x /etc/init.d/mysqld

vim /etc/init.d/mysqld

上面划线的方法不推荐,因为centos7系统推荐用systemctl来管理服务,这个用的还是6的/etc/init.d/管理的脚本,另外拷贝之后,除了添加basedir datadir 还有一个pid_file_path 需要指定,否则启动时候,并不是以你的my.cnf指定的pid文件为准,而是优先根据你这个mysqld脚本里pid_file_path写的为准,最初为空,所以默认会在我的data_dir 下面产生一个以我主机名为前缀的pid,这样的坏处就是如果你的主机名哪天修改了,会造成mysql崩溃,找不到pid file。这是很严重的。所以推荐用7系统格式的脚本来管理,启动时候指定 –defaults-file=/etc/mycnf 内容如下

vim /usr/lib/systemd/system/mysqld.service

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld_safe –defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1
#PrivateTmp=false

备注:推荐用mysqld_safe启动而不是mysqld  ,如果用mysqld启动查看进程只有mysql.sock。查看不到pid 文件。

授予权限:chmod a+x  /usr/lib/systemd/system/mysqld.service

服务加载: systemctl daemon-reload

echo “export PATH=/usr/local/mysql/bin:$PATH” >>/etc/profile&&source /etc/profile

6.配置my.cnf 并初始化

需要注意:

  • 开机启动文件,我加了#注释内容,导致mysqld频繁重启崩溃,取消了内容好了。这里强调的是如果你的服务也是反复重启或者崩溃,在日志没有明显说明时,可以查看下你的mysqld.service是否有格式错误,多余字符,路径错误,文件不存在等原因
  • 如果mysql.sock配置的是非/tmp 目录下的话,启动会提示  ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’,需要执行

ln -s /usr/local/mysql/mysql.sock /tml/mysql.sock。

  • 也可以直接配置成/tmp.sock

mysqld  –initialize-insecure –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data

8.启动mysql服务检查进程并连接

service mysqld start

ps -ef |grep mysql

达到pid 并不随着主机名变化,并且通过mysqld_safe来管理mysql启动更加安全。

执行 mysql命令直接登陆数据库(默认无密码)

脚本安装

前提:需要提前配置好my.cnf

内容如下:

#!/bin/bash
##author:王庭威
##date:2019/1/18
##descrip:mysql5.7.24 install shel
########变量###############################################
install_dir=/usr/local
base_dir=$install_dir/mysql
data_dir=$install_dir/mysql/data
log_dir=/var/log/mysql
###################创建用户解压#############################
id mysql|| groupadd mysql&&useradd mysql -M -s /sbin/nologin -g mysql
echo “创建用户成功”
cd /opt/soft/&&tar -xvzf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz -C $install_dir
mv $install_dir/mysql-5.7.24-linux-glibc2.12-x86_64 $base_dir
mkdir -pv $data_dir && chown mysql:mysql $base_dir -R
mkdir -pv $log_dir && chown mysql:mysql $log_dir
##########开机启动脚本####推荐用mysqld_safe启动而不是mysqld#
cat >>/usr/lib/systemd/system/mysqld.service<<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld_safe –defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1
#PrivateTmp=false
EOF
chmod a+x /usr/lib/systemd/system/mysqld.service
########################mysql初始化############################
cd $base_dir/bin/&& ./mysqld –initialize-insecure –user=mysql –basedir=$base_dir –datadir=$data_dir
echo “export PATH=$base_dir/bin:$PATH” >>/etc/profile
source /etc/profile
systemctl daemon-reload
service mysqld start
ps -ef |grep mysql
echo “恭喜你,mysql已经安装成功”
#############################################################

截图如下:

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Loading...