mysqldump怎么读(mysqldump不锁表备份,怎么设置为好)
本文目录
- mysqldump不锁表备份,怎么设置为好
- 关于mysqldump的一个疑问
- mysqldump到底怎么用
- 怎么用mysqldump工具备份数据库
- mysqldump初始化读哪些参数
- 如何用MATLAB读取数据库Mysql文件
mysqldump不锁表备份,怎么设置为好
mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATETABLEINSERT等。如果给mysqldump进行备份,从库上停止复制的sql线程然后mysqldump,这个是个很好的选择,因为停止复制就没有写,就不用担心锁表的问题。下面提供两只备份方法:一、MyISAM引擎备份1.由于MyISAM引擎为表级锁,因此,在备份时需要防止在备份期间数据写入而导致不一致,2.所以,在备份时使用--lock-all-tables加上读锁mysqldump-A-F-B--lock-all-tables|gzip》/data/backup/$(date+%F).tar.gz3.特别提示:有关MyISAM和InnoDB引擎的差别和在工作中如何选择,在前面已经详细讲解过了,这里就不在讲了。二、InnoDB引擎备份1.InnoDB引擎为行锁,因此,备份时可以不对数据库加锁的操作,可以加选项--single-transaction进行备份:mysqldump-A-F-B--single-transaction|gzip》/data/backup/$(date+%F).tar.gz2.特别注意:--single-transaction仅适用于InnoDB引擎。--master-data=2会将当前mysql用到的binlog文件的日志名称和位置记录下来然后搜索changemaster就行了mysqldump-uroot-p’passwd’-Bctp1--lock-all-tables|gzip》/home/mysql/ctp1.$(date+%F).tar.gz--no--data仅仅dump数据库结构创建脚本通过--no-create-info去掉dump文件中创建表结构的命令。
关于mysqldump的一个疑问
1 mysqldump导出数据主要有两种控制:一种是导出的全过程都加锁 lock-all-tables, 另一种则是不加。前者会在导出开始时执行 FLUSH TABLES WITH READ LOCK; 也就是加全局读锁,会阻塞其它写操作,以保证导出是一致性的;因此只有在导出测试数据时或导出时没有业务连接操作时可不加 lock-all-tables .至于说一致性导出的另一种方式 single-transaction, 则是有适用范围的,见下边。2 single-transaction 选项和 lock-all-tables 选项是二选一的,前者是在导出开始时设置事务隔离状态并使用一致性快照开始事务,而后马上unlock tables,然后执行导出,导出过程不影响其它事务或业务连接,但只支持类似innodb多版本特性的引擎,因为必须保证即使导出期间其它操作(事务点t2)改变了数据,而导出时仍能取出导出开始的事务点t1时的数据。而lock-all-tables则一开始就 FLUSH TABLES WITH READ LOCK; 加全局读锁,直到dump完毕。-- 关于一致性快照,简单地说,就是通过回滚段能记录不同的事务点的各版本数据-- single-transaction 的流程如下:SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READSTART TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */SHOW MASTER STATUS -- 这一步就是取出 binlog index and positionUNLOCK TABLES...dump...3 master_data 选项开启时默认会打开lock-all-tables,因此同时实现了两个功能,一个是加锁,一个是取得log信息。 master_data取1和取2的区别,只是后者把 change master ... 命令注释起来了,没多大实际区别;4 当master_data和 single_transaction 同时使用时,先加全局读锁,然后设置事务一致性和使用一致性快照开始事务,然后马上就取消锁,然后执行导出。过程如下FLUSH TABLES WITH READ LOCKSET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READSTART TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */SHOW MASTER STATUS -- 这一步就是取出 binlog index and positionUNLOCK TABLES...dump...5 总结,了解了这些选项作用后,使用起来就明确了.如果需要binlog信息则使用 master_data; 如果不想阻塞同时表是innodb引擎可使用 single_transaction 取得一致性快照(取出的数据是导出开始时刻事务点的状态)如果表不支持多版本特性,则只能使用 lock-all-tables 阻塞方式来保证一致性的导出数据。当然,如果能保证导出期间没有任何写操作,可不加或关闭 lock-all-tables
mysqldump到底怎么用
备份:导出要用到MySQL的mysqldump工具,基本用法是: mysqldump 与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。 -P port_num, --port=port_num 与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。) -q, --quick 不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。 -S /path/to/socket, --socket=/path/to/socket 与localhost连接时(它是缺省主机)使用的套接字文件。 -T, --tab=path-to-some-directory 对于每个给定的表,创建一个table_name.sql文件,它包含SQL CREATE 命令,和一个table_name.txt文件,它包含数据。 注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据--fields-xxx和--lines--xxx选项来定。 -u user_name, --user=user_name 与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。 -O var=option, --set-variable var=option 设置一个变量的值。可能的变量被列在下面。 -v, --verbose 冗长模式。打印出程序所做的更多的信息。 -V, --version 打印版本信息并且退出。 -w, --where=’where-condition’ 只导出被选择了的记录;注意引号是强制的! “--where=user=’jimf’“ “-wuserid》1“ “-wuserid《1“ 最常见的mysqldump使用可能制作整个数据库的一个备份: mysqldump --opt database 》 backup-file.sql 但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的: mysqldump --opt database | mysql --host=remote-host -C database 由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了: mysqladmin create target_db_name mysql target_db_name 《 backup-file.sql
怎么用mysqldump工具备份数据库
一、数据备份的重要性 工作中,如果意外删除了重要的文件或者目录的话,那结果可就惨了。尤其是当误删除的数据涉及重要的客户或者关键项目,并且这些数据无法轻易重新创建的时候,那滋味,不用我说你也能想象得到。不巧的是,像这样的数据在公司环境中随处可见,例如销售记录、客户联系方式,等等。 二、关于mysqldump MySQL自身提供了许多命令行工具,例如mysql工具可以用来与MySQL的数据库模式、数据、用户和配置变量进行交互,而mysqladmin工具则可以进行各种管理任务,还有就是下面将要介绍的mysqldump。此外还有很多,不过那超出了本文的讨论范围。工具mysqldump既可以用来备份数据库模式,还可以用来备份数据;利用它,我们不仅可以对一个服务器上的所有数据库进行地毯式的备份,同时我们还可以选择性地备份某个数据库,甚至数据库中指定的某些表。 当在服务器上安装MySQL的时候,应修改系统路径以便使全局命令行可以访问各个客户程序。打开终端窗口,并执行下列命令:%mysqldump Usage: mysqldumpFormore options, usemysqldump--help 这里给出了使用mysqldump程序的方法。举例来说,若要备份所有数据库模式和数据至文件backup092210.sql的话,可以执行如下所示的命令:%mysqldump-u root-p--all-databases backup092210.sql Enter password: 这里,为了能够访问所有数据库,我们需要一个root权限,所以这里需要在提示符后面输入相应口令。此外,如果你是在开发用的服务器上练习这些命令的话,不妨花一些时间看看备份文件的内容。这时您会看到一系列的SQL语句,先是删除各个表后重新创建的语句,然后是重新创建相关数据的语句。另外,由于上面的例子中我们对所有数据库进行备份,所以您还会发现,备份文件将创建每个数据库(如果它还没有存在的话),然后通过USE命令切换到该数据库,进而创建与该数据库相关的表跟数据。 若要备份单个数据库,例如要备份名为wiki的数据库到一个名为wiki-backup092210.sql的文件中,我们可以使用如下所示的命令:%mysqldump-u root-p wikiwiki-backup092210.sql Enter password: 最后,若要备份数据库中名为users的表的话,例如要把它备份到名为wikiusers-backup092210.sql的文件中,我们可以使用如下所示的命令:%mysqldump-u root-p wiki userswikiusers-backup092210.sql Enter password: 三、调整备份内容 有时候,我们可能只想备份数据库的模式,或者只想备份数据库的数据。为了备份数据库模式,可以向mysqldump传递参数--no-data,如下所示:%mysqldump-u root-p--no-data wiki wiki-backup092210.sql 对于前面所举的例子,仅需要少量的击键次数就能执行mysqldump命令。然而,工作中要干的活还有很多,并且如果老是执行这些命令的话,那么生活就会变得太单调了。因此,我们可以设法使这些过程自动化,这时我们可以借助cron工具来达成我们的目标,这个工具在所有类UNIX操作系统上都能找到。为了自动执行备份任务,我们需要新建一个正确命名的文件。例如nightly-backup.sh,具体命令如下所示: #!/bin/sh mysqldump-uroot-psecret wiki/home/backup/sql/wiki-backup-`date+%m%d%Y`.sql 当我们执行这个脚本的时候,它会将wiki数据库备份到一个按照备份时间命名的文件中,如wiki-backup-092210.sql。您需要注意一下这里的用户名root和口令secret是如何传递给mysqldump的,即将它们分别放到选项- u和- p后面。从安全的角度讲,我们必须进行正确的权限设置。 接下来,我们将这个脚本提供交给cron,方法是使用crontab。为此,我们可以执行如下所示的命令: %crontab-e 这将打开当前登录用户的crontab文件,如果该文件不存在的话就会自动新建一个。在这个文件中,我们可以添加如下内容,来确保每天上午3时运行该备份脚本: 03***/home/backup/scripts/nightly-backup .sh 如果您对crontab的语法很陌生的话,这里的参数可能让您摸不着头脑。这里前五个参数分别对应于执行脚本的时间,依次为分、时、日、月和星期几。因此,要想在每星期二的4:45am执行脚本的话,可以使用参数45 4 * * 3。 插入上面所示的一行内容后,保存文件,那么我们的任务就会开始按照给定时间调度执行。 需要注意的是,第二天早上一定要查看相应的目录,看看事情是否一切正常。 五、其它备份方案 就像本文前面所说的那样,mysqldump只是MySQL众多备份方案中的一个。此外,您还可以使用MySQL的二进制日志文件进行增量备份,或者使用从MySQL主服务器中将数据复制到从服务器中。 六、小结 本文中,我们与读者一道建立了一个简单的MySQL备份解决方案。如果您之前还未实施任何解决方案的话,不妨立即动手试一下。重要的是,这只需要花费您几分钟的时间,我想这是很划得来的。
mysqldump初始化读哪些参数
mysqldump客户端可用来转储数据库或搜集数据库进行备份或将数据转移到另一个SQL服务器(不一定是一个MySQL服务器)。转储包含创建表和/或装载表的SQL语句。 如果你在服务器上进行备份,并且表均为MyISAM表,应考虑使用mysqlhotcopy,因为可以更快地进行备份和恢复。 有3种方式来调用mysqldump: shell》 mysqldump 》 my_databases.sql 如果你想要转储所有数据库,使用--all--database选项: shell》 mysqldump --all-databases 》 all_databases.sql 如果表保存在InnoDB存储引擎中,mysqldump提供了一种联机备份的途径(参见下面的命令)。该备份只需要在开始转储时对所有表进行全局读锁定(使用FLUSH TABLES WITH READ LOCK)。获得锁定后,读取二进制日志的相应内容并将锁释放。因此如果并且只有当发出FLUSH...时正执行一个长的更新语句,MySQL服务器才停止直到长语句结束,然后转储则释放锁。因此如果MySQL服务器只接收到短(“短执行时间“)的更新语句,即使有大量的语句,也不会注意到锁期间。 shell》 mysqldump --all-databases --single-transaction 》 all_databases.sql 对于点对点恢复(也称为“前滚”,当你需要恢复旧的备份并重放该备份以后的更改时),循环二进制日志或至少知道转储对应的二进制日志内容很有用: shell》 mysqldump --all-databases --master-data=2 》 all_databases.sql 或 shell》 mysqldump --all-databases --flush-logs --master-data=2 》 all_databases.sql 如果表保存在InnoDB存储引擎中,同时使用--master-data和--single-transaction提供了一个很方便的方式来进行适合点对点恢复的联机备份。
如何用MATLAB读取数据库Mysql文件
如何往里面添加一个 字符型,长度为36 的字段?A:你需要把那个shows.MYD 所在的那个文件夹拷贝到mysql安装目录的data目录下。如果你是默认安装,应该在c:\Program Files\MySQL\MySQL Server 5.0\data\注意是整个shows那些文件所在的目录。连目录一起拷贝哈。按你的描述,就应该是data目录了。 将d:\data1\下的data目录拷贝到c:\Program Files\MySQL\MySQL Server 5.0\data\下面。完成之后,重启mysql看看,可以运行services.msc 在里面找到mysql 重新启动mysql。(前提是你安装的时候配置了mysql服务,我想你应该配置了吧)重启之后 进入命令行,然后mysql -uroot -p 进入mysqlshow databases;看看能不能看到一个叫data数据库。如果能看到,恭喜你, 继续下面的命令。 如果不行,看后面的方法B。use dataalter table shows add 列名 类型 长度 等等举例:增加一个int型名为id的列alter table shows add id int(11) not null default ’0’;alter table shows add name varchar(32) not null default ’’;如果需要指定列的位置,假如加入的列在number列后面。那么alter table shows add id int(11) not null default ’0’ after number;方法B。如果按之前说的文件拷贝方式,重启进入mysql后看不到data 这个数据库,那么可能是你们的mysql版本不一致造成的,应该说这个可能性很大。那么,你让你朋友给你导出数据库内容。 用mysqldump命令。mysqldump -uroot -p -D 数据库名.表名 》 sss.sql你拿到这个sss.sql后 再把它导入到你的mysql数据库。在cmd下运行mysql -uroot -p test《sss.sql或者在mysql命令行下运行use testsource sss.sql这样shows表就导入到你的test数据库了。剩下的就简单了哈。和前面没啥差别。
更多文章:

php基础知识(如何轻松面对php面试面试前最好都掌握哪些知识)
2025年2月16日 11:40

salmon鲑鱼气垫(trout 鲑鱼 和 salmon 三文鱼 他们一样吗有什么区别呢)
2025年3月23日 07:10

string的indexof方法(怎么判断string字符串中包含某个字符)
2025年4月5日 03:20

postgresql9 0(postgresql9怎么启动数据库系统)
2025年3月7日 20:30

behavior什么意思(behavious与manners的区别)
2025年2月11日 09:00

glimpse什么意思(glance与glimpse的区别)
2025年2月18日 20:20

udp协议属于哪一层(ISO 的七层模型是什么tcp/udp是属于哪一层tcp/udp有何优缺点)
2025年2月17日 00:50

mysql replace(mysql之replace和ON DUPLICATE KEY UPDATE的区别)
2025年3月3日 23:40