一、开篇
1、版本选择
1、企业版
2、社区版
MySQL社区版则是由分散在世界各地的MySQL开发者、爱好者以及用户参与开发与测试的,包括软件代码的管理、测试工作,也是他们在负责。社区也会设立BUG汇报机制,收集用户在使用过程中遇到的BUG情况,相比于企业版,社区版的开发及测试环境没有那么严格。
3、选哪个
mysql是成熟产品,企业版和社区版在性能方面区别不大,对于我们学习而言,社区版即可。它们的区别可以如下了解
- 企业版对代码的管理、测试更严格、稳定性更好
- 企业版不遵循GPL开源协议,而社区版遵循,可以免费用
- 企业版可以购买额外的收费服务,如7*24的技术支持,有钱任性。
- 社区版的安全性,稳定性,无法像企业版有及时的维护、技术支持。
2、下载地址
Mysql安装包下载
https://downloads.mysql.com/archives/community/
http://mirrors.sohu.com/mysql/
二、部署安装
1、安装全流程
# 确认时间正确
crontab -l
1 .准备好包
2. 解压缩,配置PATH
[root@tech-db-51 /opt]## 常见做法,做软连接,便于二进制包的升级,后续的使用路径,用的都是软连接
[root@tech-db-51 /opt]#ln -s /opt/mysql-5.7.28-linux-glibc2.12-x86_64 /opt/mysql
3. 配置PATH
echo 'export PATH=$PATH:/opt/mysql/bin' >> /etc/profile
source /etc/profile
4. 验证mysql版本
[root@tech-db-51 /opt]#mysql -V
5.删除mariadb的依赖,删除默认的配置文件
yum remove mariadb-libs.x86_64 -y
rm -f /etc/my.cnf
6.装mysql5.7特有的依赖包
yum install libaio-devel -y
7. 创建数据目录,
# 准备mysql的数据目录,授权用户
useradd -s /sbin/nologin -M mysql
mkdir -p /linux0224/
mkdir -p /linux0224/mysql_3306/
# 授权
chown -R mysql.mysql /linux0224/
chown -R mysql.mysql /linux0224/mysql_3306/
chown -R mysql.mysql /opt/mysql*
#检查
[root@tech-db-51 /opt]#ls -ld /linux0224 /linux0224/mysql_3306/ /opt/mysql*
8.此时自建的mysql目录,没有输数据,mysql 无法使用,初始化生成mysql默认库的数据源 ,用户等信息,即可启动
# mysqld 服务端命令,启动,初始化,都用的这个
# --basedir mysql二进制命令装再哪了,主程序目录
# --datadir 数据目录初始到哪
mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/linux0224/mysql_3306/
2、配置文件
初始化完毕后,有配置文件即可正确启动,告诉 my.cnf
mysqld的数据源目录在哪,日志写入到哪等
# /etc/my.cnf 默认mysql会去读这个,不指定,也读这个
# [mysqld] 服务端会读取的配置
# [mysql] 在机器本地,执行mysql命令,客户端读取的配置
# socket 本地进程套接字文件,用于mysql客户端再本地区链接
cat >/etc/my.cnf <<'EOF'
[mysqld]
port=3306
user=mysql
basedir=/opt/mysql
datadir=/linux0224/mysql_3306/
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
EOF
3、启动脚本
复制自带脚本即可
[root@tech-db-51 /linux0224/mysql_3306]#cp /opt/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@tech-db-51/linux0224/mysql_3306]#systemctl daemon-reload
[root@tech-db-51 /linux0224/mysql_3306]#systemctl status mysqld
4、登陆mysql
# 启动即可
[root@tech-db-51 /linux0224/mysql_3306]#systemctl start mysqld
[root@tech-db-51 /linux0224/mysql_3306]#mysql
三、Mysql的多实例管理
适用于资金紧张的公司和并发量不大的业务
1、创建数据目录
mkdir -p /linux0224/mysql_3307
mkdir -p /linux0224/mysql_3308
chown -R mysql.mysql /linux0224
2、初始化两个实例
mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/linux0224/mysql_3307
mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/linux0224/mysql_3308
# 都会默认创建一个账户,链接权限
root 空密码 只允许再localhost登录
3、额外创建俩实例的配置文件
1、3307
cat >/etc/mysql_3307.cnf <<'EOF'
[mysqld]
port=3307
user=mysql
basedir=/opt/mysql/
datadir=/linux0224/mysql_3307/
socket=/linux0224/mysql_3307/mysql.sock
log_error=/linux0224/mysql_3307/mysql.log
EOF
2、3308
cat >/etc/mysql_3308.cnf <<'EOF'
[mysqld]
port=3308
user=mysql
basedir=/opt/mysql/
datadir=/linux0224/mysql_3308/
socket=/linux0224/mysql_3308/mysql.sock
log_error=/linux0224/mysql_3308/mysql.log
EOF
3、socket解释-链接mysql有俩种方式
1. 通过远程网络的链接形式,效率很低,网络波动
ip:port 10.0.0.51:3306
mysql -uroot -p -h10.0.0.51 -P3306
2.、通过再机器本地,进程套接字文件去链接,直接是基于内存的链接
程序和程序之间,直接走内存数据,效率极高,遇见一些软件的部署,走socket链接
如nginx的反向代理配置
proxy_pass ip:port;
proxy_pass unxi:socket;
/linux0224/mysql_3307/mysql.sock
# -S 等于 -h -P
# 链接3307的进程
# 能看懂 程序链接的2方式
#
mysql -uroot -p密码 -S /linux0224/mysql_3307/mysql.sock
mysql -uroot -p密码 -S /linux0224/mysql_3306/mysql.sock
mysql -uroot -p密码 -S /linux0224/mysql_3308/mysql.sock