自己做的网页怎么连接到网站,企业网搭建是什么意思,长春做网络优化的公司,佛山网站优化搜索前一段时间因为误操作删除了一张表的几条数据#xff0c;弄得很尴尬#xff0c;正好这周有空就折腾了下数据备份的知识#xff0c;现把mysql的数据备份相关实践和心得总结如下#xff1a;一.使用mysqldump命令备份数据库#xff1a;备份整个数据库(包括表结构和数据),用法…前一段时间因为误操作删除了一张表的几条数据弄得很尴尬正好这周有空就折腾了下数据备份的知识现把mysql的数据备份相关实践和心得总结如下一.使用mysqldump命令备份数据库备份整个数据库(包括表结构和数据),用法如下mysqldump -h10.38.14.143 -uroot -prootroot weixin weixin.sql其中 weixin 是数据库名可以一次备份多个数据库 (用空格隔开)默认保存在当前目录下这个wexin.sql文件里面主要由四部分组成数据库及操作系统的信息、表结构、具体的数据(实际上是insert语句)、锁表以及释放表的命令语句补充1.读锁定本人和其他人只能读取数据库写锁定只有本人能进行增删改查其他人不能进行任何操作2.有时用mysqldump命令会提示没权限去操作数据库相关的提示语 如 mysqldump: Got error: 1044: Access denied for user php10.38.% to database cms_fgw when using LOCK TABLES这是因为mysql数据库限制了远程服务器对他的相关操作请和DBA沟通开放权限(主要是执行下面类似的命令去授权)grant all privileges on *.* to root% identified by 123456 with grant option;flush privileges;3.如若忘记mysql命令的一些用法可以多多使用操作,相当于man帮助这个很有用如下4.用mysqldump也可以只备份表结构用法如下mysqldump -h10.38.14.143 -uroot -prootroot --no-data --databases weixin cjdaily /tmp/table_structure.sqltable_structure.sql中的部内容如下5.可以根据mysqldump命令进行一些扩展写一个备份数据库的shell脚本如下是根据我们自己的需求写的一个脚本(shell脚本的具体语法就不讲了)#!/bin/bash#backup databaseif [ $# -ge 1 ] ; thendatabaselist$elsedatabaselistcjdaily cms_rmrb guangzhou pladailyfifor database in $databaselistdoif [ ! -e /home/pengyudi/backup_databases/$database ]thenmkdir -p /home/pengyudi/backup_databases/$databasefimysqldump --opt -h10.38.10.5 -uchen -pab#c-123 $database |gzip /home/pengyudi/backup_databases/$database/$database$(date %Y-%m-%d %H:%M:%S).sql.gzif [ $? -eq 0 ]thenecho $(date %Y-%m-%d %H:%M:%S) Database ---$database--- Backup Successfully \r\nfind /home/pengyudi/backup_databases/$database/ -name $database\* -ctime 1 -exec rm -rf {} \;elseecho $(date %Y-%m-%d %H:%M:%S) Database ---$database--- Backup unsuccessfully,please check out the reason\r\nfidone6.备份某台主机上的所有数据库 mysqldump --opt -h10.38.10.5 -uchenliangliagasd -pabcdeqasdadfa -1238 --all-databases test.dump二.数据的恢复1.切换到mysql的工作环境use test;source /tmp/table_structure.sql ;2.不切换到mysql环境/usr/bin/mysql -h192.168.4.47 -um_bbs_test_admin -P3309 -p89603d5a test三.使用load导入数据 和select **** from tabelName into outfile file_name的方式导出数据补充1.注意保存数据的文件要打引号以及保存数据的文件路径要特别留意一些细节如上确实很容易出错select * from weixin_data_rmrb into outfile weixin_outfile.sql;2.使用技巧当用load命令导入数据时可以通过适当数据提高导入速度对于MyISAM储存引擎的表(1)可以通过以下方式快速导入大量数据(disable keys 和enable keys 可以用来打开或关闭非唯一索引的更新提高导入速度但是对InnoDB表无效)alter table weixin_data_rmrb disable keysload data infile weixin_outfile.sql into table weixin_data_rmrbalter table weixin_data_rmrb enable keys(2)关闭唯一性校验可以提高导入速度在导入数据前后分别执行 set unique_checks0(关闭唯一性校验) 和 set unique_checks1来提高导入速度对于Innodb表可以使用一下方式提高导入速度(1)将导入的数据按照主键的顺序排列可以提高导入速度因为Innodb表是按照主键顺序保存的(2)在导入之前执行set autocommit0关闭自动提交事物导入结束后执行set autocommit1回复自动提交事物四.使用二进制日志恢复数据1.开启binlog日志修改/etc/my.cnf配置文件vim /etc/my.cnf在[mysqld]下面添加如下两行用于开启及设置binlog日志的保存路径log-bin/home/logs/mysql/mysql-bin #记得要修改权限不然mysql无法启动; mysql-bin为日志文件的名称的组成部分(mysql-bin.000001)binlog_formatmixedlog/home/logs/mysql/mysql.log保存退出chown mysql.mysql /home/logs/mysql -R #修改目录权限其中mysql-bin.index记录了生成了哪些二进制日志文件另外跟日志相关的参数expire_logs_days 7 #保留七天的日志slow-query-log on #开启慢查询slow_query_log_file /home/logs/mysql/slow.log #慢查询日志保存路径long_query_time 1 #慢查询的时间超过一秒的记录下来log-queries-not-using-indexes on #记录没用使用到索引的SQL语句修改配置后重启mysqlservice mysqld restart进入到mysql命令界面查看二进制日志相关信息show variables like %bin%2.与binlog日志有关的命令flush logs: 执行完之后在存放binlog日志的目录下多一个最新的binlog日志文件show master status 查看最后一个bin日志reset master 清空所有的binlog日志通过binlog日志恢复到某一个日志文件的操作命令/usr/bin/mysqlbinlog --no-defaults -f /home/logs/mysql/mysql-bin.000008| mysql -h10.38.14.143 -uroot -prootroot查看某个binlog日志命令 /usr/bin/mysqlbinlog --no-defaults -f /home/logs/mysql/mysql-bin.000008说明可以根据需要恢复到某一个点的数据mysqlbinlog后面的主要参数有--stop-position120--start-positon20--stop-date2016-11-19 18:50:42--start-date2016-11-19 18:30:21友情链接binlog详细的操作例子请参考如下博客