mysql还原出厂设置,mysql备份恢复

MySQL备份恢复

MySQL备份的类型

Hot backup(热备)

Hot backup:指在数据库运行中直接备份,对正在运行的数据库没有任何影响。(Online Backup),官方手册称为在线备份。(备份的同时,业务不受影响)

Cold Backup(冷备)

Cold Backup:指在数据库停止的情况下进行备份(Offline Backup) ,官方手册称为离线备份。(需要关mysql服务,读写请求均不允许状态下进行)

Warm Backup(温备)

Warm Backup:备份同样在数据库运行时进行,但仅支持读请求,不允许写请求;例如,加一个读锁以保证备份数据的一致性。(服务在线,但仅支持读请求,不允许写请求)

按照备份后文件内容:

1、逻辑备份

指备份后的文件内容是可读的,通常为文本文件,内容一般是SQL语句,或者是表内的实际数据,如mysqldump和SELECT * INTO OUTFILE的方法,一般适用于数据库的升级和迁移,恢复时间较长

2、物理文件备份

对数据库物理文件(如数据文件、日志文件等)的备份,数据库既可以处于运行状态(mysqlhotcopy 、ibbackup、xtrabackup这类工具),也可以处于停止状态(如cp、tar等),恢复时间较短。

按照备份数据库的内容来分,又可以分为:

1、完全备份:

每次对数据进行完整的备份。可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。但它需要花费更多的时间和存储空间,所以,做一次完全备份的周期要长些。完全是其他类型的基础。

2、差异备份:

在上一次完全备份基础上,对更新的数据进行备份。因为只备份数据库部分的内容。它比完全备份小,因为只包含自上次完全备份以来所改变的数据。它的优点是存储和恢复速度快。

3、增量备份:

在上次备份的基础上,对更新的数据进行备份

4、日志备份:

二进制日志备份。

备份策略:

完全+增量+二进制日志

完全+差异+二进制日志

逻辑备份工具mysqldump

mysqldump是MySQL数据库自带的一款命令行工具,mysqldump属于单线程,功能是非常强大的,不仅常被用于执行数据备份任务,甚至还可以用于数据迁移。

Mysqldump是mysql自带的逻辑备份工具,它的备份原理是,通过协议连接到mysql数据库,将数据转换成标准SQL语句(一堆 CREATE , DROP ,INSERT等语句);但我们需要还原时,只要执行这些语句即可将对应的数据还原。

优点:备份粒度相当灵活,既可以针对整个MySQL服务,也可以只备份某个或者某几个DB,或者还可以指定只备份某个或者某几个表对象,甚至可以实现只备份表中某些符合条件的记录(-w, --where: 只导出符合条件的记录)。

缺点:

1、当数据是浮点数时,会出现精度丢失。

2、Mysqldump的备份过程属于逻辑备份,备份速度、恢复速度与物理备份工具相比较慢,而且mysqldump备份的过程是串行化的,不会并行的进行备份,当数据量较大时,一般不会使用mysqldump进行备份,因为效率较低。

导出数据:

语法: mysqldump [options] [db_name [tbl_name …]]>导出的文件名.sql

常用参数:

-?, --help: 显示帮助信息,英文的;

-u, --user: 指定连接的用户名;

-p, --password: 指定用户的密码,可以交互输入密码;

-S , --socket: 指定socket文件连接,本地登录才会使用。

-h, --host: 指定连接的服务器名称或者IP。

-P, --port=: 连接数据库监听的端口。

–default-character-set: 设置字符集,默认是UTF8。

-A,–all-databases: 导出所有数据库。不过默认情况下是不会导出information_schema库。

-B, --databases: 导出指定的某个/或者某几个数据库,参数后面所有名字都被看作数据库名,用空格隔开,包含CREATE DATABASE创建库的语句。

–tables: 导出指定表对象,参数格式为“库名 表名”,默认该参数将覆盖-B参数。

-w, --where: 只导出符合条件的记录。

-l, --lock-tables: 默认参数,锁定读取的表对象,想导出一致性备份的话最好使用该参数,但会导致无法对表执行写入操作。

–single-transaction:

该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于innoDB存储引擎。

在InnoDB导出时会建立一致性快照,在保证导出数据的一致性前提下,又不会堵塞其他会话的读写操作。指定这个参数后,其他连接不能执行ALTER TABLE、DROP TABLE 、RENAME TABLE、TRUNCATE TABLE这类语句,事务的隔离级别无法控制DDL语句。本选项和–lock-tables 选项是互斥的,使用参数–single-transaction会自动关闭该选项。

