mysql 快速导出_mysql 快速导入导出

随着数据库的数据越来越大,采用mysqldump 越来越慢,测试环境的机器配置不高,2G左右的数据导入进入像蜗牛一般,非常影响效率,这里采用一些改进的方法来比以前导入的速度提高好几倍,但日常配备应有更好的策略(如:根据binlog来实现增量备份。)

这里只是几个纯粹的脚本,并且适用的数据库也是数据量较小的数据库,频繁使用的话,可以再加以调整,实现更加自动化的方式。

下面直接贴脚本

1、先在生产数据库服务器上,执行下面备份数据脚本

[root@MYSQL-M super_restore_database]# cat much_process_backup_database.sh

#!/bin/bash

db_name=your_db_name

db_date=`date +%Y-%m-%d`

bak_dir=/back/back_data_dir

if [ ! -d ${bak_dir}/${db_name} ];then

mkdir -p ${bak_dir}/${db_name}

fi

function start_much_process_back_table{

for table in `mysql -uroot -pPasswd $db_name -e show tables |grep -v Tables_in`

do

if [ -f /tmp/$table.txt ];then

rm -rf /tmp/$table.txt

fi

/usr/local/mysql/bin/mysql  -uroot -pPasswd $db_name -e  SELECT * INTO OUTFILE '/tmp/${table}.txt'  FIELDS TERMINATED BY ','  LINES TERMINATED BY '/n' FROM  $table;

done

}

