Linux网站架构系列之Mysql----部署篇

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。本篇将为大家讲解mysql的简单部署。

mysql的分为四个版本:

1
2
3
4
Alpha版:一般只在软件开发公司内部运行,不对外公开。
Beta版:完成功能的开发和所有的测试工作之后的产品,不会存在较大的漏洞和BUG,并且邀请和提供给用户体验与测试,以便更全面地测试软件的不足之处或存在的问题。
RC版:属于生产环境发布之前的一个小版本或称候选版本,是测试Beta版本二收集到的BUG或不足之处,根据手机到的信息而进行修复和完善之后的产品。
GA版本:软件产品正式发布的版本,也成生产版本的产品。

并且mysql为了更好发展将版本路线分为了三条。

1
2
3
第一条产品线:从5.0版本升级到5.1的系列版本,继续完善与改进其用户体验和性能,同时增加新功能。
第二条产品线:为了更好的整合MySQL AB公司,社区和新功能。版本编号从5.4开始,目前发展到5.6。
第三条产品线:为了更好推广MySQL Cluster 版本,从6.0版本开始,目前发展到7.3版本。

由于mysql不同产品线之间的编译安装方法还有差别,因此本篇将分别为大家讲解mysql的5.1.7版本和5.6.13版本的简单部署。

5.1.7版本

1
2
3
4
5
6
7
8
环境
CentOS6.4 x86_64位 采用最小化安装,系统经过了基本优化
selinux为关闭状态,iptables为无限制模式
ip:192.168.1.113 /24
mysql版本:mysql-5.1.70
源码包存放位置: /server/tools
源码包编译安装位置: /etc/local/ 软件名称
数据库存放位置: /mydata


一、准备工作

1、开发环境部署

1
2
[root@c64-web ~] # yum groupinstall "Development tools" "Server Platform Development" -y #安装这两个开发环境的软件包组
[root@c64-web ~] # yum install pcre* -y #安装pcre兼容的正则表达式

2、创建用户及目录

1
2
3
[root@c64-web ~] # useradd -s /sbin/nologin -M mysql #创建mysql用户,并加入mysql组,不创建家目录,关闭登陆
[root@c64-web ~] # mkdir /mydata  #创建数据库存放目录
[root@c64-web ~] # chown -R mysql.mysql /mydata

3、下载源码包

1
2
[root@c64-web ~] # cd /server/tools
[root@c64-web tools] # wget http://mysql.ntu.edu.tw/Downloads/MySQL-5.1/mysql-5.1.70.tar.gz


二、编译安装

准备工作已经做好了,现在我们就开始编译安装mysql。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@c64-web tools] # tar zxf mysql-5.1.70.tar.gz
[root@c64-web tools] # cd mysql-5.1.70
[root@c64-web mysql-5.1.70] # ./configure \
--prefix= /usr/local/mysql  \      #设定mysql安装路径,默认为/usr/local
--with-unix-socket-path= /usr/local/mysql/tmp/mysql .sock \   #指定Mysql socket文件存放目录
--localstatedir= /mydata  \        #设定mysql的数据文件存放位置
-- enable -assembler \             #允许使用汇编模式(优化性能)
-- enable -thread-safe-client \    #以线程方式编译客户端
--with-mysqld-user=mysql \       #指定MySQL运行的系统用户
--with-big-tables \              #启用大表支持
--without-debug \                #使用非debug模式
--with-pthread \                 #强制使用pthread线程序库编译
--with-extra-charsets=complex \  #复杂字符集支持
--with-readline \                #使用系统readline代替捆绑副本。
--with-ssl \                     #启用ssl加密
--with-embedded-server \         #构建嵌入式MySQL库 (libmysqld.a)
-- enable - local -infile \          #让mysql支持从本地加载数据库(默认关闭)
--with-plugins=partition         #mysql分区功能支持
--with-plugins=innobase \        #innobas存储引擎支持
--with-mysqld-ldflags=-all-static \     #服务器使用静态库(优化性能)
--with-client-ldflags=-all-static       #客户端使用静态库(优化性能)
[root@c64-web mysql-5.1.70] # make && make install

执行了上面的操作之后,mysql-5.1.7版本就编译安装成功了。

下面为快速复制,编译配置文本:

1
[root@c64-web mysql-5.1.70] # ./configure --prefix=/usr/local/mysql-5.1.70 --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock --localstatedir=/mydata --enable-assembler --enable-thread-safe-client --with-mysqld-user=mysql --with-big-tables --without-debug --with-pthread --with-extra-charsets=complex --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=partition --with-plugins=innobase --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static


