mysql数据备份与恢复

mysql数据备份与恢复,第1张

概述MySQL数据备份与恢复#1.物理备份:直接复制数据库文件,适用于大型数据库环境。但不能恢复到异构系统中如Windows。 MysqL数据备份与恢复一、使用MysqLdump实现逻辑备份 备份文件.sql (本地使用可以省略 -h 服务器名)-h 服务器 -u用户名 数据库名 > 备份文件.sql (本地使用可以省略 -<span >#<span >示例(以下是有密码的时候的 *** 作):<span >

<span >单库备份

<span >备份库中所有的表
MysqLdump -uroot -p123 db1 > D:\db1.sql <span >#<span >将数据库db1备份到D盘下,文件名称为db1.sql
<span >备份库中部分表
MysqLdump -uroot -p123 db1 table1 table2 > D:\db1-table1-table2.sql <span >#<span >将数据库db1里的表table1和table2备份到D盘下名称为db1-table1-table2.sql的文件中

<span >#<span >多库备份
MysqLdump -uroot -p123 --databases db1 db2 MysqL db3 >D:\db1db2MysqL_db3.sql <span >#<span >将数据库db1,db2,MysqL,db3备份到D盘中

<span >#<span >备份所有库
MysqLdump -uroot -p123 --all-databases >D:\all.sql <span >#<span >将root用户的所有数据库全部备份到D盘中,文件名为all.sql

二、恢复逻辑备份

<span >#<span >恢复单个库:<span >

<span >方法一:不需要进入MysqL程序,直接在终端输入

MysqL -uroot -p123 db1 <<span > D:\db1.sql

<span >#<span >方法二:
<span >从终端先进入MysqL程序,然后输入
MysqL><span > use db1;
MysqL><span > source D:\db1.sql

<span >#<span >注:如果备份/恢复单个库时,可以修改sql文件
DROP database <span >if<span > exists school;
create database school;
use school;

<div >

>MysqL -uroot -e +------------------+| tables_in_school |+------------------+|             || course           || score            || student          || teacher          |+------------------+
三、备份/恢复案例

数据库备份/1. /backup/`date +%F`_all.sql2. 3. 插入数据 //4. MysqL> set sql_log_bin=0; //>恢复:
1. <span >#
<span > mysqlbinlog 最后一个binlog > /backup/last_bin.log

2. MysqL> set sql_log_bin=<span >0;
MysqL
> source /backup/2014-02-13_all.sql //<span >恢复最近一次完全备份
MysqL
> source /backup/last_bin.log //<span >恢复最后个binlog文件

<span >#<span >数据库备份/恢复实验二:如果有误删除
<span >备份:
1. MysqLdump -uroot -p123 --all-databases > /backup/date +%<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;F_all.sql
2. MysqL -uroot -p123 -e <span >'<span >flush logs<span >' //<span >截断并产生新的binlog
3. 插入数据 //<span >模拟服务器正常运行
4. drop table db1.t1 //<span >模拟误删除
5. 插入数据 //<span >模拟服务器正常运行

恢复:
1. <span >#<span > mysqlbinlog 最后一个binlog --stop-position=260 > /tmp/1.sql <span >

<span > mysqlbinlog 最后一个binlog --start-position=900 > /tmp/2.sql
MysqL> set sql_log_bin=<span >0;
MysqL
> source /backup/2014-02-13_all.sql //<span >恢复最近一次完全备份
MysqL
> source /tmp/1.log //<span >恢复最后个binlog文件
MysqL
> source /tmp/2.log //<span >恢复最后个binlog文件

注意事项:
1<span >. 完全恢复到一个干净的环境(例如新的数据库或删除原有的数据库)
2. 恢复期间所有SQL语句不应该记录到binlog中

四、实现自动化备份

1. 什么时间 2:0023备份脚本:
[root@egon
~]<span >#
<span > vim /MysqL_back.sql
<span >

<span >!/bin/bash

back_dir=/<span >backup
back_file=date +%<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;F_all.sql
user=<span >root
<span >pass=123

<span >if [ ! -d /<span >backup ];then
mkdir -p /<span >backup
fi

<span >#<span > 备份并截断日志
MysqLdump -u${user} -p${<span >pass} --events --all-databases > ${back_dir}/<span >${back_file}
MysqL -u${user} -p${<span >pass} -e <span >'<span >flush logs<span >'

<span >#<span > 只保留最近一周的备份
<span >cd $back_dir
find . -mtime +7 -<span >exec rm -<span >rf {} \;

手动测试:
[root@egon ~]<span >#<span > chmod a+x /MysqL_back.sql
[root@egon ~]<span >#<span > chattr +i /MysqL_back.sql
[root@egon ~]<span >#<span > /MysqL_back.sql
<span >
配置cron:
[root@egon ~]<span >#<span > crontab -l
0 2 * /MysqL_back.sql

五、表的导出和导入>* // //)不一定要写 // ; //执行会报错,以前旧版本可以执行,新版为了保护数据安全,不能直接导出
ERROR
1290 (HY000): The MysqL server <span >is
running with the --secure-file-<span >priv option so it cannot execute this statement

MysqL> show variables like <span >'<span >%secure%<span >'; <span >#<span >查看相关设置
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| require_secure_transport | OFF |
| secureauth | ON |
| secure
file_priv | NulL |
+--------------------------+-------+<span >

set <span >global secure_auth=<span >OFF;
set secure_auth=<span >OFF;
以上两种直接更改设置的方法都是行不通的,需要更改配置文件
[MysqLd]
secure-file-priv=<span >'<span >E:\<span >'<span >
在配置文件里更改配置后,即可执行导出 *** 作

MysqL 命令导出文本文件
示例:
<span >#<span > mysql -u root -p123 -e 'select * from student1.school' > /tmp/student1.txt<span >

<span > mysql -u root -p123 --xml -e 'select * from student1.school' > /tmp/student1.xml
<span >
<span > mysql -u root -p123 --html -e 'select * from student1.school' > /tmp/student1.HTML

<span >
load data infile 导入文本文件(要按照表结构导入)
MysqL> load data infile <span >'<span >E:\student1.txt<span >'<span >
into table school.student1
fIElds terminated by <span >'<span >,<span >'<span >
(optionally enclosed by <span >'<span >”<span >'<span >)
lines terminated by <span >'<span >\n<span >';

六、数据库迁移括号内的可以不写,因为源IP就是自己,不需要指定 总结

以上是内存溢出为你收集整理的mysql数据备份与恢复全部内容,希望文章能够帮你解决mysql数据备份与恢复所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/sjk/1169507.html

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

发表评论

登录后才能评论

评论列表(0条)

保存