MySQL 管理
1 系统数据库
Mysql 数据库安装完成后,自带了一下四个数据库,具体作用如下:
数据库 | 含义 |
---|---|
mysql | 存储 MySQL 服务器正常运行所需要的各种信息 (时区、主从、用 户、权限等) |
information_schema | 提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类 型及访问权限等 |
performance_schema | 为 MySQL 服务器运行时状态提供了一个底层监控功能,主要用于收集 数据库服务器性能参数 |
sys | 包含了一系列方便 DBA 和开发人员利用 performance_schema 性能数据库进行性能调优和诊断的视图 |
2 常用工具
2.1 mysql
该 mysql 不是指 mysql 服务,而是指 mysql 的客户端工具。
语法
- mysql [options] [database]
选项
-u, --user=name #指定用户名
-p, --password[=name] #指定密码
-h, --host=name #指定服务器 IP 或域名
-P, --port=port #指定连接端口
-e, --execute=name #执行 SQL 语句并退出
-e 选项可以在 Mysql 客户端执行 SQL 语句,而不用连接到 MySQL 数据库再执行,对于一些批处理脚本,这种方式尤其方便。
2.2 mysqldump
mysqldump 是MySQL自带的备份命令
用来备份数据库或者进行数据库的迁移,包含创建表、插入表、SQL 语句等。
语法:
- mysqldump [options] db_name
选项
option | 含义 |
---|---|
-u | 用户名 |
-p | 密码 |
-h | 服务器 ip, localhost 默认 |
-p | 连接端口, 3306 默认 |
输出选项
option | 含义 |
---|---|
-n | 剔除数据库创建语句 |
-t | 剔除数据表创建语句 |
-d | 剔除数据 |
-T | 生成两文件,一个. sql 表结构,一个. txt 数据文件非 insert |
常规使用:
完全导出 db_name 数据库
mysqldump -uroot -proot123 db_name > /bak/dn_name.sql
剔除表结构
mysqldump -uroot -proot123 -t db_name > /bak/dn_name.sql
分开备份
查看 MySQL 信任的导出路径
show variables like 'secure_file_priv'
# var/lib/mysql-file/
导出
mysqldump -uroot -proot123 -T /var/lib/mysql-files/ db_name file_name
一个 file_name.sql 放表结构文件,file_name.txt 放数据文件,注意这个数据文件不是 insert,需要 mysqlimport/source 导入,或者 load 批量插入。
2.3 mysqlimport/source
mysqlimport
用来导入 mysqldump 导出的 file_name.txt 数据文件。
mysqlimport -uroot -p12345 db_name /var/file_name.txt
source
如果需导入 sql 文件, 可以使用 mysql 中的 source 指令来进行导入:
source /root/file_name.sql
案例:
# 语法格式:
mysqldump -h主机名 -P端口 -u用户名 -p密码 --databases 数据库名 >文件名.sql
# 例如
# mysqldump -h 192.168.8.36 -P 3306 -uroot -p --databases yun4> yun4.sql
# 本地可省略host参数,默认端口可省略port参数,--databases参数也可以省略
mysqldump -uroot -p test> test.sql
### 备份压缩
mysqldump -uroot -p test| gzip > test.sql.gz
### 添加备份时间
mysqldump -uroot -p test |gzip > test-`date +"%Y-%m-%d-%H-%M-%S"`.sql.gz
### 备份同个库多(单)个表
mysqldump -uroot -p test --tables user_info > user_info.sql
### 同时备份多个库
mysqldump -uroot -p --databases test --databases mysql --databases school > demo.sql
### 备份所有的数据库
mysqldump -uroot -p --all-databases > all.sql
### 备份数据库结构,不备份数据
mysqldump -uroot -p --no-data test > test.sql
### 还原(执行SQL脚本)
# 方法一
##1.进入数据库
mysql -uroot -p
##2.执行SQL文件
source test.sql
# 方法二
## 不进入数据库恢复
mysql -uroot -p test < test.sql
## 恢复所有数据
mysql -uroot -p < all.sql