三、启动配置

1、创建目录软链接

mysql安装完成之后,我们要先为编译安装好的目录添加软链接。此操作在生产环境中为重要调优参数,添加这条软链接的目的有两点:1、方便人类使用。2、便于以后升级版本。

1
2
[root@c64-web mysql-5.1.70] # cd /root
[root@c64-web ~] # ln -s /usr/local/mysql-5.1.70 /usr/local/mysql

2、创建其它相应目录及权限设置

1
2
[root@c64-web ~] # mkdir /mydata   #建立mysql数据文件目录
[root@c64-web ~] # chown -R mysql /mydata  #授权mysql用户访问mysql数据库目录

3、获取Mysql主配置文件并修改

由于mysql的主配置文件,编译安装之后默认是没有的。因此我们需要在mysql的编译包中,选择预支的*.cnf结尾的配置文件将其复制到我们的/etc/目录下。

1
2
3
4
5
6
7
8
9
[root@c64-web ~] # ll /server/tools/mysql-5.1.70/support-files/*.cnf
-rw-r--r-- 1 root root 4714 11月 6 02:25  /server/tools/mysql-5 .1.70 /support-files/my-huge .cnf
-rw-r--r-- 1 root root 19763 11月 6 02:25  /server/tools/mysql-5 .1.70 /support-files/my-innodb-heavy-4G .cnf
-rw-r--r-- 1 root root 4688 11月 6 02:25  /server/tools/mysql-5 .1.70 /support-files/my-large .cnf
-rw-r--r-- 1 root root 4699 11月 6 02:25  /server/tools/mysql-5 .1.70 /support-files/my-medium .cnf
-rw-r--r-- 1 root root 2467 11月 6 02:25  /server/tools/mysql-5 .1.70 /support-files/my-small .cnf   #中小型公司用这个即可
[root@c64-web mysql-5.1.70] # /bin/cp /server/tools/mysql-5.1.70/support-files/my-small.cnf /etc/my.cnf
修改mysql的主配置文件 /etc/my .cnf,添加如下1行
datadir= /mydata   #我们自定义的数据库存放目录

4、让系统识别源码包安装的软件

a)将mysql的库文件路径加入系统的库文件搜索路径中

方法一:直接做软链接

1
[root@c64-web ~] # ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

方法二:利用ldconfig导入系统库(推荐)

1
2
[root@c64-web ~] # echo "/usr/local/mysql/lib" >> /etc/ld.so.conf.d/mysql.conf
[root@c64-web ~] # ldconfig

b)输出mysql的头文件到系统头文件

1
[root@c64-web ~] # ln -s /usr/local/mysql/include/mysql /usr/include/mysql

c)配置mysql命令全局使用路径

1
2
[root@c64-web ~] # echo "PATH=/usr/local/mysql/bin:$PATH" >>/etc/profile
[root@c64-web ~] # source /etc/profile

5、以mysql用户的身份初始化数据库并启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[root@c64-web ~] # /usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql --datadir=/mydata --user=mysql  #初始化mysql数据库文件
WARNING: The host  'c64-web'  could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !    #此警告我们可以通过在/etc/hosts文件中修改127.0.0.1后面的localhost为当前c64-web来消除。
Installing MySQL system tables...
131108 18:07:26 [Warning]  '--skip-locking'  is deprecated and will be removed  in  a future release. Please use  '--skip-external-locking'  instead.    #这里的警告无需理会
OK
Filling help tables...
131108 18:07:27 [Warning]  '--skip-locking'  is deprecated and will be removed  in  a future release. Please use  '--skip-external-locking'  instead.    #这里的警告无需理会
OK
To start mysqld at boot  time  you have to copy
support-files /mysql .server to the right place  for  your system
#这里是说,你可以创建快速启动脚本,我们下面会提到
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To  do  so, start the server,  then  issue the following commands:
/usr/local/mysql/bin/mysqladmin  -u root password  'new-password'
/usr/local/mysql/bin/mysqladmin  -u root -h lhh password  'new-password'
#教你如何创建root用户进入mysql数据库的密码
Alternatively you can run:
/usr/local/mysql/bin/mysql_secure_installation
which  will also give you the option of removing the  test
databases and anonymous user created by default.  This is
strongly recommended  for  production servers.
See the manual  for  more  instructions.
You can start the MySQL daemon with:
cd  /usr/local/mysql  /usr/local/mysql/bin/mysqld_safe  &
#上面的即为开启命令中的一种,后面的&为放入后台执行的意思
You can  test  the MySQL daemon with mysql- test -run.pl
cd  /usr/local/mysql/mysql-test  ; perl mysql- test -run.pl
#这里是给你说如何执行测试
Please report any problems with the  /usr/local/mysql/scripts/mysqlbug  script!
#以上为初始化创建mysql数据库文件时产生的信息。
[root@lhh mydata] # cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &
[1] 7146
131108 18:50:37 mysqld_safe Logging to  '/mydata/lhh.err' .
131108 18:50:37 mysqld_safe Starting mysqld daemon with databases from  /mydata    #此处需要敲击回车才能回到命令输入界面。

