mysql数据库没有备份与恢复,MySQL数据库的备份与恢复

数据库的备份与恢复

mysqdump工作原理

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

备份单个数据

mysql数据库自带了一个很好用的备份命令,就是mysqldump基本使用如下

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

1、备份数据并恢复:

mysqldump -uroot -p radius > /opt/mysql_bak.sql

还原数据库

mysql -uroot -p radius

2、指定拉丁字符集备份数据库

mysqldump -uroot -p --default-character-set=latin1 radius > /opt/mysql_bak.sql

还原数据库

mysql -uroot -p radius

3、备份时加参数(-B)#会在备份时增加创建数据库的连接数据的命令

mysqldump -uroot -p -B radius > /opt/mysql_bak_B.sql

还原数据库

mysql -uroot -p  

4、压缩备份(用gzip对备份的数据压缩)

mysqldump -uroot -p -B radius|gzip >/opt/mysq_bak.sql.gz

5、查看备份内容

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

root@solin:~# mysql -uroot -p -e "select id,username,is_superuser,last_login from radius.auth_user;"

Enter password:

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

| id | username | is_superuser | last_login          |

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

|  1 | root     |            1 | 2016-11-25 03:26:43 |

|  2 | WeiFei   |            0 | NULL                |

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

备份多个库

1、同时备份mysql和radius库

mysqldump -uroot -p -B radius mysql|gzip >/opt/mul.bak.sql.gz

提示:-B

表示连接多个库,并增加use db和create database db的命令信息

2、备份所有的库(-A备份所有的库)

mysqldump -uroot -p -A -B |gzip >/opt/a.sql.gz

3、利用cource命令恢复数据库

进入数据库控制台,mysql -uroot -p登陆后

msyql>use 数据库

然后使用source命令,后面参数为数据文件

例:root@solin:/opt# mysql -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 251

Server version: 5.6.28-0solin0.15.04.1 (Solin)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

mysql> show databases;

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

| Database           |

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

| information_schema |

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

1 row in set (0.00 sec)

mysql> system ls /opt

a.sql  mysql.sql.gz  radius_t.sql.gz  shop.sql

bak    radius.sql    shop_shop.sql

mysql> source a.sql;

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> show database;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘database‘ at line 1

mysql> show databases;

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

| Database           |

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

| information_schema |

| mysql              |

| radius             |

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

3 rows in set (0.00 sec)

mysql> \q

Bye

分库备份

企业的数据库会有很多库,出问题可能是某一个库,如果在备份时把所有的库备份成一个数据文件的,恢复某一个库时会较麻烦,这是就用到了分库备份。

1、命令行分库备份

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

Enter password:

root@solin:~# ls /opt/bak/

mysql.sql.gz  radius.sql.gz

2、for循环实现分库备份

[root@solin scripts]# cat fenku.sh

#!/bin/sh

for dbname in `mysql -uroot -p‘centos‘ -e "show databases;"|grep -Evi "database|info|perfor"`

do

mysqldump -uroot -p‘centos‘ --events -B $dbname|gzip >/opt/bak/${dbname}_bak.sql.gz

done

[root@solin scripts]# sh fenku.sh

[root@solin scripts]# ls /opt/bak/

mysql_bak.sql.gz  solin_gbk_bak.sql.gz  solin_utf8_bak.sql.gz  test_bak.sql.gz

分库备份还原

[root@solin ~]# gzip -d /opt/bak/*

[root@solin ~]# cd /opt/bak/

[root@solin bak]# ls *.sql|sed ‘s#_bak.sql##g‘

mysql

radius

[root@solin bak]# for dbname in `ls *.sql|sed ‘s#_bak.sql##g‘`;do mysql -uroot -pbdyun < ${dbname}_bak.sql;done

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

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

[root@solin bak]#

备份表

1、备份单个表

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

例: mysqldump -u root -p radius shop_shop >/opt/shop_shop.sql

查看结果

root@solin:~# ls /opt/

bak  mysql.sql.gz  radius.sql.gz  shop_shop.sql

root@solin:~# egrep -v "#|\*|--|^$" /opt/shop_shop.sql

DROP TABLE IF EXISTS `shop_shop`;

CREATE TABLE `shop_shop` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`shopname` varchar(200) COLLATE utf8_unicode_ci NOT NULL,

`contract_person_qq_number` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

`agent` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,

`url` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,

……

2、备份多个表

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

例: root@solin:~# mysqldump -uroot -p radius shop_shop shop_shop_admins >/opt/shop.sql

Enter password:

root@solin:~# ls /opt/

bak  mysql.sql.gz  radius.sql.gz  shop_shop.sql  shop.sql

root@solin:~# egrep -v "#|\*|--|^$" /opt/shop.sql DROP TABLE IF EXISTS `shop_shop`;

CREATE TABLE `shop_shop` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`shopname` varchar(200) COLLATE utf8_unicode_ci NOT NULL,

`contract_person_qq_number` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

`agent` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,

`url` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,

`address` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,

……

3、分库分表备份

mysqdump -uroot -p radius test >radius_test.sql

mysqdump -uroot -p radius test1 >radius_test2.sql

……

注:将上述命令放入一个脚本里就是脚本分表备份了,当然你也可以搜索其他更好的备份脚本,恢复时批量恢复多个SQl文件

备份数据库表结构和数据

1、mysqldump -d参数只备份表的结构

var cpro_id = "u6292429";

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://solin.blog.51cto.com/11319413/1878387

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值