Linux基本操作&&Linux操作MySQL
安装Linux系统
- 下载VMware虚拟机
- 下载CentOS-7系统
- 创建虚拟机
- 选择自定义
- 下一步
- 下一步
- 选择Linux
- 选择存放位置
- 设置配置
- 配置网络
- 选择镜像
- 选择第一个
- 设置中文
- 设置GUI图型界面
- 设置密码
- 等待安装
- 设置IP地址
WIN+R打开命令行输入ipconfig
从主机pingLinux系统
ping ip地址
远程工具连接Linux系统
官网下载filezilla
设置主机ip 用户名 密码 端口号为22端口
Linux基本操作
Linux没有图形化界面,我们只能通过控制台去操作系统,我们就要使用类似DOS命令的Linux命令去操作系统
目录
Linux必须通过cd命令切换目录
目录结构
目录命令
- 创建目录
mkdir 目录名称 - pwd
查看当前目录 - 查看目录
ls [-al] 父目录 - 修改目录的名称
mv 目录名称 新目录名称 - 剪切
mv 目录名称 新目录地址 - 拷贝目录
cp -r 目录名称 目录拷贝的目标位置 -----r代表递归拷贝
cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r递归 - 删除目录
rm [-rf] 目录
rm不仅可以删除目录,也可以删除其他文件或压缩包,为了增强大家的记忆,
无论删除任何目录或文件,都直接使用rm -rf 目录/文件/压缩包
文件命令
- 文件的创建
touch 文件名称 - 文件的查看
cat 文件名称 - 删除文件
rm -rf 文件名 - 压缩文件
tar -zcvf 打包压缩后的文件名 要打包压缩的文件
z:调用gzip压缩命令进行压缩
c:打包文件
v:显示运行过程
f:指定文件名 - 解压文件
tar [-xvf] 压缩文件 解压地址
其它命令
- 搜索命令
grep 要搜索的字符串 要搜索的文件 - 管道命令
| 将前一个命令的输出作为本次目录的输入 - 查看进程
ps -ef
查看当前系统中运行的进程 - 杀死进程
kill -9 进程的pid - 查看当前系统的网卡信息
ifconfig
VI编辑器
概述
vi编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下。
由于不需要图形界面,vi是效率很高的文本编辑器。尽管在Linux上也有很多图形界面的编辑器可用,
但vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。
Vi编辑器
1.命令模式
2.插入模式
3.底行模式
Vi编辑器三种模式
命令行模式命令
ZZ(大写)保存并退出
u辙销操作,可多次使用
dd删除当前行
yy复制当前行
p 粘贴内容
ctrl+f向前翻页
ctrl+b向后翻页
i进入编辑模式,当前光标处插入
a进入编辑模式,当前光标后插入
A进入编辑模式,光标移动到行尾
o进入编辑模式,当前行下面插入新行
O进入编辑模式,当前行上面插入新行
底行模式命令
:w保存,:w filenme另存为
:q退出
:wq保存并退出
:e! 撤销更改,返回到上一次保存的状态
:q! 不保存强制退出
:set nu 设置行号
CenterOS7环境下安装Mysql
-
下载Mysql
https://dev.mysql.com/downloads/mysql/5.5.html?os=31&version=5.1 -
检查系统是否自带Mysql
rpm -qa | grep mysql
如果有,删除掉
rpm -e --nodeps mysql的名称 -
检查是否自带mariadb
rpm -qa | grep mariadb
有就删除掉
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
权限不够:进入root权限 输入su 回车 输入密码 -
通过传输工具把mysql上传到Linux系统当中
-
将其解压到Mysql目录下
tar -xvf mysql名称
-
rpm安装
/var/run/yum.pid 已被锁定
解决办法
rm -f /var/run/yum.pid
yum install glibc.i686
安装之前先安装需要的依赖,否则会报依赖错误
yum install libaio
按顺序进行安装
rpm -ivh mysql-community-common-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm
7. 数据库初始化
mysqld --initialize --user=mysql
为了保证数据库目录为与文件的所有者为 mysql 登陆用户
如果你是以 root 身份运行 mysql 服务,需要执行下面的命令初始化
--initialize 选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将该密码标记为过期
而使用 --initialize-insecure 命令则不使用安全模式,则不会为 root 用户生成一个密码。
-
查看日志文件
--initialize 初始化的,会生成一个 root 账户密码,密码在log文件里
cat /var/log/mysqld.log
-
启动mysql数据库
systemctl start mysqld.service -
访问数据库,密码为上面的随机自动生成的密码
mysql -uroot -p
密码:日志最后一行
-
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
- 管理mysql
以前都用service命令管理mysql
现在liunx系统升级了,又有了新的更好的方法管理系统进程
管理mysql
启动mysql服务:systemctl start mysqld.service
停止mysql服务:systemctl stop mysqld.service
重启mysql服务:systemctl restart mysqld.service
查看mysql服务当前状态:systemctl status mysqld.service
设置mysql服务开机自启动:systemctl enable mysqld.service
停止mysql服务开机自启动:systemctl disable mysqld.service
重新安装时要删掉以下目录
rm -fr /var/lib/mysql
远程连接Mysql服务器
开启mysql的远程访问
添加一个用户供其远程连接访问
GRANT ALL PRIVILEGES ON *.* TO 'joker'@'%' IDENTIFIED BY '1234' WITH GRANT OPTION;
flush privileges;
退出重启systemctl restart mysqld
开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=3306/tcp
删除
firewall-cmd --zone= public --remove-port=3306/tcp --permanent
重启防火墙服务
systemctl restart firewalld.service
开启与关闭防火墙
- systemctl stop firewalld.service
停止firewall - systemctl disable firewalld.service
禁止firewall开机启动 - systemctl start firewalld
启动 - systemctl status firewalld
查看状态 - firewall-cmd --reload
重回加载防火墙 - systemctl restart firewalld.service
重新启动防火墙
重启防火墙时遇到
Failed to start firewalld.service: Unit firewalld.service is masked
执行:systemctl unmask firewalld.service
再从新启动systemctl start firewalld
阿里云配置开放端口
工具连接mysql
主从复制
什么是主从复制
传统数据库中存在的问题
1.传统数据库设计时,如果服务器宕机,将不能为用户提供服务导致整个系统崩溃.
2.如果数据库突然宕机.会导致数据丢失.
3.为了防止数据丢失,要进行实时备份 冷备份:通过数据库工具进行人为的导出sql.但是手动导出数据可能在中间节点宕机时也会造成数据库的丢失
主从复制
主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库
主从复制的作用
1.做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失
2.架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能 3读写分离,使数据库能支撑更大的并发。
主从复制的原理
1.数据库有个bin-log二进制文件,记录了所有sql语句。
2.我们的目标就是把主数据库的bin-log文件的sql语句复制过来。
3.让其在从数据的relay-log重做日志文件中再执行一次这些sql语句即可。
4.下面的主从配置就是围绕这个原理配置
5.具体需要三个线程来操作 :
i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;
主从复制实现过程
主机 windows系统
- 首先修改mysql的配置文件,使其支持二进制日志功能。
打开主服务器的mysql配置文件:my.conf(window保存时, 使用使用ANTIS格式,否则Mysql启动不起来)
加入如下代码:
log-bin=C:/ProgramData/MySQL/MySQL Server 8.0/Data/mysql-bin
将mysql二进制日志取名为mysql-bin
server-id=1
为服务器设置一个独一无二的id便于区分
重启mysql命令
- 在主服务器上为从服务器分配一个账号,就像一把钥匙,从服务器拿着这个钥匙,才能到主服务器上来共享主服务器的日志文件.
mysql5.7
GRANT replication slave ON *.* TO 'joker'@'192.168.0.88' IDENTIFIED BY '1234';
FLUSH PRIVILEGES
mysql8
CREATE USER 'joker'@'192.168.0.88' IDENTIFIED BY '1234';
alter user 'joker'@'192.168.0.8' identified with mysql_native_password by '1234';
FLUSH PRIVILEGES
- 查看主服务器BIN日志的信息
执行完之后记录下这两值,然后在配置完从服务器之前不要对主服务器进行任何操作,
因为每次操作数据库时这两值会发生改变
show master status;
记住这两个值
从机 Linux系统
-
进入从机修改配置文件
vim /etc/my.cnf
设置值
log-bin=mysql-bin
server-id=2
保存修改 重启服务
启动mysql服务
systemctl start mysqld.service
停止mysql服务
systemctl stop mysqld.service -
在从机mysql中执行以下语句
CHANGE MASTER TO MASTER_HOST='192.168.0.105',
MASTER_USER='joker',
MASTER_PASSWORD='1234',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=656;
参数解释
MASTER_HOST : 设置要连接的主服务器的ip地址
MASTER_USER : 设置要连接的主服务器的用户名
MASTER_PASSWORD : 设置要连接的主服务器的密码
MASTER_LOG_FILE : 设置要连接的主服务器的bin日志的日志名称,即第3步得到的信息
MASTER_LOG_POS : 设置要连接的主服务器的bin日志的记录位置,即第3步得到的信息,(这里注意,最后一项不需要加引号。否则配置失败)
先在从服务器配置完成,启动从服务器:
start slave;
查看是否配置成功:
show slave status\G;
停止服务复制
stop slave
慢查询日志分析
慢日志查询
概述
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句
具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。
ong_query_time的默认值为10,意思是运行10S以上的语句。就会被认作是慢查询
默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,
如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。
慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。
查询日志相关参数
查看是否开启慢查询日志
show variables like '%slow_query_log%'
开启
set global slow_query_log=1;
只对当前数据库生效, 如果重启后, 则会失效
如果发永久生效,必须要修改配置文件
slow_query_log =1
slow_query_log_file=地址
那么开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢?
#查看当前时长
show variables like 'long_query_time'
#设置时长
set global long_query_time=4;
要断开连接后, 才能生效
show global variables like 'long_query_time';
耗时语句
#睡眠4秒
select sleep(4)
#查看慢查询日志
show global status like '%slow_queries%';
慢日志分析工具
参数
-s 按照那种方式排序
c:访问计数
l:锁定时间
r:返回记录
al:平均锁定时间
ar:平均访问记录数
at:平均查询时间
-t 是top n的意思,返回多少条数据。
-g 可以跟上正则匹配模式,大小写不敏感。
示例
- 得到返回记录集最多的10个SQL。
mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log - 得到访问次数最多的10个SQL
mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log - 得到按照时间排序的前10条里面含有左连接的查询语句。
mysqldumpslow -s t -t 10 -g “left join” /database/mysql/mysql06_slow.log - 另外建议在使用这些命令时结合 | 和more 使用 ,否则有可能出现刷屏的情况。
mysqldumpslow -s r -t 20 /mysqldata/mysql/mysql06-slow.log | more
Show Profile分析
概述
Show Profile是mysql提供的可以用来分析当前会话中sql语句执行的资源消耗情况的工具,可用于sql调优的测量。
默认情况下处于关闭状态,并保存最近15次的运行结果。
把一条sql在mysql当中每一个环节耗费的时候都记录下来
默认该功能是关闭的,使用前需开启。默认保存最近15次运行的结果
使用
- 查看当前版本是否支持
Show variables like 'profiling'; - 打开profile
set profiling = on - 查看结果
show profiles - 诊断sql
show profile cpu,block io for query 88;
当出现以下选项时, 要进行优化
converting HEAP to MyIsAM,查询结果太大,内存都不够用了, 往确磁盘上存在了
Creating tmp table 创建临时表
copy数据到临时表
用完再进行删除
Copying to tmp table on disk
把内存中临时表复制到磁盘, 危险操作
Locked
被锁定
全局查询日志
只允许在测试环境用, 不能在生产环境使用
在测试是, 可以把所有执行的sql 抓取出来查看
设置启用
set global general_log = 1;
set global log_output = 'TABLE'
此后所编写的sql语句将会记录到mysql库里的general_log表中
select * from mysql.general_log;
mysql -u root -p1234 --default-character-set=utf8