-tab mysqldump_mysql-crontab和mysqldump实现热备份

本文介绍了如何使用mysqldump进行MySQL数据库的自动热备份,包括备份单个和所有数据库、只备份表结构、备份存储过程。通过结合crontab设置定时任务,在每天特定时间执行备份,同时演示了如何删除超过7天的备份文件,以保持备份目录的整洁。此外,还提到了使用gzip进行文件压缩以节省磁盘空间。
摘要由CSDN通过智能技术生成

mysql简单热备份

这里我们讲的是mysql自动热备份,热备份就是说我们不需要将机器停止,就可以将数据给备份出来。并且这里的自动热备份是基于某个时间点的自动热备份,也就是说不是实时的热备份,实时热备份可以基于binlog来实现。

shell脚本

数据库连接信息配置

这里,我们需要导出的是mysql数据库的备份信息,所以我们需要先进行数据库连接信息的配置。

mysqldump导出备份

mysql数据库导出备份信息需要使用到mysqldump这个命令,详细使用可以使用mysqldum --help命令查看。

#备份单个数据库

mysqldump -u root -p --databases 数据库1 > f:\xxx.sql

#备份所有数据库

mysqldump -u root -p --all-databases > f:\xxx.sql

#只备份表结构

mysqldump -u root -p -d --databases 数据库1 > f:\xxx.sql

#备份存储过程

mysqldump -u root -p -R --databases 数据库1 > f:\xxx.sql

这里特殊说明一下--opt选项,我们可以从mysqldum --help中查看到这个选项的作用。mysqldump默认启用--opt选项,使用了--opt选项就相当于指定了如下所示的选项,也就是说--opt选项是一个复合选项。

Same as --add-drop-table, --add-locks, --create-options,

--quick, --extended-insert, --lock-tables, --set-charset,

and --disable-keys. Enabled by default, disable with --skip-opt.

mysql还原备份

#还原数据库

mysql -uroot -p123456 < f:\xxx.sql

删除超过7天的备份

这里我们可以在备份目录中,使用find命令来查找已过期的备份文件。这里已过期的定义就是 文件的最后修改时间距离当天时间已经超过了7天时间。

#find命令下的-exec选项,{}表示find命令查找到的文件,exec以;结束,所以这里要使用转义符\。

#-mtime表示的是最后修改时间。

find ${BACKUP_PATH} -mtime +7 -name "${DATABASE}_*.sql.gz" -exec rm -f {} \;

linux定时任务

linux系统中,可以使用crontab来查看和设置定时任务。比如说我们在凌晨的时候再进行数据库热备份。

#查看现有的定时任务

crontab -l;

#进入定时任务设置页面,输入cron表达式 + command

crontab -e

cron表达式使用规则如下:

* * * * *

- - - - -

| | | | |

| | | | +----- 星期中星期几 (0 - 7) (星期天 为0)

| | | +---------- 月份 (1 - 12)

| | +--------------- 一个月中的第几天 (1 - 31)

| +-------------------- 小时 (0 - 23)

+------------------------- 分钟 (0 - 59)

文件压缩

进行数据库备份的时候,可能文件比较大,也比较占用磁盘资源。这时我们可以进行文件压缩操作,本文中使用的是gzip命令。

#gzip压缩文件

gzip {file}

#gzip解压文件

gzip -d {file}.gz

脚本明细

#!/bin/bash

#格式化输出字符串,并将值赋值给DATE变量

DATE=`date +%Y%m%d%H%M` #every minute

DATABASE=owboss #database name

DB_USERNAME=root #database username

DB_PASSWORD="ourway123" #database password

BACKUP_PATH=/root/sqlback/local #backup path

#backup command

/usr/bin/mysqldump -u$DB_USERNAME -p$DB_PASSWORD -h 127.0.0.1 -R --opt $DATABASE | gzip > ${BACKUP_PATH}\/${DATABASE}_${DATE}.sql.gz

#just backup the latest 7 days

find ${BACKUP_PATH} -mtime +7 -name "${DATABASE}_*.sql.gz" -exec rm -f {} \;

博主微信公众号

d393acbfb08b0a17df6aedcdd8c55336.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mysql建立镜像数据库- - Tag: mysql建立镜像数据库 环境介绍:主库 192.168.0.205 从库 192.168.0.206 mysql版本:4.1.13a 1、主库创建/etc/my.cnf,修改[mysqld]里边的键值增加 server-id=1 log-bin=binlog_name 2、主库增加用户,用于从库读取主库日志。 grant replication slave,reload,super on *.* to 'slave'@'192.168.0.206' identified by '123456' 3、从库连接主库进行测试。 /opt/mysql/bin/mysql -u slave -p -h 192.168.0.205 4、停从库,修改从库/etc/my.cnf,增加选项: [mysqld] server-id=2 master-host=192.168.0.205 master-user=slave master-password=123456 5、启动从库,可以进行主从库数据同步 /opt/mysql/share/mysql/mysql start /opt/mysql/bin/mysql -u root -p mysql>load data from master; 说明:这一步不这么做也可以,用数据库倒入或者直接目录考过来也行。 6、进行测试: 主库创建表, mysql>create database sampdb; mysql>create table new (name char(20),phone char(20)); mysql>insert into new ('lhj','60549391'); 打开从库,察看: /opt/mysql/bin/mysql -u root -p mysql>show database; mysql sampdb test mysql>use sampdb; mysql>show tables; new 说明主从数据库创建成功。 7、主从数据库相关命令: slave stop; slave start ; 开始停止从数据库。 show slave status\G; 显示从库正读取哪一个主数据库二进制日志 purge master logs to 'binlog.000004';C此命令非常小心,删除主数据库没用的二进制日志文件。如果误删除,那么从库就没有办法自动更新了。 change master; 从服务器上修改参数使用。 如果数据库表是myisam类型,并且权限够 grant replication slave,reload,super on *.* to 'slave_user'@'host' identified by 'slave_pass' 也可以用load data from master命令,建立从数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值