MySQL数据迁移

tables.txt文件结构

表名1
表名2
表名3

导出脚本

  • 导出脚本.bat(win版本)
@echo off & setlocal enabledelayedexpansion

for /f %%i in (tables.txt) do ( set table=%%i
	echo "dump table -- !table! --"
	mysql -u账号 -p密码 源数据库名 -e "SELECT * INTO OUTFILE 'd:/MySQL/Uploads/!table!.txt' FIELDS TERMINATED BY ',' FROM !table!"
)
pause
  • 导出脚本.sh(linux版本)
#!/bin/bash

while read line
do
        mysql -u账号 -p密码 源数据库名 -e "SELECT * INTO OUTFILE '/var/lib/mysql-files/$line.txt' FIELDS TERMINATED BY ',' FROM $line"
done < tables.txt

导入脚本

  • 导入脚本.t(linux版本sh
#!/bin/bash

while read line
do
        mysql -u账号 -p密码 新数据库名 -e "LOAD DATA INFILE '/var/lib/mysql-files/$line.txt' INTO TABLE $line FIELDS TERMINATED BY ','"
done < tables.txt

数据库本地备份和恢复

# 新建目录
mkdir -p /home/20190620;
# 导出数据
/usr/bin/mysqldump -u账号 -p密码 --databases 数据库名 --tables 表名  --no-create-info >/home/20190620/表名.sql;
# 关闭bin-log
set session sql_log_bin=0;
# 验证是否关闭bin-log
show variables like '%sql_log_bin%'; 
# 清空表数据
truncate table upp_business02;
# 恢复
source /home/20190620/表名.sql;
# 优化存储
alter table 表名 engine=InnoDB;
# 优化器优化
# analyze table 表名
posted @ 2019-05-08 13:58  牛哥聊技术  阅读(2036)  评论(0编辑  收藏  举报