一、数据库备份

1.命令简介:

# mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
1)关于数据库名:
  -A, --all-databases         所有库
  school               数据库名
  school stu_info t1 school  数据库的表stu_info、t1
  -B, --databases bbs test mysql 多个数据库
2)关于其它参数说明:
  --single-transaction         #InnoDB 一致性 服务可用性
  -x, --lock-all-tables          #MyISAM 一致性 服务可用性
  -E, --events                    #备份事件调度器代码
  --opt                               #同时启动各种高级选项
  -R, --routines                 #备份存储过程和存储函数
  -F, --flush-logs               #备份之前刷新日志
  --triggers                       #备份触发器
  --master-data=1|2        #该选项将会记录binlog的日志位置与文件名并追加到文件中

2、操作过程:

1)创建库表:

mysql> create database school;
Query OK, 1 row affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| school |
| sys |
+--------------------+
5 rows in set (0.00 sec) mysql> use school;
Database changed mysql> select * from school.t1;
Empty set (0.00 sec)

mysql> create table t2 (id int);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into t1 values (1),(2);
Query OK, 2 rows affected (0.03 sec)
Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from t1;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec) mysql>

2)逻辑备份:

[root@localhost ~]# mysqldump -uroot -p'Yanglt123.' --all-databases \
> --single-transaction \
> --routines \
> --triggers \
> --master-data= \
> --flush-logs > /tmp/`date +%F`-mysql-all.sql` mysqldump: [Warning] Using a password on the command line interface can be insecure. #此提示是密码明文显示的愿意
[root@localhost tmp]#

注意事项:

--master-data=    #该选项将会记录binlog的日志位置与文件名并追加到文件中
参数为1和2的时候,都是把position日志截断,如果为2的话第22行为注释状态,为1的时候没有注释,建议选择1: [root@localhost tmp]# vim ---mysql-all.sql 可以
-- Position to start replication or point-in-time recovery from
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=; --
:set nu

二、数据库恢复

1. 停止数据库   【systemtl stop mysqld 】
2. 清理环境      【rm -rf /var/lib/mysql/*;】
3. 启动数据库     【初始密码 /var/log/mysqld.log】
4. 重置密码      【新密码 】
5. mysql恢复数据  【新密码 】
6. 刷新授权      【备份时密码 】

注:如果不是一个新的数据库环境,我们需要从第一步开始,如果已经是一个新的数据环境,我们可以直接从第5步执行。

先创建一个表,等一下验证恢复情况:
mysql> create table t2 (id int);
Query OK, rows affected (0.02 sec) mysql> insert into t2 values(),()
-> ;
Query OK, rows affected (0.03 sec)
Records: Duplicates: Warnings: mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| t1 |
| t2 |
+------------------+
rows in set (0.00 sec) mysql> Bye
[root@localhost ~]# )停止数据库
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]#
)清理环境
此处暂时不删除bin-log日志
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# rm -rf /var/lib/mysql/*
3)启动数据库
[root@localhost ~]# systemctl start mysqld
4)重置密码
[root@localhost ~]# grep 'temporary password' /var/log/mysqld.log|tail -n 1
2018-09-19T09:48:39.418109Z 1 [Note] A temporary password is generated for root@localhost: aBm<-wrj4NSV
[root@localhost ~]# mysqladmin -uroot -p'aBm<-wrj4NSV' password "Yanglt123."
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@localhost ~]# systemctl restart mysqld
[root@localhost ~]#
5)恢复数据
[root@localhost ~]# mysql -uroot -p'Yanglt123.' < /tmp/2018-09-19-mysql-all.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@localhost ~]#
可以看到它恢复到了备份点,刚才创建的表t2是在备份点之后生成的,可以看到表中没有t2:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| school |
| sys |
+--------------------+
5 rows in set (0.01 sec) mysql> use school;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed
mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| t1 |
+------------------+
1 row in set (0.00 sec) mysql>
6) 刷新授权
改完密码后与备份点的密码可能不一致,所有我们要执行此步骤,来实现与备份点密码一致。
[root@localhost ~]# mysql -p'Yanglt123.' -e 'flush privileges'
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@localhost ~]# 7)建议在逻辑备份恢复时,暂停BINLOG
mysql> SET SQL_LOG_BIN=0;
Query OK, 0 rows affected (0.02 sec)
mysql> source /tmp/2018-09-19-mysql-all.sql;

三、

【第八章】MySQL数据库备份—逻辑备份的更多相关文章

  1. 学会4种备份MySQL数据库(基本备份方面没问题了)

    前言 我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么 ...

  2. MYSQL的备份与恢复--逻辑备份mysqldump

    目录 0.备份与恢复概述 1.逻辑备份-完整备份与恢复 2.逻辑备份-增量备份与恢复 (1)环境准备 (2)恢复全量数据 (3)恢复增量备份 3.新来的开发妹子删了库! (1)模拟环境准备 (2)全备 ...

  3. MySQL数据库的定时备份

    1. 创建shell脚本 vim backupdb.sh 创建脚本内容如下: #!/bin/sh db_user="root" db_passwd=" db_name=& ...

  4. Mysql数据库如何自动备份

    Mysql数据库如何自动备份 一.总结 一句话总结:用navicat配合windows的批处理即可 navicat windows批处理 二.Mysql数据库自动备份 参考:Mysql数据库自动备份 ...

  5. 知识点:Navicet Mysql数据库电脑本地备份

    Navicet Mysql数据库电脑本地备份 1.打开navicat客户端,连上mysql后,双击左边你想要备份的数据库.点击“计划”,再点击“新建批处理作业”.     2.双击上面的可用任务,它就 ...

  6. Navicet Mysql数据库电脑本地备份

    Navicet Mysql数据库电脑本地备份 1.打开navicat客户端,连上mysql后,双击左边你想要备份的数据库.点击"计划",再点击"新建批处理作业" ...

  7. 实现MySQL数据库的实时备份

    实现MySQL数据库的实时备份 使用MySQL Replication 吴剑 2018-08-03 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian 吴剑 ht ...

  8. linux下应用crontab对mysql数据库进行定时备份

    linux下应用crontab对mysql数据库进行定时备份 @(编程) mysql数据库提供了备份命令mysqldump,可以结合crontab命令进行定时备份. 我写了一个mysqlbackup. ...

  9. Mysql数据库自动定时备份软件推荐--MySqlBackupFTP(免费,亲测可用,附使用图示)

    MySqlBackupFTP是一款Mysql数据库自动定时备份软件,免费版本就基本上可以满足我们的需求,不需要什么破解版,可直接官网下载安装使用. 先看结果(日志): 软件界面: 可以设定计划任务,每 ...

随机推荐

  1. 小程序的get和post需要注意的地方

    在进行异步请求之前先去小程序后台配置好服务器域名. get请求:header: { 'content-type':'json'}就可以. post请求:header: { 'content-type' ...

  2. Android 把url生成二维码并贴到给定的底图上

    主要是用到了com.google.zxing jar包生成二维码的功能,这个jar包需要自己接下载 直接上代码 public static Bitmap CreateBinaryCodeImageBy ...

  3. pycharm多行注释

    选中需要注释的代码 ctrl+/ #首字母大写# test = 'alex'# v = test.capitalize()# print (v)## 字符串的加法# n1 = 'my '# n2 = ...

  4. Java并发编程(七)终结线程

    线程的状态 一个线程会有如下五个状态 1.新建:线程在被创建时会暂时处于这种状态,此时系统为线程分配资源并对其进行初始化 2.就绪:此时线程已经可以运行,只是系统没有为其分配CPU时间. 3.运行:系 ...

  5. php无限极分类处理

    /** * 无限极分类处理(通过递归方式实现) * @param $section 原始数据Array * @param $html 界面显示前缀,比如 |- * @param $spear 分级中所 ...

  6. opacity(透明度)属性设置

    1.opacity:是属性,整个元素包含子元素全部都会透明,取值范围0-1; 2.background-color:rgba(0,0,0,.5)rgba是值,用于背景,取值范围0-1. 补充:a-al ...

  7. [试玩] FMXLinux (Firemonkey for Linux) Linux 桌面开发(第三方插件)

    FMXLinux 是一个可以用来开发 Linux 桌面软件的第三方插件,它需要配合 Delphi 10.2 Toyko 官网:http://www.fmxlinux.com/ 使用方法:开启 FMX ...

  8. Python学习 :面向对象 -- 三大特性

    面向对象的三大特性 一.封装 把数据.值.变量放入到对象中 构造方法 _init_方法 特殊作用: 在 obj = 类名() 执行时: 内部自动执行两个步骤: 1.创建对象 2.通过对象执行类中的一个 ...

  9. 希尔伯特曲线——第八届蓝桥杯C语言B组(国赛)第三题

    原创 标题:希尔伯特曲线 希尔伯特曲线是以下一系列分形曲线 Hn 的极限.我们可以把 Hn 看作一条覆盖 2^n × 2^n 方格矩阵的曲线,曲线上一共有 2^n × 2^n 个顶点(包括左下角起点和 ...

  10. tarjan强连通模板

    #include<stdio.h>//用于求一个图存在多少个强连通分量 #include<string.h> #include<vector> using name ...