MySQL逻辑备份

逻辑备份:备份的是建表,建库,插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库,效率相对较低。

远程备份语法:mysqldump  -h 服务器  -u用户名  -p密码   数据库名  >  备份文件.sql

本地备份语法:mysqldump  -u用户名  -p密码  数据库名  >  备份文件.sql

1.常用备份选项

-A,--all-databases\  备份所有库

-B,--datavases bbs test mysql 备份多个数据库

--no-data,-d\ 不导出任何数据,只导出数据库表结构

 2.备份表

语法:# mysqldump  -u  username   -p password   db1   t1  >  /db1.t1.bak

备份多个表:mysqldump -u root -p1 db1 t1   t2 > /db1.t1_t2.bak

其中,username和passwd是连接mysql服务器的用户名和密码,db1 t1是要备份的数据库名中的表,/db1.t1.bak是导出备份的文件名

例:

[root@mysql-server ~]# mkdir /home/back  #创建备份目录
[root@mysql-server ~]# mysqldump -uroot -p'qf123' company employee5 > /home/back/company.employee5.bak
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@mysql-server ~]# mysqldump -uroot -p'qf123' company new_t1 new_t2  > /home/back/company.new_t1_t2.bak

 3.备份数据库

备份一个库

语法:mysqldump  -u  username  -p passwd  db1 > /db1.bak

备份多个库(-B)

语法:mysqldump  -u root -p1 -B  db1 db2 db3 > /db123.bak

备份所有库:

语法: mysqldump  -u root -p1 -A > /alldb.bak(远程备份再加 -h192.168.100.150)

例子:

[root@mysql-server ~]# mysqldump -uroot -p'qf123' company > /home/back/company.bak
[root@mysql-server ~]# mysqldump -uroot -p'qf123' -B company testdb > /home/back/company_testdb.bak
[root@mysql-server ~]# mysqldump -uroot -p'qf123' -A > /home/back/allbase.bak

4.恢复数据库和表

为保证数据一致性,应在恢复数据之前停止数据库对外的服务,停止binlog日志  因为binlog使用binlog日志恢复数据时也会产生binlog日志。

5.恢复库

语法:mysql   -uroot  -p1  db2 <  /home/back/db1.bak

6.恢复表

mysql> set  sql_log_bin=0;  #停止binlog日志

mysql> source  /home/back/db1.t1.bak;   ----加路径和备份的文件 (使用source来导入备份文件)

或者:musql  -u  root  -p1  db1 <  db1.t1.bak

7.备份及恢复表结构

备份表结构:mysqldump  -u root -p-d databasename tablename > dump.sql

恢复表结构:mysql  -u  root  -p-D  db1  <  db1.t1.bak

8.在库里数据的导入导出,没有表结构。

表的导出和导入只备份表内记录,不会备份表结构,需要通过mysqldump备份表结构,恢复时先恢复表结构,再导入数据。

mysql> show variables like "secure_file_priv";  ----查询导入导出的目录。(保证数据安全做共享) 

修改安全文件目录:
1.创建一个目录:mkdir  路径目录
[root@mysql-server ~]# mkdir /sql
2.修改权限
[root@mysql-server ~]# chown mysql.mysql /sql
3.编辑配置文件:
vim /etc/my.cnf
在[mysqld]里追加
secure_file_priv=/sql
4.重新启动mysql.

 1.导出数据
登陆数据查看数据
mysql> show databases;    #找到test库
mysql> use test   #进入test库
mysql> show tables;  #找到它t3表
mysql> select * from t3 into outfile '/sql/test.t3.bak';

(into outfile '/sql/test.t3.bak';)意思为:表示将查询结果导出到指定的文件
添加修饰的:
mysql> select * from t3 into outfile '/sql/test.t3.bak1' fields terminated by ',' lines terminated by '\n';
注:
fields terminated by ',' :字段以逗号分割
lines terminated by '\n':结尾换行

2.数据的导入
先将原来表里面的数据清除掉,只保留表结构
mysql> delete from t3;
mysql> load data infile '/sql/test.t3.bak' into table t3;
如果将数据导入别的表,需要创建这个表并创建相应的表结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值