MySQL备份与恢复(3)mysqldump备份多个库

Wesley13
• 阅读 881

一、mysqldump的工作原理

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

    利用这个备份文件恢复的时候的原理?就是把备份的sql命令再执行一遍。

二、备份多个库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| oldboy             |
| oldboy_gbk         |
| oldboy_utf8        |
| performance_schema |
+--------------------+
6 rows in set (0.00 sec)

mysql> quit
Bye
[root@localhost ~]# mysqldump -uroot -pdubin -B oldboy oldboy_gbk|gzip >/opt/all_bak.sql.gz
[root@localhost ~]# ls -l /opt/all_bak.sql.gz 
-rw-r--r--. 1 root root 1374 9月  21 11:50 /opt/all_bak.sql.gz
[root@localhost ~]#

三、如何做分库备份?

    分库备份实际上就是执行一个备份语句备份一个库,如果数据库里有多个库,就执行多条相同的备份单个库的备份语句就可以备份多个库了,注意每个库都可以用对应备份的库作为库名,结尾加 .sql。备份多个库的命令如下:

mysqldump -uroot -pdubin -B oldboy ……
mysqldump -uroot -pdubin -B oldboy_gbk ……

    分库备份过程

[root@localhost ~]# mysql -uroot -pdubin -e "show databases;"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| oldboy             |
| oldboy_gbk         |
| oldboy_utf8        |
| performance_schema |
+--------------------+
[root@localhost ~]# mysql -uroot -pdubin -e "show databases;"|grep -Evi "database|infor|perfor"
mysql
oldboy
oldboy_gbk
oldboy_utf8
[root@localhost ~]# mysql -uroot -pdubin -e "show databases;"|grep -Evi "database|infor|perfor"|sed 's#^#mysqldump -uroot -pdubin -B #g'
mysqldump -uroot -pdubin -B mysql
mysqldump -uroot -pdubin -B oldboy
mysqldump -uroot -pdubin -B oldboy_gbk
mysqldump -uroot -pdubin -B oldboy_utf8
[root@localhost ~]# mysql -uroot -pdubin -e "show databases;"|grep -Evi "database|infor|perfor"|sed 's#^([a-z].*$)#mysqldump -uroot -pdubin -B \1 >/opt/\1.sql#g'
sed:-e 表达式 #1,字符 59:“s”命令的RHS非法引用\1
[root@localhost ~]# mysql -uroot -pdubin -e "show databases;"|grep -Evi "database|infor|perfor"|sed -r 's#^([a-z].*$)#mysqldump -uroot -pdubin -B \1 >/opt/\1.sql#g'
mysqldump -uroot -pdubin -B mysql >/opt/mysql.sql
mysqldump -uroot -pdubin -B oldboy >/opt/oldboy.sql
mysqldump -uroot -pdubin -B oldboy_gbk >/opt/oldboy_gbk.sql
mysqldump -uroot -pdubin -B oldboy_utf8 >/opt/oldboy_utf8.sql
[root@localhost ~]# mysql -uroot -pdubin -e "show databases;"|grep -Evi "database|infor|perfor"|sed -r 's#^([a-z].*$)#mysqldump -uroot -pdubin -B \1|gzip >/opt/\1.sql.gz#g'
mysqldump -uroot -pdubin -B mysql|gzip >/opt/mysql.sql.gz
mysqldump -uroot -pdubin -B oldboy|gzip >/opt/oldboy.sql.gz
mysqldump -uroot -pdubin -B oldboy_gbk|gzip >/opt/oldboy_gbk.sql.gz
mysqldump -uroot -pdubin -B oldboy_utf8|gzip >/opt/oldboy_utf8.sql.gz
[root@localhost ~]# mysql -uroot -pdubin -e "show databases;"|grep -Evi "database|infor|perfor"|sed -r 's#^([a-z].*$)#mysqldump -uroot -pdubin -B \1|gzip >/opt/\1.sql.gz#g'|bash
-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
[root@localhost ~]# ll /opt/
总用量 196
-rw-r--r--. 1 root root   1374 9月  21 11:50 all_bak.sql.gz
-rw-r--r--. 1 root root   2371 9月  21 08:45 mysql_bak_B_compact.sql
-rw-r--r--. 1 root root   4651 9月  21 08:45 mysql_bak_B.sql
-rw-r--r--. 1 root root   4508 9月  21 08:43 mysql_bak.sql
-rw-r--r--. 1 root root   1355 9月  21 08:47 mysql_bak.sql.gz
-rw-r-----. 1 root root    498 9月  20 22:17 mysqlbin_oldboy.000001
-rw-r--r--. 1 root root 144535 9月  21 12:01 mysql.sql.gz
-rw-r--r--. 1 root root    203 9月  20 08:46 oldboy_bak1.sql
-rw-r--r--. 1 root root   2826 9月  20 08:46 oldboy_bak.sql
-rw-r--r--. 1 root root    512 9月  21 12:01 oldboy_gbk.sql.gz
-rw-r--r--. 1 root root   1354 9月  21 12:01 oldboy.sql.gz
-rw-r--r--. 1 root root    512 9月  21 12:01 oldboy_utf8.sql.gz
[root@localhost ~]# mysql -uroot -pdubin -e "show databases;"|grep -Evi "database|infor|perfor"|sed -r 's#^([a-z].*$)#mysqldump -uroot -pdubin --event -B \1|gzip >/opt/\1.sql.gz#g'|bash
[root@localhost ~]# mkdir /opt/bak
[root@localhost ~]# mysql -uroot -pdubin -e "show databases;"|grep -Evi "database|infor|perfor"|sed -r 's#^([a-z].*$)#mysqldump -uroot -pdubin --event -B \1|gzip >/opt/bak/\1.sql.gz#g'|bash
[root@localhost ~]# ll /opt/bak
总用量 156
-rw-r--r--. 1 root root 144570 9月  21 12:03 mysql.sql.gz
-rw-r--r--. 1 root root    534 9月  21 12:03 oldboy_gbk.sql.gz
-rw-r--r--. 1 root root   1371 9月  21 12:03 oldboy.sql.gz
-rw-r--r--. 1 root root    533 9月  21 12:03 oldboy_utf8.sql.gz
[root@localhost ~]# 

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

 MySQL备份与恢复(3)mysqldump备份多个库

     分库备份的意义何在?

        有时一个企业的数据库里会有多个库,例如(www,bbs,blog),但是出问题时候的很可能是一个库,如果在备份时把所有的库都备份成一个数据文件的话,恢复某一个库的数据时就比较麻烦了。

     shell脚本实现分表分库备份的脚本

