首页 > 编程知识 正文

sql备份转存mysql,mysql数据库的备份

时间:2023-05-04 02:02:02 阅读:156732 作者:3586

MySQL备份和恢复操作

目标

备份概念

Mysqldump备份操作

MySQL恢复操作

MySQL双机热备份

概要

如果数据库表丢失或损坏,备份数据库很重要。 如果发生系统崩溃,可以最大限度地减少表丢失,并恢复到崩溃时的状态。

备份数据库的主要方法是使用mysqldump程序或直接复制数据库文件

Mysqldump备份

导出库表(mysqldump )

mysqldump -u用户名-p密码-h主机数据库a -w “sql条件”-锁定-所有表路径

mysqldump-h hostname-uusername-pdbnametbnamexxxx.SQL

*按指定条件导出数据库表格的内容。 (-w选项where )

mysqldump-h hostname-uusername-pdbnametbname-w’id=1and id=10000’skip-lock-tables xxxx.SQL

或者

mysqldump-h hostname-uusername-pdbnametbname-- where=‘unit _ id=1andunit _ id=10000’~/xxxx.SQL

Mysqldump备份库表的详细示例

导出整个数据库

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

mysqldump-ubreezelark-pmydbmydb.SQL导出包含数据结构和数据的表

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

mysqldump-u lingxi-pmydbmytb.SQL导出数据库结构。 (没有数据只有结构)。

mysqldump-u lingxi-p-d-- add-drop-table mydb.SQL

-d缺少数据add-drop-table在每个create语句之前添加drop table数据库的备份

完全备份数据库

增量备份

完全备份数据库

mysqldump---single-transaction---flush-logs---master-data=2--- all-databasesfullbackup _ sunup

sql文件显示以下两行:

定位复制点-时间复制

changemastertomaster _ log _ file=’jkd SJ-log.000002’,MASTER_LOG_POS=107;

第二行包含必要的信息。 这意味着备份后的所有更改都将保存在jkdsj-log.000002二进制文件中。

增量备份

星期一晚上11点进行增量备份。

mysqladmin flush-logs

将生成新的二进制日志文件jkdsj-log.000003,jkd SJ-log.0000000保存从星期天晚上11点到现在的所有更新

更改,我们把这个文件备份到安全的地方就可以了。 然后星期二再进行增量备份,还是执行同样的指令? 到时候我们会

保存jkdsj-log.000003文件。

如果mysqld正在运行,请停止并使用log-jkd SJ [=file _ name ]选项启动。 二进制日志文件包含在执行mysqldump后复制数据库更改所需的信息。

对于InnoDB表,无需锁定表即可进行在线备份

要使MySQL支持增量备份:必须使用-log-jkdsj选项启动服务器并启用二进制日志“二进制日志”。 如果要执行自上次完全备份或增量备份以来包含所有更改的增量备份,则必须使用FLUSH LOGS回滚二进制日志。 然后,必须将从上次完整备份或增量备份的某个时间点到最后一个时间点的所有二进制日志复制到备份位置。 这些二进制日志是增量备份。 恢复时,按照以下说明进行应用。 下次完全备份时,还必须使用flush logsflush logs回滚二进制日志。

“mysqldump :数据库备份程序”

恢复数据库

备份的程序。 可以在崩溃发生后恢复数据。

操作系统崩溃

电源故障

文件系统崩溃

硬件问题(硬盘、主板等)。

此命令不包括mysqldump和mysql程序的-user和—password等选项。 必须包括允许MySQL服务器连接所需的选项。

假设数据存储在MySQL的InnoDB存储引擎中,并且支持事务和自动崩溃恢复。 假设崩溃时MySQL服务器处于负载状态。 如果没有负荷,就不需要恢复。

出现操作系统崩溃或电源故障时,我们可以假定重启后硬盘上的MySQLś数据仍可用。由于崩溃,InnoDB数据文件中的数据可能不再保持一致性,但InnoDB读取它的日志并会查到挂起的提交的和未提交的事务清单,它们没有清空到数据文件中。InnoDB自动卷回未提交的事务,并清空到它的数据文件中。通过MySQL错误日志将该恢复过程相关信息传达给用户

