【整 1.2.3】 MySQL数据库备份与恢复命令实战

【备份单个数据库 - 多种参数】

语法: mysqldump -u 用户名 -p 数据库名 > 备份的文件名

【查看数据库的字符集】

mysql> show variables like ‘character_set%‘;

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

| Variable_name            | Value                                     |

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

| character_set_client     | utf8                                      |

| character_set_connection | utf8                                      |

| character_set_database   | utf8                                      |

| character_set_filesystem | binary                                    |

| character_set_results    | utf8                                      |

| character_set_server     | utf8                                      |

| character_set_system     | utf8                                      |

| character_sets_dir       | /application/mysql-5.5.32/share/charsets/ |

+--------------------------+—————————————————————+

【查看数据库对应的库的字符集】

mysql> show create database oldboy\G

*************************** 1. row ***************************

Database: oldboy

Create Database: CREATE DATABASE `oldboy` /*!40100 DEFAULT CHARACTER SET utf8 */

1 row in set (0.00 sec)

【查看数据库表的结构】

mysql> show create table student\G

*************************** 1. row ***************************

Table: student

Create Table: CREATE TABLE `student` (

`id` int(11) DEFAULT NULL,

`name` varchar(255) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

【备份数据库  命令】
[[email protected] ~]# mysqldump -uroot -p‘oldboy123‘ oldboy >/opt/mysql_bak.sql

[[email protected] ~]# ll /opt/

-rw-r--r--. 1 root root 3221 Feb 16 21:02 mysql_bak.sql

【备份数据库  命令】 【检查备份的数据库是否正确】 【备份数据库同时检查备份的数据库是否正确】

【可以不操作,只是在检查的时候显示正常的】

[[email protected] ~]# mysqldump -uroot -p‘oldboy123‘ oldboy >/opt/mysql_bak.sql

[[email protected] ~]# egrep -v "#|\*|--|^$" /opt/mysql_bak.sql

DROP TABLE IF EXISTS `student`;

CREATE TABLE `student` (

`id` int(11) DEFAULT NULL,

`name` varchar(255) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

LOCK TABLES `student` WRITE;

INSERT INTO `student` VALUES (3,‘测试003‘),(1,‘测试001‘),(2,‘测试002‘),(4,‘测试004‘),(5,‘测试005‘);

UNLOCK TABLES;

【备份的时候指定字符集备份(导出)】

【这样在检查导出的数据库的时候就不会出现乱码的情况,指定的字符集为数据库表的字符集】

【恢复备份的数据,同时检查恢复的数据】

[[email protected] /]# mysql -uroot -poldboy123 oldboy < /opt/mysql_bak.sql

[[email protected] /]# mysql -uroot -poldboy123 -e "select * from oldboy.student";

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

| id   | name      |

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

|    3 | 测试003   |

|    1 | 测试001   |

|    2 | 测试002   |

|    4 | 测试004   |

|    5 | 测试005   |

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

【加-B 备份数据库】

[[email protected] ~]# mysqldump -uroot -poldboy123 -B oldboy >/opt/mysql_bak_b.sql

[[email protected] ~]# egrep -v "#|\*|--|^$" /opt/mysql_bak_b.sql

USE `oldboy`;

DROP TABLE IF EXISTS `student`;

CREATE TABLE `student` (

`id` int(11) DEFAULT NULL,

`name` varchar(255) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

LOCK TABLES `student` WRITE;

INSERT INTO `student` VALUES (3,‘测试003‘),(1,‘测试001‘),(2,‘测试002‘),(4,‘测试004‘),(5,‘测试005‘);

UNLOCK TABLES;

【加B 参数的作用是增加创建数据库和连接数据库的命令】

【以及利用加B 进行数据恢复】

【指定压缩命令压缩备份的MySQL数据】

[[email protected] ~]# mysqldump -uroot -poldboy123 -B oldboy|gzip >/opt/mysql_bak_b.sql.gz

[[email protected] ~]# ll /opt/

-rw-r--r--. 1 root root 2058 Feb 16 22:48 mysql_bak_b.sql

-rw-r--r--. 1 root root  771 Feb 16 22:57 mysql_bak_b.sql.gz

【数据库备份的过程重点】

1.导出数据的时候用-B 参数

2,用gzip对备份的数据压缩

5.1.3 mysqldump的工作原理

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

-B 参数说明:

【多库备份的步骤】

【1.查看数据库】

[[email protected] opt]# mysql -uroot -poldboy123 -e "show databases;"

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

| Database           |

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

| information_schema |

| mysql              |

| oldboy             |

| performance_schema |

| t_a                |

| test               |

+——————————+

【2.过滤不需要的信息】

[[email protected] opt]# mysql -uroot -poldboy123 -e "show databases;"|grep -Evi "database|infor|perfor"

mysql

oldboy

t_a

test

[[email protected]

【3.替换要执行的语句】

[[email protected] opt]# mysql -uroot -poldboy123 -e "show databases;"|grep -Evi "database|infor|perfor"|sed ‘s#^#mysqldump -uroot -poldboy123 -B #g‘

mysqldump -uroot -poldboy123 -B mysql

mysqldump -uroot -poldboy123 -B oldboy

mysqldump -uroot -poldboy123 -B t_a

mysqldump -uroot -poldboy123 -B test

【4.替换成指定的备份路径】

[[email protected] opt]# mysql -uroot -poldboy123 -e "show databases;"|grep -Evi "database|infor|perfor"|sed -r ‘s#^([a-z].*$)#mysqldump -uroot -poldboy123 -B \1 >/opt/\1#g‘

mysqldump -uroot -poldboy123 -B mysql >/opt/mysql

mysqldump -uroot -poldboy123 -B oldboy >/opt/oldboy

mysqldump -uroot -poldboy123 -B t_a >/opt/t_a

mysqldump -uroot -poldboy123 -B test >/opt/test

【5.替换成指定备份的路径,压缩备份】

[[email protected] opt]# mysql -uroot -poldboy123 -e "show databases;"|grep -Evi "database|infor|perfor"|sed -r ‘s#^([a-z].*$)#mysqldump -uroot -poldboy123 -B \1|gzip >/opt/\1.sql.gz#g‘

mysqldump -uroot -poldboy123 -B mysql|gzip >/opt/mysql.sql.gz

mysqldump -uroot -poldboy123 -B oldboy|gzip >/opt/oldboy.sql.gz

mysqldump -uroot -poldboy123 -B t_a|gzip >/opt/t_a.sql.gz

mysqldump -uroot -poldboy123 -B test|gzip >/opt/test.sql.gz

【6。执行命令】

[[email protected] opt]# mysql -uroot -poldboy123 -e "show databases;"|grep -Evi "database|infor|perfor"|sed -r ‘s#^([a-z].*$)#mysqldump -uroot -poldboy123 -B \1|gzip >/opt/\1.sql.gz#g‘|bash

-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.

【7.检查备份的结果】

[[email protected] opt]# ll /opt/

total 160

-rw-r--r--. 1 root root 144306 Feb 16 23:23 mysql.sql.gz

-rw-r--r--. 1 root root    769 Feb 16 23:23 oldboy.sql.gz

drwxr-xr-x. 2 root root   4096 Mar 26  2015 rh

-rw-r--r--. 1 root root    748 Feb 16 23:23 t_a.sql.gz

-rw-r--r--. 1 root root    508 Feb 16 23:23 test.sql.gz

【7.忽略警告信息】

[[email protected] opt]# mysql -uroot -poldboy123 -e "show databases;"|grep -Evi "database|infor|perfor"|sed -r ‘s#^([a-z].*$)#mysqldump -uroot -poldboy123 --events -B \1|gzip >/opt/bak/\1.sql.gz#g‘|bash

[[email protected] opt]#

【备份单个表】

[[email protected] mysql]# mysqldump -uroot -poldboy123 --compact oldboy student

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `student` (

`id` int(11) DEFAULT NULL,

`name` varchar(255) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*!40101 SET character_set_client = @saved_cs_client */;

INSERT INTO `student` VALUES (3,‘测试003‘),(1,‘测试001‘),(2,‘测试002‘),(4,‘测试004‘),(5,‘测试005‘);

【备份数据库的表结构(不包含数据)】

[[email protected] mysql]# mysqldump -uroot -poldboy123 --compact -B -d oldboy

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `oldboy` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `oldboy`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `student` (

`id` int(11) DEFAULT NULL,

`name` varchar(255) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*!40101 SET character_set_client = @saved_cs_client */;

[[email protected] mysql]#

【指定库中的某一个表的结构进行备份】

[[email protected] mysql]# mysqldump -uroot -poldboy123 --compact -d oldboy student

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `student` (

`id` int(11) DEFAULT NULL,

`name` varchar(255) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*!40101 SET character_set_client = @saved_cs_client */;

【    -T  分开到处数据和结构】

【直接备份数据】

【-t 参数】

[[email protected] mysql]# mysqldump -uroot -poldboy123 --compact -t oldboy student

INSERT INTO `student` VALUES (3,‘测试003‘),(1,‘测试001‘),(2,‘测试002‘),(4,‘测试004‘),(5,‘测试005‘);

【-A 】 整个备份数据库 -包括可和表

[[email protected] mysql]# mysqldump -uroot -poldboy123 -A -B --events|gzip >/opt/a.sql.gz

[[email protected] mysql]# ll /opt/

total 308

-rw-r--r--. 1 root root 144664 Feb 17 01:45 a.sql.gz

drwxr-xr-x. 2 root root   4096 Feb 16 23:25 bak

在   my.cnf     中打开log日志记录

log-bin=mysql-bin  会将MySQL中的所有更改记录下来

【MySQL 日志的路径】

[[email protected] data]# pwd

/application/mysql/data

ll

-rw-rw----. 1 mysql mysql      541 Feb 14 18:33 mysql-bin.000001

-rw-rw----. 1 mysql mysql    11815 Feb 14 22:24 mysql-bin.000002

-rw-rw----. 1 mysql mysql     3557 Feb 16 22:51 mysql-bin.000003

-rw-rw----. 1 mysql mysql     1851 Feb 17 01:31 mysql-bin.000004

-rw-rw----. 1 mysql mysql       76 Feb 16 22:51 mysql-bin.index

【    -F  刷新binlog】

[[email protected] data]# mysqldump -uroot -poldboy123 -A -B -F --events|gzip >/opt/a.sql.gz

【    - -master-data=1    在备份的时候会自动记录binlog的当前位置】

[[email protected] data]# mysqldump -uroot -poldboy123 --master-data=1 --compact oldboy

CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000008‘, MASTER_LOG_POS=107;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

【查看binlog记录】

mysqlbinlog

【总结:MySQL语句总结整理】

【    -T  分开到处数据和结构                            】

【    -t    直接备份数据                                      】

【    -A    备份所有库      】

【    -B    指定多个库  ,增加建库语句和use语句备份库                】

【    -d    只备份表            】    -d oldboy student

【    —compact  去掉注释,适合调试输出,生产不用。精简内容  一般做测试的时候使用】

【    --events    忽略警告信息                                  】

【    -F     刷新binlog日志  ,也就是会创建一个递增的新的日志文件    切割(刷新)binlog   】

【    - -master-data=1    增加binlog日志文件名以及对应的位置点    在备份的时候会自动记录binlog的当前位置】

【    -x   - - lock-all-tables    锁表】

【    -e  在数据库外面执行sql语句    】

【生产场景备份】

myisam 备份命令

mysqldump -uroot -poldboy123 -A -B —master-data=2 -x --events|gzip >/opt/all.sql.gz

innodb 备份命令:推荐使用的

mysqldump -uroot -poldboy123 -A -B —master-data=2 -x —events —single-transaction|gzip >/opt/all.sql.gz

【专业DB 备份操作】

5.2 恢复数据库实践

【恢复命令  source】

mysql> source /opt/mysql.b.sql

Query OK, 1 row affected (0.00 sec)

【解压备份的压缩文件】

gzip -d msyql.bak.sql.gz

将备份出来的所有的库,恢复到数据库中

[[email protected] data]# for dbname in `ls *.sql|sed ‘s#_bak.sql##g‘`;do mysql -uroot -poldboy123 < ${dbname}_bak.sql;done

【MySQL 系统一些命令】

【查看当前链接数据库的用户以及数量】

[[email protected] data]# mysql -uroot -poldboy123 -e "show processlist;"

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

| Id | User | Host      | db   | Command | Time  | State | Info             |

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

|  3 | root | localhost | NULL | Sleep   | 16551 |       | NULL             |

| 58 | root | localhost | NULL | Query   |     0 | NULL  | show processlist |

时间: 2024-08-06 20:03:13

【整 1.2.3】 MySQL数据库备份与恢复命令实战的相关文章

2.MySQL用户管理,常用SQL语句,MySQL数据库备份与恢复

[toc] MySQL用户管理,重用SQL语句,MySQL数据库备份与恢复 一.MySQL用户管理 1.创建一个普通用户并授权 首先启动mysql,然后进入 [[email protected] ~]# /etc/init.d/mysqld start Starting MySQL... SUCCESS! [[email protected] ~]# mysql -uroot -pxavilinux Warning: Using a password on the command line in

96.创建普通用户并授权,常用SQL语句,MySQL数据库备份与恢复

一.创建普通用户并授权 1.创建用户并授权 [[email protected] ~]# mysql -uroot -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 1Server version: 5.6.36 MySQL Community Server (GPL) Copyright (c) 2000, 2017, Oracle and/o

备份MySQL数据库的命令

这篇文章主要介绍了mysql数据库备份常用语句,包括数据库压缩备份.备份多个MySQL数据库.备份多个MySQL数据库.将数据库转移到新服务器等语句 代码如下: mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库为带删除表的格式 备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库. 代码如下: mysqldump -–add-drop-tab

MYSQL数据库备份与恢复【转】

mysqldump -h主机名  -P端口 -u用户名 -p密码 (–database) 数据库名 > 文件名.sql   备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库.mysqldump -–add-drop-table -uusername -ppassword datab

MySQL数据库备份命令

备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql备份MySQL数据库为带删除表的格式备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库. mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql直接将MySQL数据库压缩备份 mysq

MySQL 数据库常用命令小结

1.MySQL常用命令 create database name; 创建数据库 use databasename; 选择数据库 drop database name 直接删除数据库,不提醒 show tables; 显示表 describe tablename; 表的详细描述 select 中加上distinct去除重复字段 mysqladmin drop databasename 删除数据库前,有提示. 显示当前mysql版本和当前日期 select version(),current_dat

第二百七十六节,MySQL数据库常用命令

MySQL数据库常用命令 1.显示数据库 SHOW DATABASES;显示数据库 SHOW DATABASES; mysql - 用户权限相关数据sys - 数据库的相关配置存放的表information_schema MySQL本身架构相关数据performance_schema主要用于收集数据库服务器性能参数 2.创建数据库 CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 创建一个utf-8编码数据库

MySQL 数据库常用命令小结(一)

MySQL 数据库常用命令 1.MySQL常用命令 create database name; 创建数据库 use databasename; 选择数据库 drop database name 直接删除数据库,不提醒 show tables; 显示表 describe tablename; 表的详细描述 select 中加上distinct去除重复字段 mysqladmin drop databasename 删除数据库前,有提示. 显示当前mysql版本和当前日期 select version

mysql数据库常规命令操作

1.MySQL数据库导出命令 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名     mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql2.导出一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql3.导出一个数据库结构  mysqldump -u wcnc -p