MySQL系列之F------MySQL备份

F.1 mysqldump的工作原理

利用mysqldump命令备份数据的过程,实际上就是把数据从mysql库里以逻辑的sql语句的形式直接输出或者生成备份文件的过程。

F.2 备份

F.2.1备份单个数据库,联系多种参数使用

mysql数据库自带的备份命令mysqldump

语法:mysqldump -h数据库地址 -u用户名 -p数据库 >备份的目录和文件

范例1:备份名字为test123的库

a、查看备份前的数据

[[email protected] ~]# mysql -h 127.0.0.1-u root -poracle -e "show databases;use test123;show tables;select * fromtest;"

Warning: Using a password on thecommand line interface can be insecure.

+--------------------+

| Database           |

+--------------------+

| information_schema |

| 3306               |

| mysql              |

| performance_schema |

| test               |

| test123            |

| testtest           |

+--------------------+

+-------------------+

| Tables_in_test123 |

+-------------------+

| student           |

| test              |

| test01            |

| test02            |

+-------------------+

+----+--------+------+----------+------+

| id | name   | age | password | sex  |

+----+--------+------+----------+------+

| 1 | test01 | NULL | test01   |NULL |

| 2 | test02 | NULL | test02   |NULL |

| 3 | test03 | NULL | test03   |NULL |

| 4 | test04 | NULL | test04   |NULL |

+----+--------+------+----------+------+

b、执行备份的命令(推荐使用-B参数)

[[email protected] ~]# mysqldump-h127.0.0.1 -uroot -p test123 >/opt/test123_bak.sql

Enter password:

 

c、检查备份的结果

egrep -v “#|\*|--|^$”/opt/mysql_bak.sql

注意:其中在恢复的时候,首先做的操作是删除表,之后创建表的过程

 

d、使用-B进行备份

(1、在备份文件中会生成使用备份的数据库(test123),不然,在恢复的时候需要指定恢复的数据库;2、在备份文件中会有create database db信息;)

[[email protected] ~]# mysqldump-h127.0.0.1 -uroot -poracle -B test123 >/opt/test123_B_bak.sql

 

f、检查备份的结果

egrep -v “#|\*|--|^$”/opt/test123_B_bak.sql

注意:添加的-B参数就相当于在恢复的时候指定了数据库。

g、恢复的时候不需要指定数据库和字符集

mysql> drop table test;

Query OK, 0 rows affected (0.64 sec)

[[email protected] ~]# mysql -h127.0.0.1-uroot -p </opt/test123_B_bak.sql

Enter password:

 

[[email protected] ~]# mysql -h127.0.0.1-uroot -poracle -e "use test123;select * from test;"

Warning: Using a password on the commandline interface can be insecure.

+----+--------+------+----------+------+

| id | name   | age | password | sex  |

+----+--------+------+----------+------+

| 1 | test01 | NULL | test01   |NULL |

| 2 | test02 | NULL | test02   |NULL |

| 3 | test03 | NULL | test03   |NULL |

| 4 | test04 | NULL | test04   |NULL |

+----+--------+------+----------+------+

h、备份的时候使用gzip进行压缩

(使用压缩可以减少使用的空间)

[[email protected] ~]# mysqldump-h127.0.0.1 -uroot -poracle -B test123 |gzip >/opt/test123_B.gz

[[email protected] ~]# ll /opt

total 24

-rw-r--r--. 1 root mysql 4435 May23 23:52 test123_bak.sql

-rw-r--r--. 1 root mysql 4583 May24 00:17 test123_B_bak.sql

-rw-r--r--. 1 root mysql 1057 May24 00:46 test123_B.gz

由上列信息可以看到,其中没有通过-B参数的比通过-B参数的备份要小,通过-B参数和gzip压缩的是最小的,比例大概为4:1(不能当做通用值使用)

 

总结:在通过mysqldump备份的时候参数要使用-B(省略需要指定数据库use database和create database db信息),使用gzip(减少备份所占用的空间)

例如:

mysqldump -h127.0.0.1 -uroot -poracle -B 需要备份的数据库 |gzip >需要备份到的目录及备份文件的名字(注意:在不使用gzip时,后缀是sql;使用gzip后缀名是gz

A.2.2备份多个数据库

[[email protected] ~]# mysqldump-h127.0.0.1 -uroot -poracle -B test123 testtest |gzip >/opt/test123_testtest_bak.gz

[[email protected] ~]# ll /opt

total 32

-rw-r-----. 1 root mysql  345 May 23 06:09 mysqlbin_test.000001.bak

-rw-r--r--. 1 root mysql 4435 May 2323:52 test123_bak.sql

-rw-r--r--. 1 root mysql 4583 May 2400:17 test123_B_bak.sql

-rw-r--r--. 1 root mysql 1057 May 2400:46 test123_B.gzip

-rw-r--r--. 1 root mysql 1131 May 2401:52 test123_testtest_bak.gz

时间: 2024-08-19 08:34:10

MySQL系列之F------MySQL备份的相关文章

Linux命令:MySQL系列之十--MySQL用户和权限管理、mysql管理员密码重置

MySQL用户账号包括:用户名@主机名 用户名:16个字符以内 主机:主机有以下几种表现方式 主机名: mysql,www.magedu.com IP地址: 172.16.90.111 网络地址:172.16.0.0/255.255.0.0 通配符:%,_   %:任意字符  _:任意一个 172.16.%.%     %.magedu.com 权限级别:全局级别.库级别.表级别.列级别.存储过程和存储函数级别 全局级别:SELECT * FROM db\G; 查询全局库级别的权限 ******

Linux命令:MySQL系列之十三--MySQL备份与还原(针对单张表SELECT备份)

对于只备份单张表的备份与还原,通过SELECT命令,可以更快速的达到备份和恢复的目的: 以及通过此方法把一个数据库中表的数据,导入至另一数据库的表中去. 备份格式:SELECT * INTO OUTFILE '/PATH/TO/somefile.txt' FROM table_name [WHERE CLAUSE]; #备份table_name表中的[或者备份满足WHERE语句的数据]数据至服务器上保存. 注释:table_name:需要备份的表  WHERE:满足的条件,可选项. /PATH/

mysql系列之5--完全备份和增量备份

一.利用系统自带的工具实现完全备份:mysqldump 1.备份所有的数据库: mysqldump -hlocalhost -uroot -p12345678   --all-databases > /opt/$(date +%F).sql //--all-databases--所有数据库 /opt/$(date +%F).sql 重定向到以日期命名的文件 2.备份指定的数据库: mysqldump -hlocalhost -uroot -p12345678   db1 db2  > /opt

Linux命令:MySQL系列之十一--MySQL日志管理

MySQL日志管理 SHOW GLOBAL VARIABLES LIKE '%log%':查看关于log的全局变量 一.日志分类 1.错误日志   2.一般查询日志   3.慢查询日志 4.二进制日志  5.中继日志   6.事务日志   7.滚动日志 二.日志详解 1.错误日志 说明:在对应的数据目录中,以主机名+.err命名的文件,错误日志记录的信息类型: 记录了服务器运行中产生的错误信息 记录了服务在启动和停止是所产生的信息 在从服务器上如果启动了复制进程的时候,复制进程的信息也会被记录

mysql系列之9.mysql日志&amp;存储引擎

mysqlbinlog 是什么? 数据目录下的如下文件: mysql-bin.xxxxxx 作用? 记录数据库内部增删改查对mysql数据库有更新的内容的记录 三种模式? statement level 模式: 缺点是不够细致 row level 模式: 日志会记录每一行数据被修改的形式 (一下子修改多行其实就一条语句, 但是它会记录成多行) 优点: 记录每一行的细节, 可以记录function/trigger/存储过程 mixed level 模式: 混合模式, 自动判断该使用statemen

Linux命令:MySQL系列之九--MySQL隔离级别及设置

SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的.低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销.Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果.本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少.读取未提交的数据,也被称之为脏读(Dirty Read).Read Committed(读取提交内容) 这是大多数数据库系统的默认隔离级别(但不是MySQL默认的).

Linux命令:MySQL系列之六--视图/mysql -e

视图VIEW命令简介: VIEW视图就是存储下来的SELECT语句数据 1.创建视图命令格式: CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = { user | CURRENT_USER }] [SQL SECURITY { DEFINER | INVOKER }] VIEW view_name [(column_list)] AS select_statement [WITH [CASCA

mysql系列之8.mysql高可用 (mha4mysql)

环境: 三台机器 主服务器: 192.168.1.130 主备机器: 192.168.1.131 监控机器: 192.168.1.132 130和131, 是mysql双主架构 1.在三台机器上安装mha4mysql-node yum -y install perl-DBD-MySQL tar -zxvpf mha4mysql-node-0.56.tar.gz mha4mysql-node-0.56.tar.gz cd mha4mysql-node-0.56 perl Makefile.PL -

mysql系列之8.mysql高可用 (keepalived)

环境: centos6.5_x64 准备: 两台mysql机器 主1 master:  192.168.32.130 主2 backup:  192.168.32.131 VIP: 192.168.32.100 步骤: 1.配置mysql的双主架构 2.安装keepalived keepalived-1.2.23.tar.gz yum -y install openssl openssl-devel wget http://www.keepalived.org/software/keepaliv

MySQL系列之九——MySQL事务和隔离级别

DML :DELETEINSERT INTOUPDATE与查询操作有关 INSERT INTO tb_name (col1,col2,...) VALUES (val1,val2,...)[,(val1,val2,...)]字符型 :单引号数值型 :不需要引号日期时间型空值 :NULLREPLACE INTO 替换 用法相同 DELETE :DELETE FROM tb_name WHERE condition;truncate tb_name 清空表并重置AUTOINCREMEN计数器: UP