function start_process{

while ((1))

do

if [ `ps -ef |grep  mysql  |grep -v grep | grep -v mysqld_safe | grep -v basedir|wc -l` -lt 1 ];then

# 这个判断语句判断导出进程是否存在,如果不存在则表示已经全部导出

echo starting to process.......

cd /tmp/

tar cvzf ${db_name}.${db_date}.tar.gz  ./*.txt  rm -rf ./*.txt

echo process over....

mv ${db_name}.${db_date}.tar.gz $bak_dir/${db_name}

exit 0

else

echo not dump final....

sleep 5;sleep 5

fi

done

}

start_much_process_back_table

start_process

2、传输备份文件到测试数据库服务器上采用scp ,这里省略

3、在测试数据库上执行恢复脚本。

[root@MYSQL-MB super_restore_database]# cat much_process_restore_table.sh

#!/bin/bash

db_name=your_db_name

db_date=`date +%Y-%m-%d`

bak_dir=/back/back_data_dir

tar_file=${bak_dir}/${db_name}/$db_name.${db_date}.tar.gz

if [ ! -d ${bak_dir}/${db_name} ];then

mkdir -p ${bak_dir}/${db_name}

scp   192.168.1.33:${bak_dir}/${db_name}/$db_name.${db_date}.tar.gz   ${bak_dir}/${db_name}

fi

if [ -f ${tar_file} ];then

cd ${bak_dir}/${db_name}

tar zvxf $db_name.${db_date}.tar.gz

fi

function start_restore_table{

for table in `mysql -uroot -pcrhAdmin $db_name -e show tables |grep -v Tables_in`

do

/usr/local/mysql/bin/mysql -uroot -pPwd $db_name -e  truncate table  $table;

sleep 1 ;

/usr/local/mysql/bin/mysql -uroot -pPwd $db_name -e  load data INFILE '${bak_dir}/${db_name}/$table.txt' into table $table  FIELDS TERMINATED BY ',' LINES TERMINATED BY '/n';

done

}

function start_process{

while ((1))

do

if [ `ps -ef |grep  mysql  |grep -v grep | grep -v mysqld_safe | grep -v basedir|wc -l` -lt 1 ];then

echo load data file over...  rm -rf ${bak_dir}/${db_name}/$table.txt

exit 0

else

echo not restore final....sleep 5;sleep 5

fi

done

}

start_restore_table

start_process

4、附加上一个 数据库结构拷贝脚本

如果远端数据库可以连接,这个脚本直接连到远端数据库,导出数据库结构,导入到本地数据库,初始化数据库结构,然后利用上面的导入导出脚本,可以快速导入导入。

[root@MYSQL-MB super_restore_database]# cat copy_database_structure.sh

#!/bin/bash

# copy one database structure  to another database

# zhangkai@cairenhui.com 20120920

db_name=your_db_name

db_date=`date +%Y-%m-%d`

bak_dir=/back/back_data_dir

if [ ! -d ${bak_dir}/${db_name} ];then

mkdir -p ${bak_dir}/${db_name}

fi

function export_database_structure{

echo export the database  structure......;

sleep 1

/usr/local/mysql/bin/mysqldump  -hX.X.X.X   -uroot -pPwd  -d $db_name  >  ${bak_dir}/${db_name}/${db_name}.S.sql

echo  export ok....

}

function init_database_structure{

/usr/local/mysql/bin/mysql -uroot -pPwd -e drop database IF EXISTS $db_name

echo drop database ${db_name}  over......;

sleep 1

/usr/local/mysql/bin/mysql -uroot -pPwd -e create database $db_name

echo create database ${db_name} ok ......;

sleep 1

/usr/local/mysql/bin/mysql -uroot -pPwd  $db_name < ${bak_dir}/${db_name}/${db_name}.S.sql

echo import database ${db_name} structure ok......;

sleep 1

}

export_database_structure

init_database_structure

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现代软件工程系列 学生读后感 梦断代码

from:http://ttcs.spaces.live.com/blog/cns!C3759CC6FCEEBDD7!121.entry?sa147831050November 10梦断代码读后介绍 一&#xff0c;这本书讲了什么&#xff1f;软件是人们自以为最有把握&#xff0c;实则最难掌握的技术。作者罗森伯格对OSAF主持的Chandler项目进行长期调查&am…

现代软件工程系列 学生读后感 梦断代码 DTSlob (1)

1As you see, I’ve marked this post Number 1. Let’s leave the last post on “Dreaming in code” Number 0 :) This time, I will focus on the issue of PEOPLE, partly based on Chapter 0 and 1 in that book.Why focus on PEOPLE? Think about our group, think abo…

mysql 索引 简书_MySQL 索引

索引用于快速查找具有特定列值的行。如果没有索引&#xff0c;MySQL必须从第一行开始&#xff0c;然后读取整个表以查找相关行。表越大&#xff0c;成本越高。如果表中有相关​​列的索引&#xff0c;MySQL可以快速确定要在数据文件中间寻找的位置&#xff0c;而无需查看所有数…

现代软件工程系列 学生读后感 梦断代码 DTSlob (2)

http://dtslob.spaces.live.com/?_c11_BlogPart_BlogPartblogview&_cBlogPart&partqsamonth%3d12%26ayear%3d2008Dreaming in code Blog Post 3 Dreaming in Code这书&#xff0c;读着读着就到了尾声&#xff0c;然后惊讶的发现关于后面章节的内容和我的想法&#xff…

java 管理系统登陆完毕后关闭窗口_【求助】登录窗口登录成功后隐藏窗口

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼代码如下&#xff1a;import java.awt.*;import java.awt.event.*;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import javax.swing.*;import jdbc.Connect;public class login extends J…

python高级功能_python高级篇

1.切片功能&#xff1a;类似于java中的split方法。对list或者triple中几个值进行取出的过程。L [a,b,c,d] L[0:3] [a,b,c] #下标从0开始,取到第n-1个元素 L[-2:] [c,d] #倒序取值2.迭代(循环)功能&#xff1a;python中的可遍历对象只要是可迭代对象&#xff0c;例如list…

现代软件工程系列 学生读后感 梦断代码 SpringGreen

“拿来的代码所不能做到的部分&#xff0c;恰是项目与众不同的创新之处”。 《梦断代码》 终于看完了《梦段代码》。其实整本书就是讲图灵机的不可判定性————软件开发过程中&#xff0c;很多过程都不知道什么时候能不能结束&#xff0c;甚至说能不能做出来&#xff0c;这导…

qt 无法打开shell32_在Qt中用默认程序打开文件

用法: QProcess::execute("explorer 文件名");例: QProcess::execute("explorer c:\\123.txt");----------------------------------------------------------------------应该早有大虾发现了这个方法&#xff0c;只是我没搜到&#xff0c;于是有…

现代软件工程系列 学生读后感 梦断代码 布鲁克斯法则

《梦断代码》读后感&#xff08;第1~6章&#xff09; 书名&#xff1a;"Dreaming in Code"&#xff0c;作者&#xff1a;Scott Rosenberg&#xff08;中译本&#xff1a;《梦断代码》&#xff0c;翻译&#xff1a;韩磊&#xff0c;电子工业出版社出版&#xff09;。第…

现代软件工程系列 学生的精彩文章 (6) 项目总结

http://lunarthu.spaces.live.com/?_c11_BlogPart_pagedirNext&_c11_BlogPart_handlecns!48EA3793D3DA17C8!211&_c11_BlogPart_BlogPartblogview&_cBlogPartJanuary 10学做一个PM By Cheng Lu 对于我们的SmartMe&#xff0c;我是真正倾注了感情的。看到今天SmartM…

sqlite查询空日期类型_SQLite比较日期

我有这个sql语句&#xff1a;SELECT Geburtsdatum FROM KundeWHERE Geburtsdatum BETWEEN 1993-01-01 AND 2000-01-01但我得到一些奇怪的结果,如&#xff1a;2.02.1990“Geburtsdatum”是DATE任何建议或解决方案&#xff1f;我的表格结构&#xff1a;CREATE TABLE Kunde (Kunde…

现代软件工程系列 学生读后感 梦断代码 软件难做

http://cid-064ec84e17924332.spaces.live.com/blog/cns!64EC84E17924332!173.entryDecember 06读《梦断代码》 读《梦断代码》的感想 《梦断代码》详细叙述了OSAF的Chandler项目从2001年开创以来直至2005年间的进展状况&#xff0c;真实展示了Chandler项目的艰难的开发过程&am…

现代软件工程系列 结对编程 (II) 电梯调度程序

[很多同学完成了上一个结对编程项目后, 很想知道下一个项目是什么, 我们这次要练习如何设计 接口, 测试框架, 和算法] 现代软件工程系列 结对编程 (II) 电梯调度程序 ------- Pair Project II Elevator Scheduler Design and implement an Elevator Scheduler to aim for …

java 中violate_Java中的Volatile关键字

Java的volatile关键字用于标记一个Java变量为“在主存中存储”。更确切的说&#xff0c;对volatile变量的读取会从计算机的主存中读取&#xff0c;而不是从CPU缓存中读取&#xff0c;对volatile变量的写入会写入到主存中&#xff0c;而不只是写入到CPU缓存。实际上&#xff0c;…

现代软件工程系列 创新靠学分

如何在学校里讲创新, 这是一个老问题。 但是天朝的教育体制总有办法&#xff0c;请看: http://news.163.com/10/1125/03/6MABIS4H00014AED.html 武汉一高校设"创新学分" 不搞创新不能毕业 去年秋季&#xff0c;武汉科技大学中南分校出台《学籍管理规定》&#xff0c;…

java 如何发提示_消息提醒-如何实现收到待办给QQ发送提醒?

一、前期准备一台windows服务器(用于运行QQ机器人)下载QQ机器人框架二、QQ机器人配置1、解压前面下载的机器人框架和httpapi2、打开解压后的 小栗子框架.exe3、在用户列表右击选择添加单个4、添加后右击点添加后的账号选择登录选中QQ5、点击应用中心>点击导入插件>选中前…

顶级程序员的心得 - Coders at Work

这篇博客经历了 CSDN 的历次改版后&#xff0c;格式已经坏了&#xff0c; 我重新写了一篇&#xff0c;重排了格式&#xff1a; 顶级程序员的心得 –– Coders at Work_SoftwareTeacher的专栏-CSDN博客顶级程序员的心得 –– Coders at Work我2009年读了 “Coders at Work”, …

jdbc mysql myeclipse_关于JDBC连接MySQL的问题,我一直解决不了(Myeclipse 环境下)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼package org.mlj.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import java.net.UnknownHostException;import java.net.InetAddress.*; public class…

现代软件工程课件 需求分析 如何提出靠谱的项目建议 NABCD

《构建之法 - 现代软件工程》课件 互联网时代对于创新者来说, 既是一个伟大的时代, 又是一个糟糕的时代。 你有很多机会做出影响世界的产品, 但是, 似乎任何想法都被别人想到过了, 做出来了, 上市了, 移植到各种平台上去了… 那么我们后来人除了羡慕别人生得早, 还有什么机…

java禁止数据库写入事务_Java -- JDBC 事务处理, 事务的隔离级别 脏读 不可重复读 等......

1. 事务指逻辑上的一组操作&#xff0c;组成这组操作的各个单元&#xff0c;要不全部成功&#xff0c;要不全部不成功。数据库开启事务命令•start transaction开启事务•Rollback回滚事务•Commit提交事务JDBC控制事务语句•Connection.setAutoCommit(false); //start transa…