欠第八章,有机会补(dog)
9 MySQL管理
9.1 系统数据库
- 系统自带数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
- 各自的功能
- mysql:存储MySQL服务器正常运行所需要的各种信息(时区、主从、用户、权限)
- information_schema:提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型以及访问权限等
- performance_schema:为MySQL服务器运行时状态提供了一个底层监控的功能,主要用于收集数据库服务器性能参数
- sys:包含了一系列方便DBA和开发人员利用performance_schema性能数据库进行性能调优和诊断的视图
9.2 常用工具
- mysql客户端工具
- 语法
mysql [options] [database]
选项:
-u, --user=name #指定用户名
-p, --password[=name] #指定密码
-h, --host=name #指定服务器IP或域名
-P, --port=port #指定连接端口 大写
-e, --execute=name #执行SQL语句并退出
-e用于脚本文件中
用于脚本文件: mysql -uroot –pxxxxxx db01 -e "select * from stu";
- 案例
[root@hadoop ~]# mysql -h192.168.60.102 -P3306 -uroot -pxxxxxxxx itcast -e"select * from course";
mysql: [Warning] Using a password on the command line interface can be insecure.
+----+-------------+
| id | name |
+----+-------------+
| 6 | Hive |
| 1 | javaEE |
| 3 | MySQL |
| 8 | RabbitMQ |
| 9 | Spark |
| 2 | SpringBoot |
| 4 | SpringCloud |
+----+-------------+
- mysqladmin执行管理操作
- 用途:mysqladmin是执行管理操作的客户端程序。可以用来检查服务器的配置和当前状态、创建并删除数据库等。也是可以用在脚本中
- 语法
[root@hadoop ~]# mysqladmin [OPTIONS] command command....
通过帮助文档查看 [OPTIONS] command :
[root@hadoop ~]# mysqladmin --help
commad就是很多关于服务器的操作了
- 案例
-- 看下版本
[root@hadoop ~]# mysqladmin -uroot -pxxxxxxxx version
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
mysqladmin Ver 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 8.0.26
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 4 hours 37 min 28 sec
Threads: 5 Questions: 132 Slow queries: 0 Opens: 197 Flush tables: 3 Open tables: 116 Queries per second avg: 0.007
-- 查看系统变量
[root@hadoop ~]# mysqladmin -uroot -pxxxxxxxx variables
-- 创建一个数据库
[root@hadoop ~]# mysqladmin -uroot -pxxxxxxx create db02
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
- mysqlbinlog查看二进制日志
- 用途:由于服务器生成的二进制日志以二进制格式保存,如果想要检查这些文本的文本格式,就用到
- 语法
语法 :
mysqlbinlog [options] log-files1 log-files2 ...
选项 :
-d, --database=name 指定数据库名称,只列出指定的数据库相关操作。
-o, --offset=# 忽略掉日志中的前n行命令。
-r,--result-file=name 将输出的文本格式日志输出到指定文件。
-s, --short-form 显示简单格式, 省略掉一些信息。
--start-datatime=date1 --stop-datetime=date2 指定日期间隔内的所有日志。
--start-position=pos1 --stop-position=pos2 指定位置间隔内的所有日志。
- 案例
-- 查看二进制文件
[root@hadoop ~]# cd /var/lib/mysql
[root@hadoop mysql]# ll
total 322952
-rw-r----- 1 mysql mysql 56 Dec 25 2021 auto.cnf
-rw-r----- 1 mysql mysql 179 Aug 15 04:43 binlog.000001
-rw-r----- 1 mysql mysql 179 Aug 15 05:55 binlog.000002
-rw-r----- 1 mysql mysql 179 Aug 15 06:01 binlog.000003
-rw-r----- 1 mysql mysql 179 Aug 15 06:14 binlog.000004
-rw-r----- 1 mysql mysql 179 Aug 15 06:24 binlog.000005
-- 乱码来着的
[root@hadoop mysql]# cat binlog.000001 aþbinjR8.0.26jR
**4
(9^*R𠿟Т^࿗³q[root@hadoop mysql]#
-- 用binlog查看,这样看就不会乱码
[root@hadoop mysql]# mysqlbinlog -s binlog.000001
# The proper term is pseudo_replica_mode, but we use this compatibility alias
# to make the statement usable on server versions 8.0.24 and older.
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
- mysqlshow客户端查找工具
-
用途:mysqlshow客户端查找工具,用来很快的查找存在哪些数据库,数据库中的表,表中的列或者索引
-
语法
语法 :
mysqlshow [options] [db_name [table_name [col_name]]]
选项 :
--count 显示数据库及表的统计信息(数据库,表均可以不指定)
-i 显示指定数据库或者指定表的状态信息
- 案例
[root@hadoop mysql]# mysqlshow -uroot -pxxxxxxxx itcast --count
mysqlshow: [Warning] Using a password on the command line interface can be insecure.
Database: itcast
+----------------+----------+------------+
| Tables | Columns | Total Rows |
+----------------+----------+------------+
| course | 2 | 7 |
| course_v_1 | 2 | 7 |
| course_v_2 | 2 | 0 |
| course_v_3 | 2 | 0 |
| course_v_4 | 2 | 7 |
| course_v_5 | 2 | 0 |
| course_v_6 | 2 | 0 |
| course_v_count | 1 | 1 |
| tb_user | 9 | 25 |
| tb_user_pro | 3 | 18 |
| tb_user_view | 7 | 25 |
| user_logs | 5 | 10 |
+----------------+----------+------------+
- mysqldump数据备份
- 用途:客户端工具用来备份数据库或者不同数据库中之间进行数据迁移。备份内容包含创建表,以及插入表的SQL语句
- 语法
语法 :
mysqldump [options] db_name [tables]
mysqldump [options] --database/-B db1 [db2 db3...]
mysqldump [options] --all-databases/-A
连接选项 :
-u, --user=name 指定用户名
-p, --password[=name] 指定密码
-h, --host=name 指定服务器ip或域名
-P, --port=# 指定连接端口
输出选项:
--add-drop-database 在每个数据库创建语句前加上 drop database 语句
--add-drop-table 在每个表创建语句前加上 drop table 语句 , 默认开启 ; 不
开启 (--skip-add-drop-table)
-n, --no-create-db 不包含数据库的创建语句
-t, --no-create-info 不包含数据表的创建语句
-d --no-data 不包含数据
-T, --tab=name 自动生成两个文件:一个.sql文件,创建表结构的语句;一
个.txt文件,数据文件
- 案例
[root@hadoop ~]# mysqldump -uroot -pxxxxxxxx itcast > itcast.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@hadoop ~]# ll
total 56328
-rw-------. 1 root root 1259 Aug 21 2021 anaconda-ks.cfg
drwxr-xr-x 3 root root 35 Dec 26 2021 app
-rw-r--r-- 1 hadoop root 0 Jul 25 04:06 apple.txt
-rw-r--r-- 1 root root 24260 Aug 30 02:43 itcast.sql
-- -t 不包含建表语句
[root@hadoop ~]# mysqldump -uroot -pxxxxxxxx -t itcast > itcast.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@hadoop ~]# ll
total 56316
-rw-------. 1 root root 1259 Aug 21 2021 anaconda-ks.cfg
drwxr-xr-x 3 root root 35 Dec 26 2021 app
-rw-r--r-- 1 hadoop root 0 Jul 25 04:06 apple.txt
-rw-r--r-- 1 root root 11378 Aug 30 02:43 itcast.sql
-- mysql信任的存放目录在这个目录中
mysql> show variables like '%secure_file_priv%';
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.00 sec)
-- -T会形成两个文件,一个表结构语句,一个数据语句
[root@hadoop ~]# mysqldump -uroot -pxxxxxxxx -T /var/lib/mysql-files/ itcast course
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@hadoop ~]# cd /var/lib/mysql-files/
[root@hadoop mysql-files]# ll
total 8
-rw-r--r-- 1 root root 1435 Aug 30 02:43 course.sql
-rw-r----- 1 mysql mysql 70 Aug 30 02:43 course.txt
- mysqlimport数据库导入数据工具
- 用途:mysqlimport是客户端数据导入工具,用来导入mysqldump加-T参数后导出的文本文件
- 语法
语法 :
mysqlimport [options] db_name textfile1 [textfile2...]
示例 :
mysqlimport -uroot -p2143 test /tmp/city.txt
- 案例
先删掉表中数据
[root@hadoop mysql-files]# mysqlimport -uroot -pxxxxxxxx itcast /var/lib/mysql-files/course.txt
mysqlimport: [Warning] Using a password on the command line interface can be insecure.
itcast.course: Records: 7 Deleted: 0 Skipped: 0 Warnings: 0
完成之后数据又显示了
- source数据库导入工具
- 语法
source /root/xxxx/sql
- 案例
mysql> use itcast;
mysql> source /root/itcast.sql
Query OK, 6 rows affected (0.00 sec)
Query OK, 30 rows affected (0.00 sec)
Query OK, 20 rows affected (0.00 sec)
Query OK, 9 rows affected (0.00 sec)