mysql数据库启动的另外一种方法

1
2
3
4
5
[root@c64-web ~] # /bin/cp /server/tools/mysql-5.1.70/support-files/mysql.server /etc/init.d/mysqld    #拷贝mysql启动脚本mysql命令路径
[root@c64-web ~] # chmod 700 /etc/init.d/mysqld      #使脚本可执行
[root@c64-web ~] # /etc/init.d/mysqld start    #这是启动数据库方法之一
[root@c64-web ~] # /etc/init.d/mysqld stop     #关闭数据库的方法
[root@c64-web ~] # killalll mysqld #关闭数据库的另外一种方法

6、检查mysql数据库是否启动:

1
2
[root@c64-web ~] # netstat -lnt|grep 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN

可以看到,我们的mysql服务已经启动起来了。这里如果发现3306端口没起来,请tail -100 /usr/local/mysql/data/机器名.err 检查日志报错进行调试。

7、设置初始账户,并登陆后台

在上面,初始化创建mysql数据库的时候,已经给我们提到了如何给mysql数据库账号设置密码,下面我们就进行操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@c64-web ~] # mysqladmin -u root password 123456   #设置密码
[root@c64-web ~] # history -c  #设置之后注意清除历史记录,防止密码泄露
[root@c64-web ~] # mysql -u root -p    #连接数据库查看
Enter password:    #这里输入刚才设置的密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection  id  is 2
Server version: 5.1.70 Source distribution
Copyright (c) 2000, 2013, Oracle and /or  its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and /or  its
affiliates. Other names may be trademarks of their respective
owners.
Type  'help;'  or  '\h'  for  help. Type  '\c'  to  clear  the current input statement.
mysql> show databases;    #查看现有的数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
test  |
+--------------------+
3 rows  in  set  (0.00 sec)
mysql>  select  user();     #查看现有用户
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row  in  set  (0.00 sec)
mysql> quit    #退出
Bye

到此,我们mysql-5.1.17的部署就已经完成了,下面将是5.6.13的部署。

5.6.13版本

mysql的第二条产品线和第一条产品线的产品主要在数据存储引擎和编译安装的方法上有点区别,因此这里我就主要对编译安装的部分进行讲解,其它地方都是大同小异的。

mysql-5.6.13源码包下载地址:http://mysql.ntu.edu.tw/Downloads/MySQL-5.6/mysql-5.6.13.tar.gz

一、更改编译配置工具为cmake

注意下面mysql-5.6.x系列版本在编译配置时,放弃了用./configure,进而使用到了cmake,因此我们需要先安装cmake这个工具,下面才能执行编译配置。

二、编译参数更改

mysql-5.6.x系列版本综合性的编译参数详解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@c64-web mysql-5.6.13] # cmake
-DCMAKE_INSTALL_PREFIX= /usr/local/mysql  \           #指定mysql安装目录
-DMYSQL_UNIX_ADDR= /tmp/mysql .sock \                 #Unix socket文件路径,自定义此路径防报错
-DDEFAULT_CHARSET=gbk \                             #默认字符
-DDEFAULT_COLLATION=gbk_chinese_ci \                #校验字符
-DEXTRA_CHARSETS=all \                              #安装所有扩展字符集
-DWITH_MYISAM_STORAGE_ENGINE=1 \                    #安装myisam存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \                  #安装innodb存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \                   #安装archive存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \                 #安装blackhole存储引擎
-DWITH_MEMORY_STORAGE_ENGINE=1 \                    #安装memory存储引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1                   #安装frderated存储引擎
-DWITH_READLINE=1 \                                 #快捷键功能
-DENABLED_LOCAL_INFILE=1 \                          #允许从本地导入数据
-DMYSQL_DATADIR= /usr/local/mysql/data  \             #数据库存放目录
-DMYSQL_USER=mysql \                                #数据库属主
-DMYSQL_TCP_PORT=3306 \                             #数据库端口
-DSYSCONFDIR= /etc  \                                 #MySQL配辑文件
-DWITH_SSL= yes                                      #数据库SSL

