MySQL管理


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