linux下如何备份还原mysql数据库_MySQL

Linux下MySQL的备份和恢复非常重要。
如果经常这样做,万一系统崩溃了,数据可以恢复到上次的正常状态,损失可以少一些。

1 .使用命令备份
MySQL有一个mysqldump命令,用它来备份你的数据。
例如,备份tm数据库,只需输入密码即可。
这样tm数据库的所有表结构和数据都保存在tm_05 05 1 9 .sql文件中。

mysqldump -u root -p tm > tm_05 05 1 9 .sql
如果数据量较大,占用空间较大,可以使用gzip压缩。
命令是这样的:
mysqldump -u root -p tm | gzip > tm_05 05 1 9 .sql.gz
系统崩溃。
当你重建系统时,你可以像这样恢复数据:
gzip -d tm_05 05 1 9 .sql.gz mysql -u root -p tm < tm> 2 、使用crontab进行定时备份
使用系统crontab定时运行备份文件,并按日期保存备份结果,从而达到备份的目的。

1 .创建备份文件保存路径
mkdir -p /var/backup/mysqlbak
2 .创建备份脚本文件
vi /usr/sbin/bakmysql.sh !/bin/bash
MySQL 备份脚本 cd /var/backup/mysqlbak dataDir=数据+“%y-%m-%d” mkdir -p $dateDir/data
for i in /usr/local/www/mysql/bin/mysql -u root -p1 2 3 4 5 6 7 8 -e“显示数据库”| grep -v“数据库”| grep -v“模式信息”;做 /usr/local/www/mysql/bin/mysqldump -u root -p1 2 3 4 5 6 7 8 $i | gzip > /var/backup/mysqlbak/$dateDir/${i}_${dateDir}.gz 完成
3 修改文件属性使其可执行
chmod +x /usr/sbin/bakmysql.sh
4 .编辑crontab设置计划任务
crontab -e 在下面添加一行: 0 3 root /usr/sbin/bakmysql.sh
表示每天3 点进行备份
这样就可以在/var/backup/mysqlbak中看到每天备份的sql文件了!

mysql删除了sys怎么办

sys数据库是MySQL的系统数据库。
如果删除,MySQL 将不再工作。
要停止 MySQL 服务,请在 Linux 上使用 systemctl,在 Windows 上使用 netstop。
要备份 MySQL 数据目录,请使用 cp -r /var/lib/mysql /var/lib/mysql_backup(对于 Linux)。
Linux初始化系统表:mysqld --initialize --user=mysql --datadir=/path/to/datadir。
在 Windows 上重新启动 MySQL:netstartmysql,在 Linux 上,使用 systemctlstartmysql。
使用官方的mysql.sql文件重建sys数据库。
对于 Linux,请使用 mysql -uroot -p 如果数据丢失,只能从备份中恢复。
版本必须一致,并且操作必须由root或特权用户执行。
如果有备份,直接恢复sys数据库:mysql -uroot -p 你自己掂量一下吧。

还原mysql数据库如何知道进度

性能架构: 查询 events_stages_history 表。
SELECT FROM Performance_schema.events_stages_history WHERE NAME LIKE '%Recovery%' ORDER BY EVENT_ID 限制描述 1 0.
InnoDBSTATUS: 执行 INNODB 引擎显示状态。
检查部分恢复LOG信息。

Linux 输入/输出: 检查 /proc//io. 注意 rchar 值并比较备份文件大小。

光伏工具: 使用PipeViewer监控管道数据传输。
跟踪恢复进度并估计完成时间。

linux 备份的数据库怎么恢复

哎呀,让我告诉你一些关于我当天的 MySQL 备份的事情。

去年我正在做一个项目,数据库是命脉。
它日夜更新,数据量不断增加。
我就在想,要怎样才能挽回这个,免得万一发生什么事情,我就没有地方哭了。

第一个是mysqldump,这是最常用的。
我记得有一次我备份了一个叫db_backup的库,直接使用命令: 吹 mysqldump -u root -ppassword db_backup > /usr/backups/mysql/db_backup_2 008 -01 -06 .sql
当时很顺利,什么也没发生。
后来还有一次,我备份了几张表,没有备份整个数据库: 吹 mysqldump Sample_db 文章评论链接 > /usr/backups/mysql/sample_db.art_comm_lin.2 008 -01 -06 .sql
我经常使用这个命令,并且非常熟悉它。

还有一个 SOURCE 语法,这并没有给我留下太深刻的印象。
我觉得它只是从文件中执行 SQL 语句。
它看起来像这样: 吹 SOURCE /tmp/db_name.sql;
一定有一个路径,对吧,而且一定是mysqld可以读取的文件。

哦,对了,mysqlhotcopy,我以前尝试过这个东西,但是发现它只能准备MyISAM库,而且需要Linux系统。
此时保存一个库: 吹 mysqlhotcopy -h localhost -u goodcjh -p goodcjh db_name /tmp
可以使用,但是需要给予足够的权限,否则无法使用。
恢复意味着直接重新复制,更改权限并重新启动mysqld。
记得有一次恢复数据的时候,我删除了旧的数据库,然后复制了一份。
结果出了问题,只好重新安装,很累。

后来觉得数据存放在单机上不太安全,所以做了网络备份。
当时服务器IP地址是1 9 2 .1 6 8 .1 .3 ,远程Linux机器是1 9 2 .1 6 8 .1 .4
首先,您需要在远程计算机上创建 NFS 共享。
不要忘记编辑 /etc/exports 并添加一行:
/export/home/sunky 1 9 2 .1 6 8 .1 .3 (rw)
您还需要添加到 /etc/hosts 的映射。
然后重新启动NFS服务。

本地机器启动: 吹 mount -t nfs 1 9 2 .1 6 8 .1 .4 :/export/home/sunky /mnt/backup_share
挂载后可以在/mnt/backup_share中看到远程目录。
然后使用mysqldump保存: 吹 mysqldump db_backup > /mnt/backup_share/db_backup_2 008 -01 -06 .sql
非常实用。

为了避免麻烦,我还写了一个脚本,用crontab定时运行。
脚本大概是这样的: 吹 !/bin/bash mysqldump -u 用户名 -ppassword -h 主机名sample_db > /mnt/backup_share/sample_db_$(date +%F).sql 卸载/mnt/backup_share mount /soft1 9 2 .1 6 8 .1 .4 :/archive /mnt/backup_share
它会在每周日早上5 点自动运行,所以你不用担心。

不过话虽如此,最让我头疼的是数据恢复。
有一次,备份刚完成,数据就丢失了。
幸运的是我使用了二进制日志并实现了这一点。

当时我不得不先停止mysqld: 吹 /etc/init.d/mysqld stop
然后以独占模式启动: 吹 mysqld --socket=/tmp/mysql_restore.sock --skip-networking
然后恢复备份: 吹 mysql -u root -ppassword --socket=/tmp/mysql_restore.sock然后使用mysqlbinlog恢复日志: 吹 mysqlbinlog /var/log/mysql/bin.1 2 3 4 5 6 | mysqlbinlog /var/log/mysql/bin.1 2 3 4 5 6 mysql -u root -ppassword --socket=/tmp/mysql_restore.sock
当时尝试了--start-date和--stop-date,还有--start-position和--stop-position,感觉还是--start-position更准确。
您需要找到正确的位置编号,否则检索到的数据可能不正确。

总之,在进行数据库备份和恢复时要小心。
当年我也遇到过很多坑,现在和大家聊聊,希望大家不要重蹈我的覆辙。