mysqldump
来源:互联网 发布:网络科学导论 百度云 编辑:程序博客网 时间:2024/06/07 00:32
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;
--ignore-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以上)会比较困难,而且会造成热数据的冲刷
- mysqldump
- MysqlDump
- mysqldump
- mysqldump
- mysqldump
- mysqldump
- mysqldump
- mysqldump
- mysqldump
- mysqldump
- mysqldump
- mysqldump
- mysqldump
- mysqldump
- mysqldump
- mysqldump
- mysqldump
- mysqldump
- DevExpress 使用 XtraTabbedMdiManager 控件以 Tab样式加载 Mdi窗体并合并 RibbonControl 解决方案
- 基于linux-4.3.2的ZYNQ的时钟驱动架构和原理解析
- CMMotionActivityManager
- Android的Service基本编写方法
- 高德运维基于阿里云的最佳实践
- mysqldump
- Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框
- CMAltimeter
- toolbar配合DrawerLayout实现酷炫的菜单滑动效果
- IOS smartWatch软件设计
- POJ 3122(二分)
- matlab 自动创建文件夹
- 打包SDK,对应的资源配置
- web工程中普通 java 类使用 properties 配置文件中属性