MySQL运维实战教程(1)如何安装部署MySQL
一、MySQL 版本介绍
1、MySQL主要发行版区别
· Oracle MySQL:官方正统版本,MySQL被Oracle收购后就分为了社区版和企业版,社区版可免费使用,是目前使用最多的发行版。产品迭代速度很快,几乎每三个月就会发行一个小版本。该发行版使用MGR实现集群。
· Percona:在MySQL官方社区版的基础上做了性能优化,是最接近MySQL企业版的发行版,提供了一些MySQL管理工具。由于其属于二次开发,在版本上可能会稍落后官方版。该发行版使用MGR或PXC实现集群。
· MariaDB:MySQL原作者在MySQL被收购后所开发的新的发行版,基本兼容MySQL,也存在版本稍微落后的问题。该发行版使用Galera Cluster实现集群。
2、MySQL版本区别
mysql5.5 | mysql5.6 | mysql5.7 | |
索引 | 全局读写锁,并发一般 | 全局读写锁,并发一般 | 锁优化,并发性能提升 |
数据一致性 | 半同步 | 半同步 | 无损复制 |
多线程复制 | 不支持 | 基于库的多线程复制 | 基于组提交的多线程复制 |
事务组提交 | 不支持 | 支持 | 支持 |
半结构化数据 | BLOB | BLOB | JSON |
截止2024年12月,使用率最多的是MySQL 5.7版本,而8.0版本则是未来的趋势,可自行选择
二、MySQL的安装部署
MySQL 支持编译安装、二进制安装、YUM安装等多种安装方式,可以灵活选择,不同的安装方式各有优缺点,适用于不同的场景。RPM包通常命名为 mysql57-community-release-el7-9.noarch.rpm(如果是bundle包表示将 MySQL 所有包整合在了一起);二进制包归类为Generic类别下,包名通常为mysql-5.7.16-linux-glibc2.5-x86_64.tar;源码包归类为Source分类,包名通常为mysql-5.7.16.tar.gz
1、编译安装 MySQL
· MySQL通过cmake工具进行编译安装,所以首先要通过yum来安装cmake工具
yum -y install ncurses ncurses-devel cmake gcc gcc-c++ openssl-devel bison cmake
· 进入MySQL源码包目录后使用cmake命令即可直接开始编译安装。但是通常情况下还需要使用-D选项自定义参数,比如指定安装路径等,cmake支持的参数和具体作用可以参考官方文档(http://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html)。编译过程中如果遇到 remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel,需要先安装ncurses-devel,安装好了后删除CMakeCache.txt再重新执行编译
# cmake . 按照默认配置安装 cmake . \ -DDOWNLOAD_BOOST=1 或者 -DWITH_BOOST=/usr/local/boost -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DSYSCONFDIR=/etc \ -DMYSQL_DATADIR=/mysql_data \ -DMYSQL_TCP_PORT=3306 \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DEXTRA_CHARSETS=all make && make install
· 安装完成后会在安装路径生成一系列脚本和配置文件,support-files目录提供了配置文件和启动脚本的模板
cp mysql.server /etc/init.d/mysqld cp my-default.cnf /etc/my.cnf
· 数据库初始化
初始化完成后会生成默认库表,如果初始化失败,可在错误日志中查看相关原因
mysqld --defaults-file=/etc/my3306.cnf --initialize --user=mysql
· 启动服务
systemctl start mysql
2、YUM安装MySQL
在官方选择Red Hat Enterprise Linux / Oracle Linux时可以看到一个Yum Repository的下载链接,通过该链接可以下载YUM仓库的安装包,然后就可以通过包管理工具快速安装数据库。该安装方式过程最简单,但无法自定义参数,所以不建议使用。
安装完成后通过systemctl管理服务。第一次启动会初始化生成数据库的相关文件到/var/lib/mysql目录中
yum install mysql mysql-server
systemctl enable mysqld
systemctl start mysqld
登录数据库测试是否正常,MySQL 5.7开始无法使用空密码登录,临时密码存放在日志文件中
grep 'password' /var/log/mysqld.log
mysql -uroot -p 'kjgug512525'
3、二进制包安装MySQL(推荐使用)
这是最常用的安装方式,安装过程中需要到的数据库参数都可以通过配置文件来指定
· 创建MySQL用户和组,并将通用二进制安装包解压到需要的路径下
useradd -r -s /sbin/nologin -M mysql
cd /usr/local/
tar zxvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz #将二进制包解压到/usr/local目录下
ln -s mysql-5.7.16-linux-glibc2.5-x86_64 mysql #创建软连接方便管理
· 创建用于存放MySQL数据和日志的目录,并可将目录属主修改为MySQL用户
mkdir /mysql/{data,log}
chown -R mysql.mysql /mysql
· 创建MySQL主配置文件(可以复制support-files/my-default.cnf文件作为模板,本站提供了一个详细的配置模板可直接使用)
#方法1:初始化的时候在命令行写好相关参数(不建议)
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/mysql/data
#方法2:将初始化参数写在配置文件中,然后读取配置文件进行初始化(初始化失败的话通常和配置参数错误有关系)
vi /etc/my3306.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /mysql/data
log-error = /mysql/log/error.log
character-set-server = utf8
socket = /tmp/mysql.sock
[client] #客户端连接mysql时使用的配置信息
socket = /tmp/mysql.sock
· 初始化MySQL
MySQL 5.7开始使用bin/mysqld脚本进行初始化(5.7之前是bin/mysql_install_db)。初始化完成后在DATADIR下会创建MySQL的4个默认数据库和相关文件。要重新初始化的话需要先停止服务并删掉数据目录下的所有文件才可以。如果初始化失败可以查看错误日志检查原因,在没配置错误日志时,错误日志默认会在databasedir以主机名为名,如server1.err。如果发现启动后参数和配置的my.cnf存在差异,需要检查下是否在其它路径存在my.cnf覆盖了/etc/my.cnf的配置
#运行初始化命令指定配置文件路径,该选项必须放在第一个参数中,如果不写的话MySQL会按照几个默认路径按顺序寻找my.cnf这样命名的配置文件
mysqld --defaults-file=/etc/my3306.cnf --initialize --user=mysql
#mysqld --defaults-file=/etc/my3306.cnf --initialize-insecure --user=mysql #初始化不创建初始密码
· 使用mysqld_safe脚本来启动服务,相比使用mysqld启动,它会多运行一个监控进程,当mysql服务异常退出时会自动拉起
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3306.cnf & #指定配置文件启动服务
· 在错误日志中记录了root的临时密码(在5.6版本是空密码),使用该密码运行bin/mysql_secure_installation脚本可以进行一些安全相关配置,或者登陆到MySQL后修改root的密码,否则无法进行其他操作。
alter user root@'localhost' identified by 'Newp@ssword'
如初始化完成后使用临时密码提示Your password has expired密码过期,是因为系统自带的mysql命令行工具与当前安装的MySQL版本不一致,使用绝对路径即可。
· 修改配置后有两种方式来重启MySQL。一个是通过客户端关闭MySQL然后再启动
#方法1:用命令行启停服务
mysqladmin -uroot -p123456 -S /tmp/mysql.sock shutdown
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
#方法2:拷贝二进制包中的启动脚本进行服务管理,虽然这操作方式是按照CentOS6来的,但是在7也是向下兼容的)
cp support-files/mysql-server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
service mysqld start
评论