为何要选用mysql
1.开源
2.社区活跃
3.维护简单
4.重量级
5.支持跨平台
6.支持多种语言(编码)
7.支持使用sql进行数据的读写
8.性能好,而且稳定
9.BAT 都在用mysql,往往都是从oracle切换到mysql
mysql的版本
社区版——社区人员自行维护的版本,没有售后
商业版——各种功能经过官方测试稳定,有完善的售后服务
发行版本
Alpha版
beta版
RC 版
GA版
mysql产品线
第一条:5.0-5.1 (5.1稳定)
第二条:5.4-5.7 (5.5 5.7稳定)
第三条:6.0 、7.0 、 8.0 (8.0最新)
生产环境中如何选择版本
1.选择社区版
2.选择稳定版
3.建议选择发布时间在6个月以上的稳定版
4.关注版本最近是否有修复补丁
5.注意是否和开发人员使用的数据库兼容
6.注意是否和现有数据库兼容
7.新版本的数据库建议在内部测试运行3-6个月以上
8.从原有数据库转移数据库的过程中,建议先转移非核心数据,测试是否正常
安装mysql
安装方式:yum安装、编译安装、通用二进制格式安装
通用二进制格式安装mysql步骤
第一步:准备mysql的配置文件
# mv /root/my.cnf /etc
*注
/usr/local/mysql >>>安装位置
/data/mysql/mysql3306/data >>>数据位置
/data/mysql/mysql3306/tmp >>>临时文件位置
/data/mysql/mysql3306/logs/mysql-bin >>>日志文件位置
/tmp/mysql3306.sock >>>socket文件位置
第二步:安装mysql
# groupadd mysql
# useradd -r -g mysql -s /sbin/nologin mysql
# tar xf /root/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
# mv mysql-5.7.23-linux-glibc2.12-x86_64 /usr/local/
# cd /usr/local
# ln -sv mysql-5.7.23-linux-glibc2.12-x86_64/ mysql
# chown mysql.mysql mysql -R
第三步:创建相关目录
# mkdir /data/mysql/mysql3306/{data,tmp,logs} -pv
# chown -R mysql.mysql /data
第四步:初始化——生成mysql的系统表和库
# /usr/local/mysql/bin/mysqld --initialize --user=mysql
*注
- 其 --user 用于指定以哪个用户身份完成初始化工作(默认从配置文件中读取)
- 数据目录下如果有文件,会导致初始化失败
- 初始化完成后,会在数据目录下生成一系列文件
其中 error.log 中保存了安装、启动、运行mysql过程中所出现的错误信息,初始root密码也在其中 - 用 --initialize-inseucre 做初始化时,root的初始密码为空
# cat /data/mysql/mysql3306/data/error.log | grep password >>>获取root初始密码
第五步:启动mysql
# /usr/local/mysql/support-files/mysql.server start
第六步:导出二进制
# vim /etc/profile.d/mysql.sh
内容:PATH=$PATH:/usr/local/mysql/bin
export PATH
# source /etc/profile
第七步:登录mysql
# mysql -uroot -pxxxx
第八步:重置mysql的root密码
mysql> ALTER USER user() IDENTIFIED BY "123";
mysql> show databases;
第九步:生成服务管理脚本
centos5、centos6上的操作
# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# chkcongig mysqld on
# service msyqld start|stop....
centos7上的操作
# vim mysql3306.service
内容:[Unit]
Description=mysql 3306 service
[Service]
Type=forking
ExecStart=/bin/bash /usr/local/mysql/support-files/mysql.server start
ExecStop=/bin/bash /usr/local/mysql/support-files/mysql.server stop
ExecRestart=/bin/bash /usr/local/mysql/support-files/mysql.server restart
[Install]
WantedBy=multi-user.target
# mv mysql3306.service /usr/lib/systemd/system/
# systemctl enable mysql3306.service
# systemctl start mysql3306.service
# ss -tnl | grep 3306
# systemctl stop mysql3306.service
# ss -tnl | grep 3306
多实例
单个mysql服务会随着用户访问量增加导致性能急剧下降
因此多实例可提升服务器的资源使用率,降低单个mysql服务的并发请求量
第二个mysql实例
配置如下
端口:3307
/usr/local/mysql >>>安装位置
/data/mysql/mysql3307/data >>>数据位置
/data/mysql/mysql3307/tmp >>>临时文件位置
/data/mysql/mysql3307/logs/mysql-bin >>>日志文件位置
/tmp/mysql3307.sock >>>socket文件位置
/data/mysql/mysql3307/my.cnf >>>配置文件
第一步:创建相关文件
# mkdir /data/mysql/mysql3307/{tmp,data,logs} -pv
# chown -R mysql.mysql /data
第二步:生成配置文件
# cp /etc/my.cnf /data/mysql/mysql3307/
# sed -i 's/3306/3307/g' /data/mysql/mysql3307/my.cnf
# cat /data/mysql/mysql3307/my.cnf
第三步:初始化
# /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3307/my.cnf --initialize
第四步:启动mysql
# /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3307/my.cnf &
第五步:登录多实例
# mysql -uroot -pc-7ae#sgan1K -S /tmp/mysql3307.sock
第三个mysql实例
配置如下
端口:3308
/usr/local/mysql >>>安装位置
/data/mysql/mysql3308/data >>>数据位置
/data/mysql/mysql3308/tmp >>>临时文件位置
/data/mysql/mysql3308/logs/mysql-bin >>>日志文件位置
/tmp/mysql3308.sock > >>socket文件位置
/data/mysql/mysql3308/my.cnf >>>配置文件
第一步:创建相关文件
# mkdir /data/mysql/mysql3308/{tmp,data,logs} -pv
# chown -R mysql.mysql /data
第二步:生成配置文件
# cp /etc/my.cnf /data/mysql/mysql3308/
# sed -i 's/3306/3308/g' /data/mysql/mysql3308/my.cnf
# cat /data/mysql/mysql3308/my.cnf
第三步:复制模板生成系统数据库文件
# cd /data/mysql/
# cp mysql3306/data/* mysql3308/data/ -a
第四步:启动实例
# /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3308/my.cnf &
# ss -tnl
第五步:登录实例
# mysql -uroot -pc-7ae#sgan1K -S /tmp/mysql3308.sock
启动mysql过程中的错误追踪
# strace /usr/local/mysql/bin/mysqld &>start.log &
如果忘记mysql登录密码
在进行mysql初始化后生成的user.frm表中保存了用户的账号和密码,可删除数据目录下的全部文件重新初始化。
mysql启动方式
Centos6:
service mysqld start
/etc/rc.d/init.d/mysqld start
Centos7:
systemctl start mysqld.service
service mysqld start
启动中:
- mysql.server
mysql.server–>mysqld_safe–>mysqld - mysqld_safe
mysqld_safe–>mysqld
读取配置文件:[mysqld] [mysqld_safe] [server]
配置文件中的选项
Malloc-lib=/path/to/libtmalloc.so
# yum isntall jemalloc
启动方式:
mysqld_safe --defaults-file=xxx --malloc-lib --user=xx &
- mysqld
- mysqld_multi
mysql多实例管理脚本–新版中逐渐被废弃
读取配置文件:[mysqld_multi] [mysqldN]
启动方式:
mysqld_multi start|stop|restart|status
mysql所存储的数据会保存成两类文件
数据:所存储的真正有意义的数据
索引:指向特定数据的一个指针,通过索引可以加速数据 的读取过程
索引通常就是数据的一部分,比如以找某个人的书,就是以作者为索引。(按照什么作为查找条件,就将什么设置为索引)
【索引会导致数据的写入速度变慢,索引越多写入性能越差】