MySQL备份方法总结

上传人:tia****g98 文档编号:143648026 上传时间:2022-08-26 格式:DOC 页数:7 大小:33.50KB
返回 下载 相关 举报
MySQL备份方法总结_第1页
第1页 / 共7页
MySQL备份方法总结_第2页
第2页 / 共7页
MySQL备份方法总结_第3页
第3页 / 共7页
点击查看更多>>
资源描述
总结下几种常用的MySQL备份方法:一、直接拷贝数据库文件a、首先把内存中的数据都刷新到磁盘中,同时锁定数据表,以保证拷贝过程中不会有新的数据写入mysqlFLUSHTABLESWITHREADLOCK;b、使用tar或cp等命令备份数据库文件,这里使用tartarzcvf/backup/mysql_$(date+%Y%m%d).tar.gz/var/lib/mysqlc、备份完后解锁数据表mysqlunlocktables;这种方法备份出来的数据恢复也很简单,直接拷贝回原来的数据库目录下即可。需要注意,对于Innodb引擎的表来说,还需要备份其日志文件,即ib_logfile*文件。因为当Innodb表损坏时,就可以依靠这些日志文件来恢复。二、使用mysqlhotcopy备份mysqlhotcopy是一个PERL程序,使用LOCKTABLES、FLUSHTABLES和cp或scp来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上。mysqlhotcopy只能用于备份MyISAM。例:把数据库test备份到/backup目录下:/usr/local/mysql/bin/mysqlhotcopy-uroot-pxxxtest/backupmysqlhotcopy在执行前将会锁定数据库,执行完毕后将自动释放锁定还原:mysqlhotcopy备份出来的是整个数据库目录,还原时直接拷贝覆盖就行了,注意权限问题cp-rf/backup/test/var/lib/mysql/注意,想要使用mysqlhotcopy,必须要有SELECT、RELOAD(要执行FLUSHTABLES)权限,并且还必须要能够有读取datadir/db_name目录的权限。三、使用mysqldump备份mysqldump是SQL级别的备份机制,它将数据表导成SQL脚本文件,可以方便的在不同的mysql版本间进行恢复或升级,这也是最常用的备份方法。下面介绍下mysqldump的参数:compatible=name它告诉mysqldump,导出的数据将和哪种数据库或哪个旧版本的MySQL服务器相兼容。值可以为ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等,要使用几个值,用逗号将它们隔开。当然了,它并不保证能完全兼容,而是尽量兼容。complete-insert,-c导出的数据采用包含字段名的完整INSERT方式,也就是把所有的值都写在一行。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。因此,需要谨慎使用该参数,至少我不推荐。default-character-set=charset指定导出数据时采用何种字符集,如果数据表不是采用默认的latin1字符集的话,那么导出时必须指定该选项,否则再次导入数据后将产生乱码问题。disable-keys告诉mysqldump在INSERT语句的开头和结尾增加/*!40000ALTERTABLEtableDISABLEKEYS*/;和/*!40000ALTERTABLEtableENABLEKEYS*/;语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合MyISAM表。extended-insert=true|false默认情况下,mysqldump开启complete-insert模式,因此不想用它的的话,就使用本选项,设定它的值为false即可。hex-blob使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用本选项。影响到的字段类型有BINARY、VARBINARY、BLOB。lock-all-tables,-x在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭single-transaction和lock-tables选项。lock-tables它和lock-all-tables类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于MyISAM表,如果是Innodb表可以用single-transaction选项。no-create-info,-t只导出数据,而不添加CREATETABLE语句。no-data,-d不导出任何数据,只导出数据库表结构。opt这只是一个快捷选项,等同于同时添加add-drop-tablesadd-lockingcreate-optiondisable-keysextended-insertlock-tablesquickset-charset选项。本选项能让mysqldump很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用skip-opt禁用。注意,如果运行mysqldump没有指定quick或opt选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题。quick,-q该选项在导出大表时很有用,它强制mysqldump从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。routines,-R导出存储过程以及自定义函数。single-transaction该选项在导出数据之前提交一个BEGINSQL语句,BEGIN不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如InnoDB和BDB。本选项和lock-tables选项是互斥的,因为LOCKTABLES会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用quick选项。triggers同时导出触发器。该选项默认启用,用skip-triggers禁用它。例:mysqldump常用的备份命令:/usr/local/mysql/bin/mysqldump-uroot-pxxx-opttest/backup/test.sql还原:/usr/local/mysql/bin/mysqldump-uroot-pxxxtestGRANTREPLICATIONSLAVEON*.*TOslave001192.168.1.102IDENTIFIEDBY123456;(3)修改master数据库的配置文件f,开启BINLOG,并设置server-id的值,修改之后必须重启Mysql服务mysqldserver-id=1#服务器idlog-bin=mysql-binlog#打开二进制日志,最好设置到不同的磁盘已减少磁盘ioexpire_logs_day=10#设置二进制日志保存日期max_binlog_size=500M#设置每个binlog文件的大小(4)之后可以得到主服务器当前二进制日志名和偏移量,这个操作的目的是为了在从数据库启动后,从这个点开始进行数据的恢复mysqlshowmasterstatusG;*1.row*File:mysql-bin.000003Position:243Binlog_Do_DB:Binlog_Ignore_DB:1rowinset(0.00sec)(5)好了,现在可以停止主数据的的更新操作,并生成主数据库的备份,这里通过mysqldump导出数据库。注意在导出数据之前先对主数据库进行READLOCK,以保证数据的一致性mysqlflushtableswithreadlock;接着使用mysqldump备份mysqldump-h127.0.0.1-p3306-uroot-ptest/root/test1.sql最好在主数据库备份完毕,恢复写操作mysqlunlocktables;(6)将刚才主数据备份的test.sql复制到从数据库,进行导入mysqlusetest;mysqlsource/root/test1.sql(7)接着修改从数据库的flog_bin=mysql-binserver_id=2#mysql复制可能出现主服务器上可以运行的语句,从服务器不能够运行,所以我们在f加一句slave-skip-errors=all意思是忽略所有的sql语句错误!relay_log=mysql-relay-bin#该文件用于存放Slave端的I/O线程从Master端读取的二进制文件信息slave数据库授权:mysqlchangemastertomysqlmaster_host=192.168.1.101,mysqlmaster_user=slave001,mysqlmaster_password=123456,mysqlmaster_log_file=mysql-bin.000003,mysqlmaster_log_pos=243;参数说明:MASTER_HOST:Master主机名(或者IP地址)MASTER_USER:Slave连接Master主机的用户名MASTER_PASSWORD:Slave连接Master的用户密码MASTER_LOG_FILE:开始复制的日志文件名称MASTER_LOG_POS:开始复制的日志文件位置,也就是LogPosition(8)在从服务器上,启动slave进程mysqlstartslave;(9)在从服务器进行showsalvestatus验证mysqlshowslavestatusG;*1.row*Slave_IO_State:WaitingformastertosendeventMaster_User:slaveMaster_Port:3306Connect_Retry:60Master_Log_File:mysql-binlog.000002Read_Master_Log_Pos:209Relay_Log_File:mysql-relay-bin.000003Relay_Log_Pos:357Relay_Master_Log_File:mysql-binlog.000002Slave_IO_Running:YesSlave_SQL_Running:YesReplicate_Do_DB:Replicate_Ignore_DB:Slave_IO_State,Slave_IO_Running,都为Yes,表明slave已经开始复制(10)最后,我们可以在的主服务器对数据库做一些更新的操作,然后在从服务器查看是否已经更新
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!