日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2024/7/23 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的mysql 快速导出_mysql 快速导入导出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。