mysql备份

146 阅读1分钟

1、语法
mysqldump -u 用户名 -p 数据库名>备份的文件名
-B 指定多个库
-compact 去掉注释
-A 所有库
-F 刷新binlog日志
-d 只备份表结构
-t 只备份数据
-single-transaction 适合innodb事物数据库备份
–master-data=2 :binlog名称及增量位置点记录
–master-data=1 :从库
生产推荐:

mysqldump -uroot -p123 -A -B --master-data=2 --events --single-transaction|gzip>/opt/all.sql.gz

示例:

[root@jackroo ~]# mysqldump -uoldboy -p'oldboy123' oldboy>mydql_bak.sql
[root@jackroo ~]# egrep -v "#|\*|--|^$"  ./mydql_bak.sql 
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL,
  `age` tinyint(2) NOT NULL DEFAULT '0',
  `dept` varchar(16) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `inde_name_dept` (`name`,`dept`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
LOCK TABLES `student` WRITE;
UNLOCK TABLES;
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `index_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
LOCK TABLES `test` WRITE;
INSERT INTO `test` VALUES (4,'??'),(1,'oldboy'),(2,'oldgirl'),(3,'test'),(5,'?????‰');
UNLOCK TABLES;

2、备份多个库

[root@jackroo ~]# mysql -uroot -p123 -e "show databases;"|grep -Evi "database|info|mysql|perf"|sed -r 's#^([a-z].*$)#mysqldump -uroot -p123 --events -B \1|gzip >/opt/bak/\1.sql.gz#g'|bash

3、备份表
mysqldump -u 用户名 -p --compact 数据库名 表名1 表名2>备份的文件名

4、备份表结构
mysqldump -u 用户名 -p --compact -d 数据库名 表名1 表名2>备份的文件名

5、恢复数据库

mysql>use 数据库
mysql>source oldboy db.sql

法二:
mysql -uroot -p123 oldboy</opt/mysql_bak.sql

6、mysql进程和状态

mysql -uroot -p123 -e "show global status";

show status #查看当前回话的数据库的状态信息
show global status #查看整个数据库运行状态信息
show processlist #查看正在执行的sql语句,看不全
show full processlist #查看正在执行的完整sql语句,全
set global key_buffer_size =327721 #不重启数据库调整数据库参数,直接生效,重启后失效
show variables #查看数据库的参数信息,例如,my.conf里的参数生效情况

7、mysqlbinlog(解析mysql的binlog日志)

mysqlbinlog mysqlbinlog.0002 #用来记录mysql内部增删改查等对数据库有更新的内容的记录。
mysqlbinlog -d oldboy mysqlbinlog.0002>oldboy.sql #恢复oldboy库
#根据位置恢复
mysqlbinlog mysqlbin.000020 --start-position=365 --stop-position=456 -r pos.sql