在linux系统下如何备份mysql数据库

在linux系统下如何备份mysql数据库,第1张

1导出整个数据

mysqldump -u 用户名 -p 数据库名 > 导出的文件名

mysqldump -u wcnc -p database > databasesql

2导出一个表

mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

mysqldump -u wcnc -p database users > wcnc_userssql

复制来的 希望对你有帮助 学会搜索 我只是帮你的问题原封不动的去google搜索了下

用命令实现备份

MySQLl提供了一个mysqldump命令,我们可以用它进行数据备份。

按提示输入密码,这就把tm数据库所有的表结构和# mysqldump -u root -p tm > tm_050519sql数据备份到tm_050519sql了,因为要总进行备份工作,如果数据量大会占用很大空间,这时可以利用gzip压缩数据,命令如下:

# mysqldump -u root -p tm | gzip > tm_050519sqlgz

系统崩溃,重建系统时,可以这样恢复数据:

# mysqldump -u root -p tm < tm_050519sql

从压缩文件直接恢复:

#gzip < tm_050519sqlgz | mysqldump -u root -p tm

当然,有很多MySQL工具提供更直观的备份恢复功能,比如用phpMyAdmin就很方便。但我认为,mysqldump是最基本、最通用的。

二、利用crontab,系统每天定时备份mysql数据库

利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。

1、创建保存备份文件的路径/var/backup/mysqlbak

# mkdir -p /var/backup/mysqlbak

2、创建/usr/sbin/bakmysql文件

#vi /usr/sbin/bakmysqlsh

#!/bin/bash

# mysql备份脚本

cd /var/backup/mysqlbak/

dateDIR=`date +"%y-%m-%d"`

mkdir -p $dateDIR/data

for i in `/usr/local/>

每天定时备份mysql数据库任务,删除指定天数前的数据,保留指定天的数据;

需求:

1,每天4点备份mysql数据;

2,为节省空间,删除超过3个月的所有备份数据;

3,删除超过7天的备份数据,保留3个月里的 10号 20号 30号的备份数据;

#创建shell文件

vim backup_mysqlsh

mysqldump -uroot -p123456 --all-databases > /data/dbdata/mysqlbak/`date +%Y%m%d`sql

find /data/dbdata/mysqlbak/ -mtime +7 -name '[1-9]sql' -exec rm -rf {} \;

find /data/dbdata/mysqlbak/ -mtime +92 -name 'sql' -exec rm -rf {} \;

#创建定时任务

crontab –e

0 4 /data/dbdata/backup_mysqlsh

一般是即时备份。做主从。或者是每天增量备份。

本文是在linux下,mysql 4114版本下测试的,经过适当修改可能适合mysql 40,50及其其他版本

本文适合于没有启动复制功能的mysql,如果启动了复制,可能不需要采取这种备份策略或者需要修改相关参数

每个人的备份策略都可能不同,所以请根据实际情况修改,做到举一反三,不要照搬照抄,可能会造成不必要的损失

希望你明白这个脚本要干什么工作!

脚本描述

每7天备份一次所有数据,每天备份binlog,也就是增量备份

(如果数据少,每天备份一次完整数据即可,可能没必要做增量备份)

作者对shell脚本不太熟悉,所以很多地方写的很笨 :)

开启 bin log

在mysql 41版本中,默认只有错误日志,没有其他日志可以通过修改配置打开bin log方法很多,其中一个是在/etc/mycnf中的mysqld部分加入:

[mysqld]

log-bin

这个日志的主要作用是增量备份或者复制(可能还有其他用途)

如果想增量备份,必须打开这个日志

对于数据库 *** 作频繁的mysql,这个日志会变得很大,而且可能会有多个

在数据库中flush-logs,或者使用mysqladmin,mysqldump调用flush-logs后并且使用参数delete-master-logs,这些日志文件会消失,并产生新的日志文件(开始是空的)

所以如果从来不备份,开启日志可能没有必要

完整备份的同时可以调用flush-logs,增量备份之前flush-logs,以便备份最新的数据

完整备份脚本

如果数据库数据比较多,我们一般是几天或者一周备份一次数据,以免影响应用运行,如果数据量比较小,那么一天备份一次也无所谓了

#!/bin/sh

# mysql data backup script

# by scud >

1

写个自动备份的脚本autobackupsh,内容如下

#!/bin/bash

mysqldump

-p

databasename

>

mydatasql

2

更改其为可执行文件

chmod

+x

autobackupsh

3

通过crontab让系统自动运行这个脚本就好了,如crontab

-e

0

0

/路径到/autobackupsh

第一个0表示分钟,第二个0表示0小时也就是零辰第三个表示每天,第四个表示每月,第五个表示每周

方法一、适合所有格式的mysql数据库,通过对数据库导出导进写个脚本定时执行:

1导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc > /存放路径/wcncsql

2导出一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc users> /存放路径/wcnc_userssql

3导出一个数据库结构 mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >/存放路径/wcnc_dbsql

定义:

-d 没有数据

--add-drop-table 在每个create语句之前增加一个drop table

4导入数据库 常用source 命令 进入mysql数据库控制台:

如mysql -u root -p mysql>use 数据库

方法二、针对mysql数据表格式为MyISAM的

假如数据文件在/var/lib/mysql

那么直接写个脚本

cp -r /var/lib/mysql /备份到的文件夹路径

隔机备份用rsync增量,或定时完整备份。

------建备份文件夹:

mkdir mysql_data_bak

建脚本文件:

touch autobackupmysqlsh

打开文件

vi autobackupmysqlsh

在脚本中加入如下内容:

filename=`date +%Y%m%d`

/usr/bin/mysqldump -uroot -proot boss >>/home/mysql_data_bak/$filenamesql

检查有没安装crond,如果没有,先安装

yum -y install vixie-cron

yum -y install crontabs

启动服务 :service crond start

在CentOS系统中加入开机自动启动: chkconfig --level 345 crond on

crontab -e

加入内容:00 03 source /root/autobackupmysqlsh 每天凌晨3点运行此文件,对数据库进行备份

service crond restart

完成ok 别的问题可以参考>

以上就是关于在linux系统下如何备份mysql数据库全部的内容,包括:在linux系统下如何备份mysql数据库、LINUX下如何直接对MYSQL数据库进行备份、Linux 怎么shell脚本定时备份mysql数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9869358.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存