欢迎来到日本小春精选,了解日本先从@日本生活基础课程开始!
欢迎 欢迎     登录 | 注册      消息
当前位置: 首页小组技术交流Mysql 备份与恢复

[Linux]Mysql 备份与恢复

逻辑备份:<br />1.mysqldump(数据导出工具)<br />&nbsp; mysqldump options db_name[table_name]//备份单个数据库<br />&nbsp; mysqldump 选项 --database database-name1 [databases-name2]....//备份指定的数据库一个或者多个<br />&nbsp; mysqldump 选项 --all-database //备份所有的数据库<br />&nbsp; <span style="color:#ff12;">链接选项:</span><br />&nbsp; -u :指定用户名<br />&nbsp;&nbsp; -p:指定密码<br />&nbsp;&nbsp; -h:指定服务器ip或者域名<br />&nbsp;&nbsp; -P(大写):指定端口<br />eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -P 3306 -p BBS user&gt;/home/wuxiaoxiao/user.txt<br /><span style="color:#ff12;">输出内容选项:</span><br />--add-drop-database:每个数据库创建语句之前加上drop database语句<br />--add-drop-table:每个表创建语句之前加上drop table语句<br />-n:不包含数据库的创建语句<br />-t:不包含数据表的创建语句<br />-d:不包含数据<br /><span style="color:#ff12;">输出格式选项:</span><br />&nbsp;--compact:使输出结果简洁<br />&nbsp;-c --compact-insert:使输出文件中的insert语句包含字段名<br />&nbsp;-T:将数据库表中的数据备份为单纯的数据文本和建表sql俩个文件<br />&nbsp;&nbsp; --fields-terminated-by=name(域分割符)<br />&nbsp;&nbsp; --fields-enclosed-by=name(域引用符)<br />&nbsp;&nbsp; --fields-optionally-enclosed-by=name(域可选引用符)<br />&nbsp;&nbsp; --fields-escaped-by=name(转移字符)<br />eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -P 3306 -p BBS user -T ./bak<br /><span style="color:#ff12;">字符集选项:</span><br />--default-character-set=name:设置导出的客户端字符集<br />eg:mysql -u root -p --compact --default-character-set=utf8 BBS user &gt; test.txt<br /><span style="color:#ff12;">其他选项:</span><br />-F:备份前刷新日志<br />-l:给所有表加读锁(备份期间使用,使备份的数据保持一致性)<br /><br /><span style="color:#ff12;">备份:</span><br />备份所有数据库:<br />mysqldump -u root -p&nbsp; --all-database&nbsp; &gt;&nbsp; test.sql<br />备份数据库test<br />mysqldump -u root -p&nbsp; test&nbsp; &gt;&nbsp; test.sql<br />&nbsp;备份数据库test下的temp表:<br />mysqldump -u root -p&nbsp; test demp &gt;&nbsp; test.sql<br />备份数据库下的所有表为逗号分割的文本,备份到/temp<br />mysqldump -u root -p test -T /temp --fields-terminated-by ',' <br /><span style="color:#ff12;">完全恢复:</span><br />msyql -u root -p &lt; bakfile<br />注意:将备份恢复后数据并不完整,还需要将备份后执行的日志进行重做<br />mysqlbinlog binlog-file | mysql -u root -p***<br />举个完整的mysqldump备份和恢复的例子:<br />上午9点备份数据库<br />mysqldump -u root -p -l -F test &gt; test.dmp<br />9点半备份完毕,然后想数据库中插入数据<br />10点数据库突然故障,数据无法访问,需要恢复备份<br />mysql -u root -p test &lt; test.dmp<br />恢复后的数据并不完整,9点半插入的数据并没有恢复<br />使用mysqlbinlog恢复自mysqldump备份以来的binlog<br />mysqlbinlog binlogfilename | mysql -u root -p test<br /><span style="color:#ff12;">基于时间点恢复:</span><br />如果上午10点发生了误操作.可以用下面语句进行备份和binlog将数据库恢复到故障前:<br />mysqlbinlog --stop-date=&quot;2005-04-20 9:59:59&quot; binlogfile | mysql -u root -p test<br />跳过故障的时间点,继续执行后面的binlog,完成恢复<br />mysqlbinlog --start-date=&quot;2005-04-20 9:59:59&quot; binlogfile | mysql -u root -p test<br /><span style="color:#ff12;">基于位置恢复:<br /></span>mysqlbinlog --start-date=&quot;2005-04-20 9:55:59&quot; --stop-date=&quot;2005-04-20 10:05:00&quot; binlogfile &gt; test.sql<br /><span style="color:#ff12;"></span>查看此文件,找出出错语句前后的位置号,例如是368312,368315<br />mysqlbinlog --stop-position=&quot;368312&quot; binlogfile | mysql -u root -p test<br /><span style="color:#ff12;"></span>mysqlbinlog --start-position=&quot;368315&quot; binlogfile | mysql -u root -p test<br /><span style="color:#ff12;"></span><br />表的导入和导出:<br />导出:<br />&nbsp;&nbsp;&nbsp; mysqldump -u username -p -T target_dir dbname tablename [options]<br />options:<br />&nbsp;&nbsp; --fields-terminated-by=name(域分割符)<br />&nbsp;&nbsp; --fields-enclosed-by=name(域引用符)<br />&nbsp;&nbsp; --fields-optionally-enclosed-by=name(域可选引用符)<br />&nbsp;&nbsp; --fields-escaped-by=name(转移字符)<br />备份数据库下的所有表为逗号分割的文本,备份到/temp<br />mysqldump -u root -p -T /temp test --fields-terminated-by ',' --fields-optionally-enclosed-by '&quot;'<br />导入:<br />&nbsp;&nbsp; msyqlimport -u root -p [LOCAL] dbname order_tab.txt [options]<br />OPTIONS:<br />&nbsp;&nbsp; --fields-terminated-by=name(域分割符)<br />&nbsp;&nbsp; --fields-enclosed-by=name(域引用符)<br />&nbsp;&nbsp; --fields-optionally-enclosed-by=name(域可选引用符)<br />&nbsp;&nbsp; --fields-escaped-by=name(转移字符)<br />eg:mysqlimport -u root -p test order.txt --fields-terminated-by=',' --fields-enclosed-by='&quot;'<br />
2012-11-12 17:02:01 来自:球球
用户评论(0)
正序阅读
你的回应
登录 | 注册