python复制mysql表_MySQL中表的复制以及大型数据表的备份教程
CREATE TABLE newadmin
(
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
)
AS
(
SELECT * FROM admin
)
MySQL大表备份这里所说的大表是超过4G以上的表,我目前见到过最大为60多G的单表,对于这种表每天一个全备可以说是一件很痛苦的事。
那么有没有办法,可以实现一个全备加增量的备份呢。
答案当然是有的。
在常规环境直可以用全备加binlog一同保存。
这种环境大多可以用一个Slave上进行备份操作。
思路:
先停止Slave的同步,刷新buffer,对于Innodb 如果想直接拷贝还需要把innodb_max_dirty_pages_pct这个值置为零,然后在执行一次flush tables;
就可以cp了。如果是Dump出来可以这这样做。
这个方案目前来看也是比较完美的,但一个并发力度大的应用一天的Binlog有可能能达到50G-60G,这样的系统开Binlog可以说是对系统的IO性能及整体性能都有早影响。
另一种方案就是基于表的上数据的罗辑变化进行备份。
主体思想:全备加逻辑备份。
逻辑备份:当有数据插入时,利用触发器同时写入另一个表,当数据更新时,我们同时记录一下,更新后的数据情况到另一个表。
当有删除操作时,只需要记录一下,删除的主建ID就行。
例子:
要备份的表:
CREATE TABLE `wubx` ( `id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL default '0',
`friend_id` int(11) NOT NULL default '0',
`dir_id` int(11) NOT NULL default '0',
`created` int(11) NOT NULL default '0',
UNIQUE KEY `id` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
对于这个表我们需要建一个记录有新数据变化的表为:
mysql> create table wubx_ii like wubx;
Query OK, 0 rows affected (0.00 sec)
mysql> create table wubx_uu like wubx;
Query OK, 0 rows affected (0.00 sec)
mysql> create table wubx_dd ( id int(11));
Query OK, 0 rows affected (0.00 sec)
建立相应的触发程器
记录insert的操作:
delimiter //
create trigger wubx_ii after insert on wubx for each row begin insert into wubx_ii set id=new.id,user_id=new.user_id,friend_id=new.friend_id,dir_id=new.dir_id,created=new.created; end//
记录update的操作:
create trigger wubx_uu after update on wubx for each row begin replace into wubx_uu set id=new.id,user_id=new.user_id,friend_id=new.friend_id,dir_id=new.dir_id,created=new.created; end//
记录删除的操作:
create trigger wubx_dd after delete on wubx for each row begin insert into wubx_dd values(old.id); end//
delimiter ;
操作:
先备份原始表wubx里的数据:
进行:
insert into wubx values(”,1,10,1,1198464252);
insert into wubx values(”,1,11,1,1198464252);
insert into wubx values(”,1,2,1,1198464252);
insert into wubx values(”,2,10,1,1198464252);
insert into wubx values(”,2,12,1,1198464252);
insert into wubx values(”,3,12,1,1198464252);
update wubx set dir_id=5 where user_id=3;
update wubx set dir_id=4 where user_id=3;
delete from wubx where user_id=2 and friend_id=12;
现在要实现增量备份:
取出insert的操作:
mysql -e ” select concat(‘replace into wubx set id=',id,',user_id=',user_id,',friend_id=',friend_id,',dir_id=',dir_id,',created=',created,';') from wubx_ii;”>>backup_ii.sql
取出update的操作:
mysql -e ” select concat(‘update wubx set user_id=',user_id,',friend_id=',friend_id,',dir_id=',dir_id,',created=',created,' where id=',id,';') from wubx_uu;”>>backup_uu.sql
取出delete的操作:
mysql -e “select concat(‘delete from wubx where id=',id,';') from wubx_dd”>>backup_dd.sql
这样利用这些逻辑的备份加是完毕备份恢复到当前恢复点就很容易了。这里不演示。
这个操作最好用一个程序完成,当取完罗辑备份后,做一个标记点去清楚备份完的数据,以保证,逻辑记录表里的数据量比较少是正确的。
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
相关文章
相关视频
网友评论
文明上网理性发言,请遵守 新闻评论服务协议我要评论
立即提交
专题推荐独孤九贱-php全栈开发教程
全栈 100W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
玉女心经-web前端开发教程
入门 50W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
天龙八部-实战开发教程
实战 80W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
php中文网:公益在线php培训,帮助PHP学习者快速成长!
Copyright 2014-2020 https://www.php.cn/ All Rights Reserved | 苏ICP备2020058653号-1
python复制mysql表_MySQL中表的复制以及大型数据表的备份教程相关推荐
- mysql 备份表_MySQL中表的复制以及大型数据表的备份教程
表复制mysql拷贝表操作我们会常常用到,下面就为您详细介绍几种mysql拷贝表的方式,希望对您学习mysql拷贝表方面能够有所帮助. 假如我们有以下这样一个表: id username passwo ...
- mysql如何恢复单表_MySQL如何恢复单库或单表,以及可能遇到的坑
前言: MySQL 逻辑备份工具最常用的就是 mysqldump 了,一般我们都是备份整个实例或部分业务库.不清楚你有没有做过恢复,恢复场景可能就比较多了,比如我想恢复某个库或某个表等.那么如何从全备 ...
- python使用pandas基于时间条件查询多个oracle数据表
python使用pandas基于时间条件查询多个oracle数据表 目录 python使用pandas基于时间条件查询多个orcale数据表 #orcale数据连接
- 《从Excel到Python——数据分析进阶指南》一第1章 生成数据表
本节书摘来自异步社区<从Excel到Python--数据分析进阶指南>一书中的第1章,第1.1节,作者 王彦平(蓝鲸),更多章节内容可以访问云栖社区"异步社区"公众号查 ...
- MySQL之数据表(数据库的创建与删除、数据表的创建与删除)
MySQL之数据表 创建数据库 删除数据库 认识数据表 创建数据表 删除数据表 创建数据库 在创建表之前,一定要先创建用来存储表的数据库.数据库中包含数据表.视图.索引.查询.规则.默认值等数据库 ...
- python导入sas数据集_运用import过程进行SAS数据导入完全实用教程
运用import过程进行SAS数据导入完全实用教程 1 单个规范格式文件导入. 对单个文件进行导入是我们遇到最多的情况,主要有以下几种: 1.1 对指定分隔符('|',' ','!','ab'等)数据 ...
- mysql复制多行_mysql中的复制方式总结(半同步复制,并行复制,多源复制)
一.MySQL主从复制(异步复制,默认) Mysql主从复制原理 Mysql的复制原理大致如下: 1.主库记录binlog日志 在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志b ...
- 复制mysql 搬家_mysql数据库搬家,可以直接复制数据库文件吗
诶?这项技术又是什么玩意(What)? 这项技术为什么会存在?我们已经有那么多解决方案(Method)了,我们为什么要用它(Why)? 如果这项技术那么好且我们正好有场景可以用到这项技术,且能使我们的 ...
- mysql创建xs表_mysql中表的应用
.创建数据库 create database 库名 create database if not exists 库名 创建库的同时指定字符集,校对规则 create database mydb cha ...
最新文章
- python访问多个网站_Python多并发访问网站
- elasticJob分片跑批
- 机器学习知识点(七)决策树学习算法Java实现
- 关于Python编程的一些问答
- HDU 4705 Y (树形DP)
- 如何更改从Outlook发送的电子邮件中的“答复”地址
- ZOJ3805Machine(二叉树左右子树变换)
- argb可以和rgb同步吗_更冷更静更降温!第三代双腔设计,酷冷至尊海魔240水冷岂止RGB...
- 奥维地图(OMAP)中坐标为什么有偏移?如何基于WGS84或GCJ02的经纬度坐标生成kml?怎么导出图上一个标签点的WGS84经纬度坐标?
- LOIC低轨道离子拒绝服务攻击
- 计算机考研复试难,艰难与快乐:2008年重庆邮电大学计算机考研复试经历
- 【Eigen中基本和常用函数】
- clustream java_数据流聚类算法
- 手机浏览器devtools_浏览器DevTools的秘诀:启动,网络和性能
- error An unexpected error occurred “httpsregistry.npmjs.orgd3-geo-proje
- intel UHD graphics 620/630 -win7 驱动
- 笔记本上的小键盘计算机怎样用,电脑怎么调出小键盘打字?电脑调出小键盘打字的方法...
- pci 中断冲突_如何解决IRQ冲突
- 蓝桥杯——单片机赛道
- 展厅安装摄像头优化问题
热门文章
- SpringBoot之打包错误
- hadoop开启后jps只有jps一个进程
- tensorflow2.0 图像处理项目_UCOSIII移植——STM32F769I 图像处理能力评测之五
- javamailsender注入失败_springboot拦截异常信息发送邮件提醒
- 天翼对讲机写频软件_对讲机常见问题解决方法
- python语音开发库-各种 Python 库/模块/工具
- python 查看文件名_python 查看文件名和文件路径
- python中使用什么获取两个集合的补集_python中求两个List的交集、并集和差集
- 一般将来时语法课教案_优秀教案人教版必修二Unit2——语法专题课训练
- ipad python编程软件_在iPad中运行Python