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. 数据库初始化
代码语言:javascript复制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的远程访问
添加一个用户供其远程连接访问
代码语言:javascript复制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
代码语言:javascript复制GRANT replication slave ON *.* TO 'joker'@'192.168.0.88' IDENTIFIED BY '1234';
FLUSH PRIVILEGES
mysql8
代码语言:javascript复制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 statusG;
停止服务复制 stop slave
慢查询日志分析
慢日志查询
概述 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句 具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。 ong_query_time的默认值为10,意思是运行10S以上的语句。就会被认作是慢查询 默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数, 如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。 慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。
查询日志相关参数
查看是否开启慢查询日志
代码语言:javascript复制show variables like '%slow_query_log%'
开启
代码语言:javascript复制set global slow_query_log=1;
只对当前数据库生效, 如果重启后, 则会失效 如果发永久生效,必须要修改配置文件 slow_query_log =1 slow_query_log_file=地址
那么开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢?
代码语言:javascript复制#查看当前时长
show variables like 'long_query_time'
#设置时长
set global long_query_time=4;
要断开连接后, 才能生效 show global variables like ‘long_query_time’;
耗时语句
代码语言:javascript复制#睡眠4秒
select sleep(4)
代码语言:javascript复制#查看慢查询日志
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 抓取出来查看
设置启用
代码语言:javascript复制set global general_log = 1;
set global log_output = 'TABLE'
此后所编写的sql语句将会记录到mysql库里的general_log表中
代码语言:javascript复制select * from mysql.general_log;
mysql -u root -p1234 --default-character-set=utf8