-d, --no-data: 只导出表结构,不导出表数据。

-t, --no-create-info: 只导出数据,而不添加CREATE TABLE 语句。

-f, --force: 即使遇到SQL错误,也继续执行。

-F, --flush-logs: 在执行导出前先刷新二进制日志文件,一般来说,如果是全库导出,建议先刷新日志文件,否则就不用了。

-x, --lock-all-tables: 在导出任务执行期间锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局锁定,并且自动关闭–single-transaction 和–lock-tables 选项。这个参数副作用比较大,这是全库锁定,备份执行过程中,该库无法进行读写操作,不是所有业务场景都能接受的。请慎用。

-n, --no-create-db: 不生成建库的语句CREATE DATABASE … IF EXISTS,即使指定—all-databases或–databases这类参数。

–triggers: 导出表的触发器脚本,默认就是启用状态。使用–skip-triggers禁用它。

-R, --outines: 导出存储过程以及自定义函数。

例:

导出数据

A:导出所有数据库

mysqldump -uroot -p123456 -A >all.sql

mysqldump -uroot -p123456 --all-databases >all2.sql

参数-A代表所有,等同于—all-databases

B:导出某个数据库

mysqldump -u 用户名 -p 数据库名 > 导出的文件名.sql

mysqldump -uroot -p123456 book >book.sql

vim book.sql

C:导出单张表

mysqldump -uroot -p123456 book books >books.sql

#导出book库books表

D:导出库的表结构

mysqldump -uroot -p123456 -d book>booktable.sql

#只导出book库的表结构

E:只导出数据

mysqldump -uroot -p123456 -t book>bookdata.sql #只导出book库中的数据

F:导出数据库,并自动生成库的创建语句

#mysqldump -uroot -p123456 -B book2 >book2.sql

#mysql -uroot -p123456 < book2.sql 导入不用指定数据名

导入数据:

A:导入所有数据库

mysql -uroot -p123456

B:导入数据库

mysql -uroot -p123456 book

如果导入时,没有对应的数据库,需要你手动创建一下:

使用source导入

create database book;

use book;

source /root/book.sql

c:导入表

drop table books;

mysql> source /root/books.sql; ##导入表时,不需要重新,创建表。要先进到相应的数据库中

mysql> select * from books;

D:导入表结构和数据

mysql> create database book;

#mysql -uroot -p123456 book

#mysql -uroot -p123456 book

二进制日志:Binary Log & Binary Log Index

mysql二进制日志概述:

mysql的二进制日志记录着数据库的所有增、删、改等操作日志(前提是要在自己的服务器上开启binlog),还包括了这些操作的执行时间。为了显示这些二进制内容,我们可以使用mysqlbinlog命令来查看。

Binlog的用途:

1:主从同步

2:恢复数据库

执行mysql> show variables like ‘log_bin%’;查看binlog是否开启

Off表示mysql当前binlog功能没有开启。

通过编辑my.cnf中的log-bin选项可以开启二进制日志,

形式如下:

log-bin [=DIR/[filename]]

开启binary log功能:

修改/etc/my.cnf配置文件,添加如下内容:

log-bin=/data/mysql/log/mysql_bin

server-id=1

重启

mysql-bin.index 文件(binary log index)的功能是记录所有Binary Log 的绝对路径,保证MySQL 各种线程能够顺利的根据它找到所有需要的Binary Log 文件。

用mysql> show variables like ‘log_bin%’;查看bin-log是否开启

查看二进制日志:

1、查看binlog日志文件列表:

show binary logs;

2、查看当前使用的二进制文件及日志文件中事件当前位置:

show master status;

3、删除所有的二进制日志

reset master

restet master:清空index文件中列出的所有二进制日志,并创建一个新的二进制日志文件,

4、重新开始一个新的日志文件:

flush logs;

5、查看binlog日志文件的内容:

语法格式: mysqlbinlog [options] log_file …

例:

在数据库test_db的stu表中执行一下增、删、改操作

可以在shell命令行中执行mysqlbinlog命令查看:

mysqlbinlog /data/mysql/log/mysql-bin.000002

标签:--,恢复,备份,导出,mysql,日志,数据库

来源: https://blog.csdn.net/weixin_54354768/article/details/114549315

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值