导航:首页 > 操作系统 > linuxmysql还原数据库备份

linuxmysql还原数据库备份

发布时间:2022-11-27 10:48:35

linux中mysql如何备份与恢复

mysql备份还是有很多学问的,最权威的回答在mysql的中文手册:
mysql手册:http://doc.linuxpk.com/doc/mysql/

废话少说了,简单的讲,如果你的数据库半夜可以停1~5分钟,那么推荐直接备份整个数据库文件,这样,恢复方便,很快的,我在机房工作的,已经搞过很多次了。可以写个脚本放在自动任务里,比如我在linux上的mysql备份脚本:
#!/bin/bash
#History
#=====================================================
#When Who What
#2010/5/12 Zhaoyn Create
#
#=====================================================
basedir=/opt/backup
rm -f `find $basedir -name "mysql*.tgz" -mtime +22`
/etc/rc.d/init.d/mysqld stop
sleep 5s ;sync;sync
tar -czpf $basedir/mysql.$(date +%Y%m%d-%H%M).tgz /etc/my.cnf /var/lib/mysql
/etc/rc.d/init.d/mysqld start

如果你想临时备份,又不能停数据库,那就用mysqlmp了,其参数很多,但一般可以使用默认参数。
使用常用参数:
备份整个数据库,使用默认选项,指定字符集:
mysqlmp --opt --default-character-set=gbk dbname > dbname-mysqlbackup.20100927.sql
在新建的服务器上恢复整个数据库:
创建数据库,然后使用mysql客户端恢复:
shell> mysqladmin create target_db_name
shell> mysql target_db_name < backup-file.sql
即 shell> mysql 库名 < 文件名

至于备份一个软件,直接打包就是了,跟mysql分开备份。

Ⅱ LINUX下如何直接对MYSQL数据库进行备份

MYSQL提供了数据导入与导出的两个命令,分别是mysqlimport(导入)和
mysqlmp(导出或者转储)。详细用法请网络一下。

Ⅲ linux mysql备份和恢复

备份所有数据库# mysqlmp -u root -p --opt --all-databases > /root/all-databases
修复# myisamchk -r /var/lib/mysql/allusers/names.MYI
或# myisamchk -o /var/lib/mysql/allusers/names.MYI

Ⅳ linux下mysql数据库备份工具有哪些

命令行 mysqlmp
网页phpmyadmin

Ⅳ 我把linux下的mysql文件夹拷贝了下来,想在另一台linux下的mysql上恢复数据,多个数据库文件,出现1146错误

项目上 MySQL还原 SQL 备份经常会碰到一个错误如下,且通常出现在导入视图、函数、存储过程、事件等对象时,其根本原因就是因为导入时所用账号并不具有SUPER 权限,所以无法创建其他账号的所属对象。ERROR 1227 (42000) : Access denied; you need (at least one of) the SUPER privilege(s) for this operation常见场景:1. 还原 RDS 时经常出现,因为 RDS 不提供 SUPER 权限;2. 由开发库还原到项目现场,账号权限等有所不同。

处理方式:

1. 在原库中批量修改对象所有者为导入账号或修改SQL SECURITY为Invoker;2. 使用 mysqlmp 导出备份,然后将 SQL 文件中的对象所有者替换为导入账号。
二、问题原因我们先来看下为啥会出现这个报错,那就得说下 MySQL 中一个很特别的权限控制机制,像视图、函数、存储过程、触发器等这些数据对象会存在一个DEFINER和一个SQL SECURITY的属性,如下所示:

Ⅵ Linux查看数据库备份脚步的配置信息命令

Copyright © 1999-2020, CSDN.NET, All Rights Reserved

mysql

登录

Linux 关于MYSQL数据库命令(查看,备份等操作) 原创
2016-04-19 11:22:33

fuwen1989

码龄7年

关注
1.Linux系统下启动MySQL的命令:
/ect/init.d/mysql start (前面为mysql的安装路径)
2.linux下重启mysql的命令:
/ect/init.d/mysql restart (前面为mysql的安装路径)
3.linux下关闭mysql的命令:
/ect/init.d/mysql shutdown (前面为mysql的安装路径)
4.连接本机上的mysql:
进入目录mysql\bin,再键入命令mysql -u root -p, 回车后提示输入密码。

5.打开数据库后的操作命令查看数据库的命令

mysql> show databases;

打开mydb库

mysql> use mydb;

查看数据表的详细结构

mysql> desc funtb;

