青岛做网站的公司哪家好一点,高大上强企业网站,谈谈网站建设的主要内容,园林景观设计公司名字随着数据库的数据越来越大#xff0c;采用mysqldump 越来越慢#xff0c;测试环境的机器配置不高#xff0c;2G左右的数据导入进入像蜗牛一般#xff0c;非常影响效率#xff0c;这里采用一些改进的方法来比以前导入的速度提高好几倍#xff0c;但日常配备应有更好的策略…随着数据库的数据越来越大采用mysqldump 越来越慢测试环境的机器配置不高2G左右的数据导入进入像蜗牛一般非常影响效率这里采用一些改进的方法来比以前导入的速度提高好几倍但日常配备应有更好的策略(如根据binlog来实现增量备份。)这里只是几个纯粹的脚本并且适用的数据库也是数据量较小的数据库频繁使用的话可以再加以调整实现更加自动化的方式。下面直接贴脚本1、先在生产数据库服务器上执行下面备份数据脚本[rootMYSQL-M super_restore_database]# cat much_process_backup_database.sh#!/bin/bashdb_nameyour_db_namedb_datedate %Y-%m-%dbak_dir/back/back_data_dirif [ ! -d ${bak_dir}/${db_name} ];thenmkdir -p ${bak_dir}/${db_name}fifunction start_much_process_back_table{for table in mysql -uroot -pPasswd $db_name -e show tables |grep -v Tables_indoif [ -f /tmp/$table.txt ];thenrm -rf /tmp/$table.txtfi/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))doif [ 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 ./*.txtecho process over....mv ${db_name}.${db_date}.tar.gz $bak_dir/${db_name}exit 0elseecho not dump final....sleep 5;sleep 5fidone}start_much_process_back_tablestart_process2、传输备份文件到测试数据库服务器上采用scp 这里省略3、在测试数据库上执行恢复脚本。[rootMYSQL-MB super_restore_database]# cat much_process_restore_table.sh#!/bin/bashdb_nameyour_db_namedb_datedate %Y-%m-%dbak_dir/back/back_data_dirtar_file${bak_dir}/${db_name}/$db_name.${db_date}.tar.gzif [ ! -d ${bak_dir}/${db_name} ];thenmkdir -p ${bak_dir}/${db_name}scp 192.168.1.33:${bak_dir}/${db_name}/$db_name.${db_date}.tar.gz ${bak_dir}/${db_name}fiif [ -f ${tar_file} ];thencd ${bak_dir}/${db_name}tar zvxf $db_name.${db_date}.tar.gzfifunction start_restore_table{for table in mysql -uroot -pcrhAdmin $db_name -e show tables |grep -v Tables_indo/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))doif [ ps -ef |grep mysql |grep -v grep | grep -v mysqld_safe | grep -v basedir|wc -l -lt 1 ];thenecho load data file over... rm -rf ${bak_dir}/${db_name}/$table.txtexit 0elseecho not restore final....sleep 5;sleep 5fidone}start_restore_tablestart_process4、附加上一个 数据库结构拷贝脚本如果远端数据库可以连接这个脚本直接连到远端数据库导出数据库结构导入到本地数据库初始化数据库结构然后利用上面的导入导出脚本可以快速导入导入。[rootMYSQL-MB super_restore_database]# cat copy_database_structure.sh#!/bin/bash# copy one database structure to another database# zhangkaicairenhui.com 20120920db_nameyour_db_namedb_datedate %Y-%m-%dbak_dir/back/back_data_dirif [ ! -d ${bak_dir}/${db_name} ];thenmkdir -p ${bak_dir}/${db_name}fifunction 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.sqlecho export ok....}function init_database_structure{/usr/local/mysql/bin/mysql -uroot -pPwd -e drop database IF EXISTS $db_nameecho drop database ${db_name} over......;sleep 1/usr/local/mysql/bin/mysql -uroot -pPwd -e create database $db_nameecho create database ${db_name} ok ......;sleep 1/usr/local/mysql/bin/mysql -uroot -pPwd $db_name ${bak_dir}/${db_name}/${db_name}.S.sqlecho import database ${db_name} structure ok......;sleep 1}export_database_structureinit_database_structure