mysqldump
2016-01-28 10:36
465 查看
mysqldump工具是mysql发行一个基于sql层备份的工具
1.语法
备份一个或多个表:
#mysqldump [options] db_name [table_name……]
备份一个或多个库:
#mysqldump [options] –databases dbname……
备份所有数据库:
#mysqldump [options] –all-databases
2.工作流程
3.选项
A)mysqldump会依次从下列配置文件中读取默认:
1. /etc/my.cnf
2. /etc/mysql/my.cnf
3. /usr/etc/my.cnf
4. ~/.my.cnf
B)重要参数
-d 只导出表结构
# mysqldump -d wwb dump_test > test.sql
DROP TABLE IF EXISTS `dump_test`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `dump_test` (
`id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
-t只导出表数据
#mysqldump -t wwb dump_test > test.sql
LOCK TABLES `dump_test` WRITE;
/*!40000 ALTER TABLE `dump_test` DISABLE KEYS */;
INSERT INTO `dump_test` VALUES (1),(2);
/*!40000 ALTER TABLE `dump_test` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
-c insert 出来完整格式
mysqldump -t -c wwb dump_test > test.sql
-- Dumping data for table `dump_test`
LOCK TABLES `dump_test` WRITE;
/*!40000 ALTER TABLE `dump_test` DISABLE KEYS */;
INSERT INTO `dump_test` (`id`) VALUES (1),(2);
/*!40000 ALTER TABLE `dump_test` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
--where sql语句中以where选型筛选
#mysqldump -t --where="id<2" wwb dump_test > test.sql
LOCK TABLES `dump_test` WRITE;
/*!40000 ALTER TABLE `dump_test` DISABLE KEYS */;
INSERT INTO `dump_test` VALUES (1);
/*!40000 ALTER TABLE `dump_test` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
--single-transaction --master-data MySQL复制时候搭建从库时候用
#mysqldump --single-transaction --master-data=2 -A> full_backup.sql
--single-transaction
InnoDB 表在备份时,通常启用选项 --single-transaction 来保证备份的一致性,实际上它的工作原理是设定本次会话的隔离级别为:REPEATABLE READ,以确保本次会话(dump)时,不会看到其他会话已经提交了的数据
--master-data
当这个参数的值为1的时候,mysqldump出来的文件就会包括CHANGE MASTER TO这个语句,等于2是是以注释的形式出现CHANGE MASTER TO语句
打开general_log会发现隔离级别设置成了RR
273 Query /*!40100 SET @@SQL_MODE='' */
273 Query /*!40103 SET TIME_ZONE='+00:00' */
273 Query FLUSH /*!40101 LOCAL */ TABLES
273 Query FLUSH TABLES WITH READ LOCK
273 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
273 Query START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
273 Query SHOW VARIABLES LIKE 'gtid\_mode'
273 Query SHOW MASTER STATUS
273 Query UNLOCK TABLES
--master-data=2 注释形式出现CHANGE MASTER TO语句
-- Position to start replication or point-in-time recovery from
-- CHANGE MASTER TO MASTER_LOG_FILE='mybinlog.000003', MASTER_LOG_POS=199;
--ignor
9ffa
e-table不备份某个表
# mysqldump --ignore-table=wwb.t1 wwb > full_backup.sql
# grep t1 full_backup.sql
-- Table structure for table `t10`
DROP TABLE IF EXISTS `t10`;
CREATE TABLE `t10` (
-- Dumping data for table `t10`
LOCK TABLES `t10` WRITE;
/*!40000 ALTER TABLE `t10` DISABLE KEYS */;
INSERT INTO `t10` VALUES (1,1),(3,1),(5,3),(7,6),(10,8);
/*!40000 ALTER TABLE `t10` ENABLE KEYS */;
并无t1表的信息
总结:mysqldump单进程备份工具并不完美,而且在数据比较大的时候(100G以上)会比较困难,而且会造成热数据的冲刷
1.语法
备份一个或多个表:
#mysqldump [options] db_name [table_name……]
备份一个或多个库:
#mysqldump [options] –databases dbname……
备份所有数据库:
#mysqldump [options] –all-databases
2.工作流程
3.选项
A)mysqldump会依次从下列配置文件中读取默认:
1. /etc/my.cnf
2. /etc/mysql/my.cnf
3. /usr/etc/my.cnf
4. ~/.my.cnf
B)重要参数
-d 只导出表结构
# mysqldump -d wwb dump_test > test.sql
DROP TABLE IF EXISTS `dump_test`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `dump_test` (
`id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
-t只导出表数据
#mysqldump -t wwb dump_test > test.sql
LOCK TABLES `dump_test` WRITE;
/*!40000 ALTER TABLE `dump_test` DISABLE KEYS */;
INSERT INTO `dump_test` VALUES (1),(2);
/*!40000 ALTER TABLE `dump_test` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
-c insert 出来完整格式
mysqldump -t -c wwb dump_test > test.sql
-- Dumping data for table `dump_test`
LOCK TABLES `dump_test` WRITE;
/*!40000 ALTER TABLE `dump_test` DISABLE KEYS */;
INSERT INTO `dump_test` (`id`) VALUES (1),(2);
/*!40000 ALTER TABLE `dump_test` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
--where sql语句中以where选型筛选
#mysqldump -t --where="id<2" wwb dump_test > test.sql
LOCK TABLES `dump_test` WRITE;
/*!40000 ALTER TABLE `dump_test` DISABLE KEYS */;
INSERT INTO `dump_test` VALUES (1);
/*!40000 ALTER TABLE `dump_test` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
--single-transaction --master-data MySQL复制时候搭建从库时候用
#mysqldump --single-transaction --master-data=2 -A> full_backup.sql
--single-transaction
InnoDB 表在备份时,通常启用选项 --single-transaction 来保证备份的一致性,实际上它的工作原理是设定本次会话的隔离级别为:REPEATABLE READ,以确保本次会话(dump)时,不会看到其他会话已经提交了的数据
--master-data
当这个参数的值为1的时候,mysqldump出来的文件就会包括CHANGE MASTER TO这个语句,等于2是是以注释的形式出现CHANGE MASTER TO语句
打开general_log会发现隔离级别设置成了RR
273 Query /*!40100 SET @@SQL_MODE='' */
273 Query /*!40103 SET TIME_ZONE='+00:00' */
273 Query FLUSH /*!40101 LOCAL */ TABLES
273 Query FLUSH TABLES WITH READ LOCK
273 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
273 Query START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
273 Query SHOW VARIABLES LIKE 'gtid\_mode'
273 Query SHOW MASTER STATUS
273 Query UNLOCK TABLES
--master-data=2 注释形式出现CHANGE MASTER TO语句
-- Position to start replication or point-in-time recovery from
-- CHANGE MASTER TO MASTER_LOG_FILE='mybinlog.000003', MASTER_LOG_POS=199;
--ignor
9ffa
e-table不备份某个表
# mysqldump --ignore-table=wwb.t1 wwb > full_backup.sql
# grep t1 full_backup.sql
-- Table structure for table `t10`
DROP TABLE IF EXISTS `t10`;
CREATE TABLE `t10` (
-- Dumping data for table `t10`
LOCK TABLES `t10` WRITE;
/*!40000 ALTER TABLE `t10` DISABLE KEYS */;
INSERT INTO `t10` VALUES (1,1),(3,1),(5,3),(7,6),(10,8);
/*!40000 ALTER TABLE `t10` ENABLE KEYS */;
并无t1表的信息
总结:mysqldump单进程备份工具并不完美,而且在数据比较大的时候(100G以上)会比较困难,而且会造成热数据的冲刷
相关文章推荐
- MySQL日期时间函数大全
- pdo_mysql安装
- MySQL开发规范与使用技巧总结
- mysql 添加索引 mysql 如何创建索引
- MySQL执行状态分析
- navicat for mysql 10.1.7注册码
- mysql中的null字段值的处理及大小写问题
- 深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析
- mysql 5.7.10安装配置
- mysql5.7.10安装
- MySQL恢复中的几个问题解决方法
- MySQL性能优化的最佳经验
- Mysql 表分区
- mysql加入行号
- mysql汉字首字母
- mysql 替换某个字段中的某个字符
- Cent OS 7 安装 mysql-5.7
- mysql root修改密码
- MySql索引算法原理解析(通俗易懂,只讲B-tree)
- mysql 5.7.7以后需要初始化数据库