发布信息

当数据库损坏时 数据库治理员可经过何种方式恢双数据库? (当数据库损坏时,数据库管理员可以修复吗)

     2024-08-14 01:25:57     495

本文目录导航:

当数据库损坏时,数据库治理员可经过何种方式恢双数据库?()

1、数据库备份恢复:假设治理员在损坏之前有启动数据库备份,可以经过备份文件启动恢复。

治理员可以经常使用备份文件恢复到损坏之前的形态,并继续启动数据操作。

2、事务日志恢复:数据库治理系统理论会记载每一个事务的操作,包括操作前、操作后的数据。

当数据库出现损坏时,治理员可以经常使用事务日志启动恢复,将损坏的数据恢复到反常形态。

成功MySQL数据库的备份与恢复的几种方法

MyISAM 表是保留成文件的方式,因此相对比拟容易备份,上方提到的几种方法都可以经常使用。

Innodb 一切的表都保留在同一个数据文件 ibdata1 中(也或许是多个文件,或许是独立的表空间文件),相对来说比拟不好备份,收费的打算可以是拷贝数据文件、备份 binlog,或许用 mysqldump。

1. 经常使用间接拷贝数据库备份 典型的如cp、tar或cpio适用程序当你经常使用间接备份方法时,必定保障表不在被经常使用。

假设主机在你正在拷贝一个表时扭转它,拷贝就失去意义。

保障你的拷贝完整性的最好方法是封锁主机,拷贝文件,然后重启主机。

假设你不想封锁主机,要在口头表审核的同时锁定主机。

假设主机在运转,相反的制约也适用于拷贝文件,应该经常使用相反的锁定协定让主机“宁静上去”。

当你成功了MySQL数据库备份时,要求重启主机(假设封锁了它)或监禁加在表上的锁定(假设你让主机运转)。

要用间接拷贝文件把一个数据库从一台机器拷贝到另一台机器上,只是将文件拷贝到另一台主机主机的适当数据目录下即可。

要确保文件是MyIASM格局或两台机器有相反的配件结构,否则你的数据库在另一台主机上有奇异的内容。

你也应该保障在另一台机器上的主机在你正在装置数据库表时不访问它们。

2. 经常使用mysqldump数据库备份mysqldump 是驳回SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间更新时相对比拟适宜,这也是最罕用的备份方法。 数据库管理员可以修复吗

mysqldump程序备份数据库较慢,但它生成的文本文件便于移植。

mysqldump 的一些重要参数:1)--compatible=name它通知 mysqldump,导出的数据将和哪种数据库或哪个旧版本的 MySQL 主机相兼容。

值可认为 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等,要经常使用几个值,用逗号将它们隔开。

当然了,它并不保障能齐全兼容,而是尽量兼容。

2)--complete-insert,-c导出的数据驳回蕴含字段名的完整 INSERT 方式,也就是把一切的值都写在一行。

这么做能提高拔出效率,然而或许会遭到 max_allowed_packet 参数的影响而造成拔出失败。

因此,要求审慎经常使用该参数,至少我不介绍。

3)--default-character-set=charset指定导出数据时驳回何种字符集,假设数据表不是驳回自动的 latin1 字符集的话,那么导出时必定指定该选项,否则再次导入数据后将发生乱码疑问。

4)--disable-keys通知mysqldump 在 INSERT 语句的扫尾和开头参与 ; 和 ; 语句,这能大大提高拔出语句的速度,由于它是在拔出完一切数据后才重建索引的。

该选项只适宜 MyISAM 表。

5)--extended-insert = true|false自动状况下,mysqldump 开启 --complete-insert 形式,因此不想用它的的话,就经常使用本选项,设定它的值为 false 即可。

6)--hex-blob经常使用十六进制格局导出二进制字符串字段。

假设有二进制数据就必定经常使用本选项。

影响到的字段类型有 BINARY、VARBINARY、BLOB。

7)--lock-all-tables,-x在开局导出之前,提交恳求锁定一切数据库中的一切表,以保障数据的分歧性。

这是一个全局读锁,并且智能封锁 --single-transaction 和 --lock-tables 选项。

8)--lock-tables它和--lock-all-tables 相似,不过是锁定以后导出的数据表,而不是一下子锁定所有库下的表。

本选项只适用于 MyISAM 表,假设是 Innodb 表可以用 --single-transaction 选项。

9)--no-create-info,-t只导出数据,而不参与 CREATE TABLE 语句。

10)--no-data,-d不导出任何数据,只导出数据库表结构。

11)--opt这只是一个快捷选项,同等于同时参与 --add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset 选项。

本选项能让 mysqldump 很快的导出数据,并且导出的数据能很快导回。

该选项自动开启,但可以用 --skip-opt 禁用。

留意,假设运转 mysqldump 没有指定 --quick 或 --opt 选项,则会将整个结果集放在内存中。

假设导出大数据库的话或许会出现疑问。

12)--quick,-q该选项在导出大表时很有用,它强迫 mysqldump 从主机查问取得记载间接输入而不是取得一切记载后将它们缓存到内存中。

13)--routines,-R导出存储环节以及自定义函数。

14)--single-transaction该选项在导出数据之前提交一个 BEGIN SQL语句,BEGIN 不会阻塞任何运行程序且能保障导出时数据库的分歧性形态。

它只适用于事务表,例如 InnoDB 和 BDB。