下面为快捷复制执行命令:

1
[root@c64-web mysql-5.6.13] # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=gbk -DDEFAULT_COLLATION=gbk_chinese_ci -DEXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/mydata -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 -DSYSCONFDIR=/etc -DWITH_SSL=yes

执行之后,还是用make&&make install 来执行编译安装。

三、主配置文件调整

在5.6.X系列的版本中,mysql的主配置文件发生了变化。可以看到,mysql-5.6.13版本中取消了原来的my-huge.cnf,my-large.cnf,my-small.cnf模版,同时取而代之是my.cnf 或者是my-default.cnf一个配置模板。

1
2
3
[root@c64-web mysql-5.6.13] # ll /server/tools/mysql-5.6.13/support-files/*.cnf
-rw-r--r--. 1 root root 1126 Nov  8 01:37  /server/tools/mysql-5 .6.13 /support-files/my-default .cnf
[root@c64-web mysql-5.6.13] # /bin/cp /server/tools/mysql-5.6.13/support-files/my-default.cnf /etc/my.cnf

并且,模板文件里需要配置的地方很少。这是因为mysql-5.6.x系列将以前许多默认值设置不合理的参数都进行了调整,并且采用了一种out-of-box的思维,即有些值是固定的,有些值是启动时,根据其他参数或者服务器的配置来自动设置的,所以不需要初始指定很多值。

主要的区别就是这三点了,其它的操作和5.1.13基本一致,这里就不再重复写一遍了。希望大家本篇博文能对大家有帮助。











本文转自 aaao 51CTO博客,原文链接:http://blog.51cto.com/nolinux/1321079,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
1月前
|
存储 监控 安全
132_API部署:FastAPI与现代安全架构深度解析与LLM服务化最佳实践
在大语言模型(LLM)部署的最后一公里,API接口的设计与安全性直接决定了模型服务的可用性、稳定性与用户信任度。随着2025年LLM应用的爆炸式增长,如何构建高性能、高安全性的REST API成为开发者面临的核心挑战。FastAPI作为Python生态中最受青睐的Web框架之一,凭借其卓越的性能、强大的类型安全支持和完善的文档生成能力,已成为LLM服务化部署的首选方案。
|
4月前
|
NoSQL 关系型数据库 Linux
ERPNext 搭建教程:Linux 一键部署与维护
ERPNext 是一款开源免费的企业资源计划系统,适用于中小企业信息化管理。基于 Python 和 Frappe 框架开发,支持财务、销售、人力、库存等模块,具备高度可定制性。本文介绍如何通过 Websoft9 在 Linux 下快速部署 ERPNext,并提供环境配置、系统维护等实用建议,适合开发者和企业用户快速上手。
725 7
ERPNext 搭建教程:Linux 一键部署与维护
|
6月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
2202 57
|
5月前
|
消息中间件 存储 Kafka
一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
本文详细介绍了分布式消息中间件RocketMQ的核心概念、部署方式及使用方法。RocketMQ由阿里研发并开源,具有高性能、高可靠性和分布式特性,广泛应用于金融、互联网等领域。文章从环境搭建到消息类型的实战(普通消息、延迟消息、顺序消息和事务消息)进行了全面解析,并对比了三种消费者类型(PushConsumer、SimpleConsumer和PullConsumer)的特点与适用场景。最后总结了使用RocketMQ时的关键注意事项,如Topic和Tag的设计、监控告警的重要性以及性能与可靠性的平衡。通过学习本文,读者可掌握RocketMQ的使用精髓并灵活应用于实际项目中。
4337 9
 一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
|
4月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
526 13
|
5月前
|
关系型数据库 MySQL 分布式数据库
Super MySQL|揭秘PolarDB全异步执行架构,高并发场景性能利器
阿里云瑶池旗下的云原生数据库PolarDB MySQL版设计了基于协程的全异步执行架构,实现鉴权、事务提交、锁等待等核心逻辑的异步化执行,这是业界首个真正意义上实现全异步执行架构的MySQL数据库产品,显著提升了PolarDB MySQL的高并发处理能力,其中通用写入性能提升超过70%,长尾延迟降低60%以上。
|
4月前
|
关系型数据库 Linux Nacos
Rocky Linux 部署 Docker 和 NACOS 实例
本文介绍在阿里云环境下基于 Rocky Linux 搭建 Docker 并部署 Nacos 的完整流程。涵盖 Docker 安装、镜像加速配置、网络设置及 MySQL 与 Nacos 容器的创建,适用于开发与生产环境。
721 0
|
6月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
510 17
|
6月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
460 11