本节中主要介绍了4种方式 方法1:Transportable TablespacesMySQL原生支持的表拷贝方法,但是有很多限制条件,如MySQL版本在5.6.6以上;innodb_file_per_table必须为ON;源表和目标表的page size必须相同;不能用于分区表等 方法2:MySQL Enterprise Backup企业版才有,普通版没有对于InnoDb,是热备份,不影响读写;对于非InnoDb,如MyIsam,温备份,即备份期间只能读不能写。更多参考:http://dev.mysql.com/doc/mysql-enterprise-backup/4.0/en/ 方法3:Copying Data Files (Cold Backup Method)冷备份,需要关闭MySQL;是否可以只备份单表呢【貌似不支持单表:单表其实就是方法1了,不能用于分区表】流程如下:1. Do a slow shutdown of the MySQL server and make sure that it stops without errors.2. Copy all InnoDB data files (ibdata files and .ibd files) into a safe place.3. Copy all the .frm files for InnoDB tables to a safe place.4. Copy all InnoDB log files (ib_logfile files) to a safe place.5. Copy your my.cnf configuration file or files to a safe place. 方法4:Export and Import (mysqldump)逻辑备份One way to increase the performance of this method is to switch off autocommit mode when importing data, assuming that the tablespace has enough space for the big rollback segment that the import transactions generate. Do the commit only after importing a whole table or a segment of a table mysqldump不是mysql语句,而是与mysql并列的命令,需要在cmd中执行,举例如下:mysqldump -h 192.168.65.66 -u root -p cadserverdb ta_user_info > C:Userslizy-iDesktopa_user_info.sql
其中cadserverdb是数据库名称,ta_user_info是表名。也可以加入条件,只导出部分表数据,如mysqldump -h 192.168.65.66 -u root -p cadserverdb ta_user_info --where="id<10000" > C:Userslizy-iDesktopa_user_info.sql
mysqldump导出的内容是sql语句,既包括表结构(即建表语句),也包括表数据(即insert指令);可以使用-d或-t指定只导出表结构或表中数据。由于这种方法先建表再插入,因此如果是分区表,则数据可以进入正确的分区。 测试:1万条3列的数据,用了8秒钟左右导入 方法5:select与load(非官方文档的方法,测试可用;可能不限于Innodb表)这种方法与mysqldump的区别在于,首先它只导出表中数据,不导出表结构;其次它导出的是文本数据本身,而不是sql命令。在cmd下执行如下代码(没有使用into outfile,效果一样),可以将数据存入文本中mysql -u root -p sample -e "select * from ta_user_info" > C:Userslizy-iDesktopa_user_info.txt
在cmd或mysql中执行以下代码,可以将文件中的数据导入数据库(注意local不可以省略否则报错:permission denied)mysql -h localhost -u root -p sample -e "load data local infile ‘C:/Users/lizy-i/Desktop/ta_user_info.txt‘ into table ta_user_info2"
经测试,导入的数据能够进入正确的分区。测试:1万条3列的数据,用了6秒钟左右导入【注意,关于速度的测试数据,并没有精确测量,也没有多次测量取平均值】 注意,Navicat提供了导出和导入功能,既可以是sql形式,也可以是txt形式。对比后发现,导入速度相对更慢一些;而且,txt的导入比sql的导入快很多,可能差个几十倍都不止。下面比较一下Navicat导出导入txt和上述select/load导入导出txt的速度对比。表如下:ta_device_cad_ios有150万行数据;ta_device_cad_andr有641万行数据。导出是在正式服务器上进行,性能较好,导入是在测试服务器上进行,性能相对较弱,因此对于同一个表格,导入和导出的速度对比并不公平,重点关注两种方式的速度对比。对于ios数据,Navicat导出耗时43s,导入耗时1079s;select/load导出耗时16s,导入耗时30s。后者速度快很多很多。对于andr数据,Navicat每次导出的数据大小不同,耗时不同,行数不同,而且数据显示是16进制形式;导入时Navicat崩溃。个人猜测是表格太大,Navicat导出时进行了编码;在导入时要解码需要一次将所有数据读入,导致内存不足。而是用select/load方式,导出耗时43s,导入耗时128s。综上所述,使用select/load方式导数据,比Navicat自带的导出/导入向导,性能强很多。
MySQL6-数据库维护
标签:停止 restore 结构 txt exp 活动 ble 方法 注意
小编还为您整理了以下内容,可能对您也有帮助:
如何对MySQL数据库日志文件进行维护
相关文章: 如何进行MySQL数据库表的故障检测 如何修复MySQL数据库表 如何对MySQL数据库表进行锁定 如何使用新的更新日志 如果你只使用一个更新日志,你只须清空日志文件,然后移走旧的更新日志文件到一个备份中,然后启用新的更新日志。 用下列方法可以强制相关文章:
如何进行MySQL数据库表的故障检测
如何修复MySQL数据库表
如何对MySQL数据库表进行锁定
如何使用新的更新日志
如果你只使用一个更新日志,你只须清空日志文件,然后移走旧的更新日志文件到一个备份中,然后启用新的更新日志。
用下列方法可以强务器启用新的更新日志:
◆ mysqladmin flush-logs
你一般需要在命令行提供使用的数据库用户:
mysqladmin _u root _p flush-logs
◆ mysqladmin refresh
你一般需要在命令行提供使用的数据库用户:
mysqladmin _u root _p refresh
如果你正在使用MySQL 3.21或更早的版本,你必须使用mysqladmin refresh。
◆ SQL命令
FLUSH LOGS
◆ 重启服务器
上述方法都具有这样的功能:
关闭并且再打开标准和更新记录文件。如果你指定了一个没有扩展名的更新记录文件,新的更新记录文件的扩展数字将相对先前的文件加1。
mysql>FLUSH LOGS;
如何使用新的常规日志
用上面的方法同样可以强制更新常规日志。
要准备备份常规日志,其步骤可能复杂一些:
$ cd mysql-data-directory
$ mv mysql.log mysql.old
$ mysqladmin flush-tables
然后做一个备份并删除“mysql.old”。
如何修复MYSQL数据库因断电造成的数据损坏
修复MYSQL数据库因断电造成的数据损坏
在使用MySQL数据库的时候,都碰到过因断电造成数据库损坏的情况,大家都知道,断电或非正常关机是导致MySQL数据库出现错误最常见的原因,如何恢复MySQL数据库是大家都非常头痛的问题。目前有方法可以帮助大家恢复损坏的MySQL数据库吗?
当用户出现断电造成的MySQL数据库丢失损坏时,如果能进入MySQL软件,但是提示错误信息,用户可以通过“系统维护”—“数据库压缩修复”,压缩下数据库(有些软件在“系统设置”—“系统维护”—“数据库备份\恢复”中),这种方法只适合一小部分的数据库故障修复,功能性并不高。
现在网络上有两种比较推荐使用的MySQL数据库恢复方法,一种方法使用MySQL(和PHP搭配之最佳组合)的check table和repair table 的sql语句,另一种方法是使用MySQL(和PHP搭配之最佳组合)提供的多个myisamchk, isamchk数据检测恢复工具。在很多用户看来,这两个方法都比较复杂,并不适合大多数的用户使用。另外,这两种方法并不能有效的恢复MySQL数据库,可能还会造成数据库被进一步损坏,造成大家无法挽回的损失。根据以上几个原因,这两种MySQL数据库恢复方法并不建议大家使用。
。
数据库被损坏分以下几种情况:
1、严重损坏
2、轻度损坏
3、有些表被损坏或有些表的部分记录被损坏
MySQL数据库管理工具有哪些(mysql数据库管理软件)
1、phpMyAdmin
phpMyAdmin是最常用的MySQL维护工具,是一个用PHP开发的基于Web方式架构在网站主机上的MySQL管理工具,支持中文,管理数据库非常方便。不足之处在于对大数据库的备份和恢复不方便。
2、MySQLDumper
MySQLDumper使用PHP开发的MySQL数据库备份恢复程序,解决了使用PHP进行大数据库备份和恢复的问题,数百兆的数据库都可以方便的备份恢复,不用担心网速太慢导致中间中断的问题,非常方便易用。这个软件是德国人开发的,还没有中文语言包。
3、Navicat
Navicat是一个桌面版MySQL数据库管理和开发工具。和微软SQLServer的管理器很像,易学易用。Navicat使用图形化的用户界面,可以让用户使用和管理更为轻松。支持中文,有免费版本提供。
4、MySQLGUITools
MySQLGUITools是MySQL官方提供的图形化管理工具,功能很强大,值得推荐,可惜的是没有中文界面。
5、MySQLODBCConnector
MySQL官方提供的ODBC接口程序,系统安装了这个程序之后,就可以通过ODBC来访问MySQL,这样就可以实现SQLServer、Aess和MySQL之间的数据转换,还可以支持ASP访问MySQL数据库。
Mysql数据库的安全配置、实用技巧
1、前言
MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL 数据库的程序,特别是与PHP更是黄金组合,运用十分广泛。
由于MySQL是多平台的数据库,它的默认配置要考虑各种情况下都能适用,所以在我们自己的使用环境下应该进行进一步的安全加固。作为一个MySQL的系统管理员,我们有责任维护MySQL数据库系统的数据安全性和完整性。
MySQL数据库的安全配置必须从两个方面入手,系统内部安全和外部网络安全,另外我们还将简单介绍编程时要注意的一些问题以及一些小窍门。
2、系统内部安全
首先简单介绍一下MySQL数据库目录结构。MySQL安装好,运行了mysql_db_install脚本以后就会建立数据目录和初始化数据库。如果我们用MySQL源码包安装,而且安装目录是/usr/local/mysql,那么数据目录一般会是/usr/local/mysql/var。数据库系统由一系列数据库组成,每个数据库包含一系列数据库表。MySQL是用数据库名在数据目录建立建立一个数据库目录,各数据库表分别以数据库表名作为文件名,扩展名分别为MYD、MYI、frm的三个文件放到数据库目录中。
MySQL的授权表给数据库的访问提供了灵活的权限控制,但是如果本地用户拥有对库文件的读权限的话,攻击者只需把数据库目录打包拷走,然后拷到自己本机的数据目录下就能访问窃取的数据库。所以MySQL所在的主机的安全性是最首要的问题,如果主机不安全,被攻击者控制,那么MySQL的安全性也无从谈起。其次就是数据目录和数据文件的安全性,也就是权限设置问题。
从MySQL主站一些老的binary发行版来看,3.21.xx版本中数据目录的属性是775,这样非常危险,任何本地用户都可以读数据目录,所以数据库文件很不安全。3.22.xx版本中数据目录的属性是770,这种属性也有些危险,本地的同组用户既能读也能写,所以数据文件也不安全。3.23.xx版本数据目录的属性是700,这样就比较好,只有启动数据库的用户可以读写数据库文件,保证了本地数据文件的安全。
如果启动MySQL数据库的用户是mysql,那么象如下的目录和文件的是安全的,请注意数据目录及下面的属性:
shellls -l /usr/local/mysql
total 40
drwxrwxr-x 2 root root 4096 Feb 27 20:07 bin
drwxrwxr-x 3 root root 4096 Feb 27 20:07 include
drwxrwxr-x 2 root root 4096 Feb 27 20:07 info drwxrwxr-x 3 root root 4096 Feb 27 20:07 lib drwxrwxr-x 2 root root 4096 Feb 27 20:07 libexec drwxrwxr-x 3 root root 4096 Feb 27 20:07 man drwxrwxr-x 6 root root 4096 Feb 27 20:07 mysql-test drwxrwxr-x 3 root root 4096 Feb 27 20:07 share drwxrwxr-x 7 root root 4096 Feb 27 20:07 sql-bench drwx------ 4 mysql mysql 4096 Feb 27 20:07 var
shellls -l /usr/local/mysql/var
total 8
drwx------ 2 mysql mysql 4096 Feb 27 20:08 mysql
drwx------ 2 mysql mysql 4096 Feb 27 20:08 test
shellls -l /usr/local/mysql/var/mysql
total 104
-rw------- 1 mysql mysql 0 Feb 27 20:08 columns_priv.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 columns_priv.MYI
-rw------- 1 mysql mysql 8778 Feb 27 20:08 columns_priv.frm
-rw------- 1 mysql mysql 302 Feb 27 20:08 db.MYD
-rw------- 1 mysql mysql 3072 Feb 27 20:08 db.MYI
-rw------- 1 mysql mysql 8982 Feb 27 20:08 db.frm
-rw------- 1 mysql mysql 0 Feb 27 20:08 func.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 func.MYI
-rw------- 1 mysql mysql 8641 Feb 27 20:08 func.frm
-rw------- 1 mysql mysql 0 Feb 27 20:08 host.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 host.MYI
-rw------- 1 mysql mysql 8958 Feb 27 20:08 host.frm
-rw------- 1 mysql mysql 0 Feb 27 20:08 tables_priv.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 tables_priv.MYI
-rw------- 1 mysql mysql 8877 Feb 27 20:08 tables_priv.frm
-rw------- 1 mysql mysql 428 Feb 27 20:08 user.MYD
-rw------- 1 mysql mysql 2048 Feb 27 20:08 user.MYI
-rw------- 1 mysql mysql 9148 Feb 27 20:08 user.frm
如果这些文件的属主及属性不是这样,请用以下两个命令修正之:
shellchown -R mysql.mysql /usr/local/mysql/var
shellchmod -R go-rwx /usr/local/mysql/var