本选项和 --lock-tables 选项是互斥的,由于 LOCK TABLES 会使任何挂起的事务隐含提交。

要想导出大表的话,应联合经常使用 --quick 选项。

--triggers同时导出触发器。

该选项自动启用,用 --skip-triggers 禁用它。

备份:经常使用mysqldump备份数据库其实就是把数据库转储成一系列CREATE TABLE和INSERT语句,经过这些语句咱们就可重重生成数据库。

经常使用mysqldump的方法如下:% mysqldump --opt testdb | gzip > /data/backup/#--opt选项会对转储环节启动提升,生成的备份文件会小一点,后的管道操作会启动数据紧缩% mysqldump --opt testdb mytable1,mytable2 | gzip > /data/backup/testdb_#可在数据库后接数据表名,只导出指定的数据表,多个数据表可用逗号分隔--opt选项还可激活--add-drop-table选项,它将会在备份文件的每条CREATE TABLE前加上一条DROP TABLE IF EXISTS语句。

这可繁难启动数据表的更新,而不会出现“数据表已存在”的失误。

用mysqldump命令还可间接把数据库转移到另外一台主机上,不用生成备份文件。

重复口头可活期更早先程数据库。

% mysqladmin -h remote_host create testdb% mysqldump --opt testdb | mysql -h remote_host testdb另外还可经过ssh远程调用主机上的程序,如:% ssh remote_host mysqladmin create testdb% mysqldump --opt testdb | ssh remote_host mysql testdb 经过间接拷贝系统文件的方式备份数据库,在备份时,要确保没有人对数据库启动修正操作。

要做到这点,最好封锁主机。

假设不能封锁的,要以只读方试锁定无关数据表。

上方是一些示例:% cp -r db /backup/db #备份db数据库到/backup/db目录% cp table_name.* /backup/db #只备份table_name数据表% scp -r db remotehot:/usr/local/mysql/data #用scp把数据库间接拷贝到远程主机,在把数据库间接拷贝到远程主机时,应留意两台机器必定有雷同的配件结构,或许将拷贝的数据表所有是可移植数据表类型。

或许/usr/local/mysql/bin/mysqldump -uroot -proot \--default-character-set=utf8 --opt --extended-insert=false \--triggers -R --hex-blob -x testdb > 经常使用以下 SQL 来备份 Innodb 表:/usr/local/mysql/bin/mysqldump -uroot -proot \--default-character-set=utf8 --opt --extended-insert=false \--triggers -R --hex-blob --single-transaction testdb > 另外,假构想要实如今线备份,还可以经常使用 --master-data 参数来成功,如下:/usr/local/mysql/bin/mysqldump -uroot -proot \--default-character-set=utf8 --opt --master-data=1 \--single-transaction --flush-logs testdb > 它只是在一开局的瞬间恳求锁表,然后就刷新binlog了,然后在导出的文件中参与CHANGE MASTER 语句来指定以后备份的binlog位置,假设要把这个文件恢复到slave里去,就可以驳回这种方法来做。

恢复:用mysqldump 备份进去的文件是一个可以间接倒入的 SQL 脚本,有两种方法可以将数据导入。

间接用 mysql 客户端例如:/usr/local/mysql/bin/mysql -uroot -proot testdb < 用SOURCE 语法其实这不是规范的 SQL 语法,而是 mysql 客户端提供的配置,例如:SOURCE /tmp/;这里要求指定文件的相对门路,并且必定是 mysqld 运转用户(例如 nobody)有权限读取的文件。

3. 经常使用mysqlhotcopy数据库备份 经常使用mysqlhotcopy工具,它是一个Perl DBI脚本,可在不封锁主机的状况下备份数据库,mysqlhotcopy 是一个 PERL 程序,最后由Tim Bunce编写。

它经常使用 LOCK TABLES、FLUSH TABLES 和 cp 或 scp 来极速备份数据库。

它是备份数据库或单个表的最快的途径,但它只能运转在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上。

mysqlhotcopy 只能用于备份 MyISAM,并且只能运转在 类Unix 和 NetWare 系统上。

它重要的好处是:它间接拷贝文件,所以它比mysqldump快。

可智能成功数据锁定上班,备份时不用封锁主机。

能刷新日志,使备份文件和日志文件的审核点能坚持同步。

备份:mysqlhotcopy 允许一次性性拷贝多个数据库,同时还允许正则表白。

以下是几个例子:/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=root \testdb /tmp (把数据库目录 testdb 拷贝到 /tmp 下)/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=root \testdb_1 testdb_2 testdb_n /tmp/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=root \testdb./regex/ /tmp 恢复:mysqlhotcopy 备份进去的是整个数据库目录,经常使用时可以间接拷贝到 mysqld 指定的>如何恢复系统数据库

恢复系统数据库:1、新建一个数据库kelin;2、右键点击需恢复的数据库,选用义务,恢复,数据库;3、点击选用源设施,然后点击,弹出框中备份媒介选用文件,然后点击参与按钮,找到可以用于恢复的文件,点击确定按钮;4、在选用用于恢复的备份集上方勾选设定好的恢复的备份集;5、点击左侧选项,在新界面中勾选笼罩现有数据库,要留意修正恢复环节中的途径,然后点击确定按钮;6、最后弹出对数据库kelin的恢复已成功成功点击确定,便成功对整个数据库的恢复。

相关内容 查看全部