数据恢复

Mysql -u用户名 –p密码 数据库名 < 导出的文件名

恢复备份

比如星期三中午12点出现了故障,这时需要恢复,我们首先导入星期天的完整备份:
mysql < fullbackup_sunday_3_AM.sql
接着我们导入星期一和星期二的增量备份:
mysqljkdsjlog jkdsj-log.000002 jkdsj-log.000003 | mysql
注意: “mysqljkdsjlog:用于处理二进制日志文件的实用工具”

备份策略

对于中等级别业务量的系统来说,备份策略可以这么定:第一次全量备份,每天一次增量备份,每周再做一次全量备份,如此一直重复。而对于重要的且繁忙的系统来说,则可能需要每天一次全量备份,每小时一次增量备份,甚至更频繁。为了不影响线上业务,实现在线备份,并且能增量备份,最好的办法就是采用主从复制机制(replication),在 slave 机器上做备份
出现操作系统崩溃或电源故障时,InnoDB自己可以完成所有数据恢复工作。应遵从下面的指导:
· 一定用–log-jkdsj或甚至–log-jkdsj=log_name选项运行MySQL服务器,其中日志文件名位于某个安全媒介上,不同于数据目录所在驱动器。如果你有这样的安全媒介,最好进行硬盘负载均衡(这样能够提高性能)。
· 定期进行完全备份,使用mysqldump命令进行在线非块备份。
· 用FLUSH LOGS或mysqladmin flush-logs清空日志进行定期增量备份。

备份策略

对于中等级别业务量的系统来说,备份策略可以这么定:第一次全量备份,每天一次增量备份,每周再做一次全量备份,如此一直重复。而对于重要的且繁忙的系统来说,则可能需要每天一次全量备份,每小时一次增量备份,甚至更频繁。为了不影响线上业务,实现在线备份,并且能增量备份,最好的办法就是采用主从复制机制(replication),在 slave 机器上做备份
出现操作系统崩溃或电源故障时,InnoDB自己可以完成所有数据恢复工作。应遵从下面的指导:
· 一定用–log-jkdsj或甚至–log-jkdsj=log_name选项运行MySQL服务器,其中日志文件名位于某个安全媒介上,不同于数据目录所在驱动器。如果你有这样的安全媒介,最好进行硬盘负载均衡(这样能够提高性能)。
· 定期进行完全备份,使用mysqldump命令进行在线非块备份。
· 用FLUSH LOGS或mysqladmin flush-logs清空日志进行定期增量备份。

MySQL双机热备份

双机热备份通过日志文件来传输入服务器上数据的变化。主服务器进程在数据被更新时触发。并将相应的日志文件发送到从服务器。从服务器进程接收到主服务器发送的日志文件,做出相应的更改操作

双机热备份的工作原理

主服务器的配置

找到配置文件my.ini
编辑my.ini文件,定义到mysqld,加入内容
Server-id=1
Log-jkdsj=c:/log-jkdsj.log
Binlog-do-db=dbname
创建dbname数据库
进入mysql操作,为从服务器授权访问数据库的用户名和密码
grant replication slave on . to ‘root’@从服务器IP identified by ‘密码’
重启MySQL服务器,使更改生效
重新进入到MySQL的命令,执行命令检测配置是否生效:
Show master statusG

从服务器的配置

在从服务器中创建与主服务器中相同的数据库
找到从服务器中的my.ini文件,定位到[mysqld],加入以下内容:
Server-id=2
Master-host=主服务器IP
Master-port=3306(主服务器端口号)
Master-user=root(主服务器用户名)
Master-password=密码(主服务器密码)
Master-connect-retry=60(等待尝试重新连接的秒数)
重新启动MySQL服务器,使配置生效
进入到从服务器MySQL操作,执行启动进程
Slave start

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。