[root@localhost ~]# vi fenku.sh

for dbname in `mysql -uroot -pdubin -e "show databases;"|grep -Evi "database|infor|perfor"`
do
        mysqldump -uroot -pdubin --event -B $dbname|gzip >/opt/bak/${dbname}.sql.gz
done

root@localhost ~]# rm -f /opt/bak/*
[root@localhost ~]# sh fenku.sh
[root@localhost ~]# ll /opt/bak
总用量 156
-rw-r--r--. 1 root root 144569 9月  21 12:12 mysql.sql.gz
-rw-r--r--. 1 root root    534 9月  21 12:12 oldboy_gbk.sql.gz
-rw-r--r--. 1 root root   1370 9月  21 12:12 oldboy.sql.gz
-rw-r--r--. 1 root root    533 9月  21 12:12 oldboy_utf8.sql.gz
[root@localhost ~]#
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
MySQL运维之
1、mysqldump备份一个数据库mysqldump命令备份一个数据库的基本语法:mysqldumpuuserppwddbnameBackup.sql我们来讲解一下备份的文件都包含了什么?\MySQLdump10.13Distrib5.5.20,forWin32(x86)\
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
Shell备份数据库到文件,自动删除过期备份文件
刚工作那会写的备份数据库脚本!/bin/shauthor:Kamimysqldump文件的路径MYSQLDUMP/usr/bin/mysqldump保存备份文件的目录BACKUP/var/backup/数据库账号USER""
Wesley13 Wesley13
2年前
mysql 数据备份和还原
1.使用mysqldump命令备份使用root用户备份test数据库下的person表mysqldumpurootptestpersonD:\backup.sql1.备份多个数据库语法:mysqldumpuusernamepdatabasesdbname2dbname2
Wesley13 Wesley13
2年前
MySQL定时备份数据库
一、MySQL数据备份1.1、mysqldump命令备份数据在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:MySQLdump常用m
Wesley13 Wesley13
2年前
mysqldump 逻辑备份和物理备份
逻辑备份逻辑备份是备份sql语句,在恢复的时候执行备份的sql语句实现数据库数据的重现。工具:mysqldump特点:1、可移植性比较强2、备份和恢复的花费时间长,不适用于大型业务系统物理备份物理备份就是备份数据文件了,比较形象点就是cp下数据文件,但真正备份的时候自然不是的cp这么简单。工具:xtraba
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这