新建数据库
mysql> create database school;新建表
mysql> create table user01(
-> id varchar(20) NOT NULL,
-> userName varchar(10) NOT NULL,
-> age int(11) default'0',
-> sex char(2) NOT NULL default'm',
-> PRIMARY KEY (id)
-> )TYPE=InnoDB;

Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql>desc student;

插入
mysql> insert into student(id,stuName) values('1','tomcat');

删除
mysql> delete from student where id='1';

删除表中所有数据
mysql> truncate table student;

删除表
mysql> drop table temp;

创建新用户并给予权限
mysql> grant all privileges on *.* to dbuser@localhost identified by '1234'

with grant option;

更改Mysql用户密码
c:\Mysql5.0\bin>mysqladmin -u root -p password 1234

Enter password: ****

备份数据库及表(新版数据库不加3306端口号)

c:\mysql\bin\>mysqlmp –u root –p mydb >d:\backup.sql

执行此语句将把数据库mydb 备份到D盘的backup.sql文件中 备份多个数据库表

c:\mysql\bin\>mysqlmp –u root –p 3306 school user01 user >d:\backup.sql
此句的意思是把school库中的user01表和user表的内容和表的定义备份到D盘backup.sql文件中。
备份所有的数据库
c:\myql\bin>mysqlmp –u root –p 3306 –all –database>d:backup.sql
还原Mysql数据库
c:\mysql\bin\mysql –u root –p 3306 school
还原其中的一个表
mysql> source d:\books.sql;

退出Mysql连接

mysql>quit(exit)

windows关闭mysql服务
C:\mysql\bin>net mysql

Ⅶ linux下mysql备份文件怎样还原到windows下

在老版本的MySQL 3.22中,MySQL的单表限大小为4GB,当时的MySQL的存储引擎还是ISAM存储引擎。但是,当出现MyISAM存储引擎之后,也就是从MySQL 3.23开始,MySQL单表最大限制就已经扩大到了64PB了(官方文档显示)。也就是说,从目前的技术环境来看,MySQL数据库的MyISAM存储 引擎单表大小限制已经不是有MySQL数据库本身来决定,而是由所在主机的OS上面的文件系统来决定了。 而MySQL另外一个最流行的存储引擎之一Innodb存储数据的策略是分为两种的,一种是共享表空间存储方式,还有一种是独享表空间存储方式。 当使用共享表空间存储方式的时候,Innodb的所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在,所 以其大小限制不再是文件大小的限制,而是其自身的限制。从Innodb的官方文档中可以看到,其表空间的最大限制为64TB,也就是说,Innodb的单 表限制基本上也在64TB左右了,当然这个大小是包括这个表的所有索引等其他相关数据。 而当使用独享表空间来存放Innodb的表的时候,每个表的数据以一个单独的文件来存放,这个时候的单表限制,又变成文件系统的大小限制了。

Ⅷ 如何将linux中mysql备份恢复

一般是即时备份。做主从。或者是每天增量备份。
本文是在linux下,mysql 4.1.14版本下测试的,经过适当修改可能适合mysql 4.0,5.0及其其他版本.

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

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

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

脚本描述

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

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

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

开启 bin log

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

[mysqld]
log-bin

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

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

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

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

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

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

完整备份脚本

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

#!/bin/sh

BakDir=/backup/mysql
LogFile=/backup/mysql/mysqlbak.log

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

echo " " >> $LogFile
echo " " >> $LogFile
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile

cd $BakDir

DumpFile=$DATE.sql
GZDumpFile=$DATE.sql.tgz

mysqlmp --quick --all-databases --flush-logs
--delete-master-logs --lock-all-tables
> $DumpFile

echo "Dump Done" >> $LogFile

tar czvf $GZDumpFile $DumpFile >> $LogFile 2>&1

echo "[$GZDumpFile]Backup Success!" >> $LogFile

rm -f $DumpFile

#delete previous daily backup files:采用增量备份的文件,如果完整备份后,则删除增量备份的文件.
cd $BakDir/daily

rm -f *

cd $BakDir

echo "Backup Done!"

echo "please Check $BakDir Directory!"

echo " it to your local disk or ftp to somewhere !!!"

ls -al $BakDir
上面的脚本把mysql备份到本地的/backup/mysql目录,增量备份的文件放在/backup/mysql/daily目录下.

注意:上面的脚本并没有把备份后的文件传送到其他远程计算机,也没有删除几天前的备份文件:需要用户增加相关脚本,或者手动操作.

增量备份

增量备份的数据量比较小,但是要在完整备份的基础上操作,用户可以在时间和成本上权衡,选择最有利于自己的方式.

增量备份使用bin log,脚本如下:

#!/bin/sh

