Linux与MySql学习之旅(三):用命令和脚本备份与恢复MySql数据库

一、用命令备份数据库

1. 一般备份:mysqldump   -u 数据库登录名  -p [数据库登录密码]   数据库 >  备份路径/文件名 .sql

2.备份成压缩包:mysqldump   -u 数据库登录名  -p [数据库登录密码]   数据库 | gzip >  备份路径/文件名 .sql.gz

实例:注意 要先创建一个备份位置的文件夹。

mysqldump -uroot -p mynewdatabase20200512 > /usr/local/mysql_backup/mynewdatabase.sql
 

二、恢复数据库:

mysql  -uusername -ppassword databasename < backupfile.sql

实例:

mysql -uroot -p mynewdatabase20200512 < /usr/local/mysql_backup/mynewdatabase.sql


以下参考自:Linux下实现MySQL数据备份和恢复的命令使用全攻略

备份MySQL数据库的命令  :

 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 

备份MySQL数据库为带删除表的格式  备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。  

 mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql 

直接将MySQL数据库压缩备份 

 mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz 

备份MySQL数据库某个(些)表  

 mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql 

同时备份多个MySQL数据库  

 mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql 

仅仅备份数据库结构  

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql 

备份服务器上所有数据库  

mysqldump –all-databases > allbackupfile.sql 

还原MySQL数据库的命令  

 mysql -hhostname -uusername -ppassword databasename < backupfile.sql 

还原压缩的MySQL数据库 

 gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename 

将数据库转移到新服务器  

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

命令中 -hhostname可以不用。

 

补充:

>mysqldump -h192.168.9.204  -uroot -ppwd  databasename  --no-create-info   --default-character-set=utf8 table1  table2 table3 > backupfile.sql

备份数据库 databasename 下的 table1 table2 table3 数据表,并且不带drop 和 create 

 

二、创建定时任务执行备份:crontab -e

1.使用vi命令,创建脚本文件:文件名.sh,文件内容为linux命令

2.创建定时任务备份数据库

命令:crontab -e  回车 打开一个空的文件,编辑方法同vi,格式为

* * * * *    脚本文件文件路径

不明这个啥意思的,可以用这个命令查看:cat /etc/crontab 定时任务的格式。

定时任务编写格式
定时任务编写格式

示例:

(1)10 * * * *    脚本文件文件路径.sh

每小时过10分钟时执行脚本文件:即在  10:10   11:10   12:10  ......等等时执行文件,实际上是每一小时执行一次。

(2)*/10 * * * *  脚本文件文件路径.sh

每隔10分钟执行一次脚本文件:即  10:10  10:20  10:30 ....等等 每过十分钟执行一次。

 

crontab -l  查看当前用户下的定时任务,定时任务文件目录 为/var/spool/cron/  文件名为系统登录用户的名称

crontab -r 删除所有定时任务。

#定时删除指定文件

find 路径 -mtime N  -name '文件名.后缀名'  -exec rm -rf {} \;

实例:

find /usr/local/mysql_backup -mtime +1 -name '*.sql'  -exec rm -rf {} \;

-mtime n 按照文件的更改时间来找文件,n为整数。 
n表示文件更改时间距离为n天, -n表示文件更改时间距离在n天以内,+n表示文件更改时间距离在n天以前。 
例如: 
-mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。 
-mtime 1 表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件。 
-mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件 
-mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件

为什么-mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间48小时之外的文件,而不是24小时之外的呢? 
因为n值只能是整数,即比1大的最近的整数是2,所有-mtime+1不是比当前时间大于1天(24小时),而是比当前时间大于2天(48小时)。

数字N的参考文献:Linux命令之find命令中的-mtime参数

 

附:给文件授权:命令 chmod -R abc  文件名        a  b  c 分别表示授予owner  group  other 用户的权限值

Unix系统的权限分三种,分别是拥有者(Owner)、用户组(Group)、其它用户(Other),用ls的-l参数可以查看文件的权限。

权限示意图

图片来源文件授权,很好的文章

  • r = 4: 读

  • w = 2: 写

  • x = 1: 执行

使用 ls  文件  -ll 命令 可以查看文件权限。

journalctl -e??
journalctl | grep bkemp
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值