作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。
MySQL(本章节)
PostgreSQL
Redis
Etcd
我们前面讲到的MYSQL的Binlog的时候,已经进行了备份及还原(当时采用的就是逻辑备份)。
逻辑备份是将数据库中的结构(CREATE DATABASE/TABLE)和数据(INSERT STATEMENT)以 SQL 语句的形式导出到一个文本文件中。恢复时,MySQL 会执行这些 SQL 语句来重建数据库。
核心特点:
.sql 文件,人类可读。mysql 命令)导入执行。2.逻辑备份操作(mysqldump)
备份单个库
mysqldump -u username -p database_name > backup.sql备份所有库
mysqldump -u username -p --all-databases > all_backup.sql备份单个表
mysqldump -u username -p database_name table1 table2 > tables_backup.sql备份表结构(不含数据)
# 备份单个数据库的表结构
mysqldump -u username -p --no-data database_name > database_structure.sql
# 备份所有数据库的表结构
mysqldump -u username -p --no-data --all-databases > all_databases_structure.sql备份数据(不含表结构)
# 备份单个数据库的数据
mysqldump -u username -p --no-create-info database_name > database_data.sql
# 备份所有数据库的数据
mysqldump -u username -p --no-create-info --all-databases > all_databases_data.sql
# 备份特定表的数据
mysqldump -u username -p --no-create-info database_name table1 table2 > tables_data.sql还原数据
#Linux命令还原
mysql -u username -p database_name < backup.sql
#mysql命令还原
-- 选择数据库
USE database_name;
-- 执行备份文件
SOURCE /path/to/backup.sql;注意,默认情况下还原的时候会删除原来的数据,如果你打开备份的sql文件可以看到类似的内容。

3.备份参数
选项 | 介绍 |
|---|---|
-u username | 指定连接数据库的用户名 |
-p | 提示输入密码 |
--host=hostname 或 -h hostname | 指定 MySQL 服务器地址 |
--port=port | 指定端口(默认 3306) |
--single-transaction | 对 InnoDB 表进行一致性备份,不锁表(推荐) |
--routines 或 -R | 备份存储过程和函数 |
--triggers | 备份触发器(默认开启) |
--events | 备份事件调度器 |
--hex-blob | 将 BINARY、VARBINARY 和 BLOB 列安全地转储为十六进制字符串 |
--lock-tables | 备份时锁定所有表(MyISAM 需要,InnoDB 不推荐) |
--master-data=2 | 记录二进制日志位置和文件名,用于搭建从库(值为2表示注释掉CHANGE MASTER语句) |
--databases | 备份指定的一个或多个数据库(包含 CREATE DATABASE 语句) |
--all-databases | 备份所有数据库 |