#
# mysql binlog backup script
#

/usr/bin/mysqladmin flush-logs

DATADIR=/var/lib/mysql
BAKDIR=/backup/mysql/daily

###如果你做了特殊设置,请修改此处或者修改应用此变量的行:缺省取机器名,mysql缺省也是取机器名
HOSTNAME=`uname -n`

cd $DATADIR

FILELIST=`cat $HOSTNAME-bin.index`

##计算行数,也就是文件数
COUNTER=0
for file in $FILELIST
do
COUNTER=`expr $COUNTER + 1 `
done

NextNum=0
for file in $FILELIST
do
base=`basename $file`
NextNum=`expr $NextNum + 1`
if [ $NextNum -eq $COUNTER ]
then
echo "skip lastest"
else
dest=$BAKDIR/$base
if(test -e $dest)
then
echo "skip exist $base"
else
echo "ing $base"
cp $base $BAKDIR
fi
fi
done

echo "backup mysql binlog ok"
增量备份脚本是备份前flush-logs,mysql会自动把内存中的日志放到文件里,然后生成一个新的日志文件,所以我们只需要备份前面的几个即可,也就是不备份最后一个.
因为从上次备份到本次备份也可能会有多个日志文件生成,所以要检测文件,如果已经备份过,就不用备份了.

注:同样,用户也需要自己远程传送,不过不需要删除了,完整备份后程序会自动生成.

访问设置

脚本写完了,为了能让脚本运行,还需要设置对应的用户名和密码,mysqladmin和mysqlmp都是需要用户名和密码的,当然可以写在脚本中,但是修改起来不太方便,假设我们用系统的root用户来运行此脚本,那么我们需要在/root(也就是root用户的home目录)创建一个.my.cnf文件,内容如下

[mysqladmin]
password =password
user= root
[mysqlmp]
user=root
password=password
注:设置本文件只有root可读.(chmod 600 .my.cnf )

此文件说明程序使用mysql的root用户备份数据,密码是对应的设置.这样就不需要在脚本里写用户名和密码了.

自动运行

为了让备份程序自动运行,我们需要把它加入crontab.

有2种方法,一种是把脚本根据自己的选择放入到/etc/cron.daily,/etc/cron.weekly这么目录里.
一种是使用crontab -e放入到root用户的计划任务里,例如完整备份每周日凌晨3点运行,日常备份每周一-周六凌晨3点运行.

Ⅸ linux mysql中我用mysqlmp备份了全库内容,但是我只想恢复某一张表,怎么办

这个问题不是MYSQL数据库方面的问题,而是如何从一个文本文件中取出需要的部分内容的问题。 从数据库角度来说,没有什么好办法,可以使用操作系统中的文本编辑处理工具来实现。例如,如果不是太大,几百M可以用editplus,ultraedit等编辑工具打开找你需要sql拷贝出来导入。

如果是linux/unix,可参考如下方法:

1.使用 awk:
可以先到原数据库中使用 'show tables;' 查看数据库表的列表,注意,此列表已经按照字母排序,例如:
table1

table2
table3
然后使用awk 来过滤sql语句,假设你要恢复 table2 表,可以使用下面的语句:
awk ‘/^-- Table structure for table .table2./,/^-- Table structure for table .table3./{print}’ mympfile.sql > /tmp/recovered_table.sql

2.使用sed:
与上面类似,假设你要恢复 table2 表,可以使用下面的语句:
cat mympfile.sql | sed -n -e '/Table structure for table .test1./,/Table structure for table .test2./p' > /tmp/extracted_table.sql

阅读全文

与linuxmysql还原数据库备份相关的资料

热点内容
日韩经典悬疑犯罪电影推荐 浏览:576
现在能看的网站 浏览:781
怎么建立多个udp服务器 浏览:657
吃鸡令牌app是什么 浏览:548
汽车空调压缩机温度高 浏览:209
png压缩软件mac 浏览:411
能投屏电影网 浏览:27
怎么建立日本的aws云服务器 浏览:43
韩国有个弹钢琴的是什么电影 浏览:343
肉文百合小说 浏览:608
男主靠采补提升修为的小说 浏览:149
美国电影一天可以随便犯罪 浏览:663
电影封面一个人夹在热狗里 浏览:638
云服务器桌面黑瓶 浏览:831
word加密后无密码 浏览:845
如何右键添加压缩 浏览:72
韩漫梦魇pdf 浏览:527
欧洲爱情高分电影 浏览:317
安卓版滴滴出行怎么删除行程 浏览:938
共享文件夹需要开启什么端口 浏览:760