导出数据
[root@sf105113 bin]# mysqldump -h127.0.0.1 -P3306 -uroot -p --add-locks -q dbname > dbname.sql
//参数依次为:-h 主机 -p 端口 -u 用户名 -p 密码 --add-locks:导出过程中锁定表,完成后回解锁。
-q:不缓冲查询,直接导出至标准输出
2. ? ? ? 只导出数据库表结构
[root@sf105113 bin]# mysqldump -h127.0.0.1 -P3306 -uroot -p--add-locks -q -d dbname > dbname.sql
//-d:只导出表结构,不含数据
???? 3.?????? 只导出数据
[root@sf105113 bin]# mysqldump -h127.0.0.1 -P3306 -uroot -ppassword --add-locks -q -t dbname.user > dbname.sql
//-t:只导出表数据,不含结构
1.只导出表结构 不导出数据
mysqldump --opt -d 数据库名 -u root -p -h 地址> xxx.sql
2.只导出数据 不导出表结构
mysqldump -t 数据库名 -u root -p -h 地址 > xxx.sql
mysqldump -u${user} -p${passwd} --no-create-info --database ${dbname} --table ${tablename} > ${tablename}.sql
或者
mysqldump -u${user} -p${passwd} -t ${dbname} > ${dbname}.sql
3.导出数据和表结构
mysqldump datang-highSpeed -u root -p -h 地 > datang-highSpeed.sql
mysqldump datang-highspeed -u root -p > datang-highSpeed.sql
4.导出特定表结构
mysqldump -u root -p -h 地址 -B 数据库名 --table 表名 > xxx.sql
5.导入mysql数据
mysql -u root -p 数据库名 < xxx.sql
导出表
mysqldump -u 账号 -p -h 连接地址 -P 端口 数据库名称 xx表 > xxx.sql
导入表
mysql -u 账号 -p -h 连接地址 -P 端口 数据库名称 < ./xxx.sql
Doris1.0支持mysqldump工具导出表结构和数据。
导出test数据库中的students表:mysqldump -h127.0.0.1 -P 9030 -uroot --no-tablespaces --databases test --tables students > students2.sql
导出test数据库中的students表结构:mysqldump -h127.0.0.1 -P 9030 -uroot --no-tablespaces --databases test --tables students ?--no-data > students2.sql
导出test库中所有的表:mysqldump -h127.0.0.1 -P 9030 -uroot --no-tablespaces --databases test
导出所有数据库和表:mysqldump -h127.0.0.1 -P 9030 -uroot --no-tablespaces --all-databases
导出的sql文件可以source命令导入Doris中
?
导出用户需要有导出对象的权限,例如导出表要有select权限、导出视图要有show view权限、导出触发器要有trigger权限、需要锁表时要有lock tables权限等。
如果dump文件中包含了GTID信息,则无法导入到未启用GTID的数据库(低于5.6.9版本的数据库不支持GTID,因此也无法导入到这些库中)。
导出所有db结构和数据
mysqldump -uroot -p?-A?> /data/bak/all.sql
仅导出所有db结构
mysqldump -uroot -p -A?-d?> /data/bak/all_struct.sql
仅导出所有db数据不导表结构
mysqldump -uroot -p -A?-t?> /data/bak/all_data.sql
导出单个db结构和数据
mysqldump -uroot -p?mydb?> /data/bak/mydb.sql
仅导出单个db结构
mysqldump -uroot -p?mydb -d?> /data/bak/mydb.sql
仅导出单个db数据
mysqldump -uroot -p?mydb -t?> /data/bak/mydb.sql
导出多个db结构和数据(--databases参数,数据,结构单独导出方法同上)
mysqldump -uroot -p?--databases db1 db2?> /data/bak/muldbs.sql
导出指定db某张表结构及数据(数据,结构单独导出方法同上)
mysqldump -uroot -p?dbname test?> db.sql
导出指定db中多张表(test1,test2,test3)结构及数据
mysqldump -uroot -p?dbname test1 test2 test3?> db.sql
排除部分表,导出DB中其余表结构和数据
mysqldump -uroot -p?mydb --ignore-table=mydb.test1 --ignore-table=mydb.test2?> /data/bak/mydb.sql
指定where条件导出表的部分数据
mysqldump -uroot?-w "id=6032"?-p db_name??tbl_name > /tmp/where.sql
导入用户需要有执行备份文件中语句的权限(ddl、dml等)。
mysql -uroot -p < test_backup.sql
mysql -uroot -p
source /home/mysql/test_backup.sql
?
导入所有数据库
导入单个数据库
mysql>use mydb
mysql>source /data/bak/mydb.sql
mysql -uroot -p123456 mydb < /data/bak/mydb.sql
导入单个数据库的多个表
mysql>use mydb
mysql>source /data/bak/multables.sql
mysql -uroot -p123456 mydb < /data/bak/multables.sql
导入多个数据库(一个备份文件里有多个数据库的备份,此时不需要指定数据库)
mysql>source /data/bak/muldbs.sql
mysql -uroot -p123456 < /data/bak/muldbs.sql
有时将数据库迁移新环境时,业务方会要求修改新库库名和用户名,如果源库中有视图,存储过程、函数、触发器、事件等对象,导入时会遇到问题,因为这些对象definer中可能会写明了用户,创建语句中指定了库名。
这种情况下,可以先做一次全量导入,然后删掉这些问题对象,再分别用导入创建语句的方式导入这些对象。
创建视图的时候一般会带上库名和definer的定义,如果迁移数据时,目标库的库名、用户名和源库的不一样,则视图迁移会失败。?如果遇到这种情况,需要分2步导出,第1步迁移表数据,第2步迁移视图。
select table_name from information_schema.tables where table_schema='mytest' and table_type!='view';
mysqldump --set-gtid-purged=OFF -uroot -p --single-transaction -R --triggers --events?--max_allowed_packet=1G mytest T1 T2 T3 T4
SELECT CONCAT("CREATE VIEW ",TABLE_NAME," as ",VIEW_DEFINITION,";") FROM information_schema.VIEWS where table_schema='mytest';
SELECT CONCAT("DROP VIEW IF EXISTS `",TABLE_SCHEMA,"`.`",TABLE_NAME,"`;\nCREATE VIEW `", TABLE_SCHEMA,"`.`",TABLE_NAME,"` as ",VIEW_DEFINITION,";") FROM information_schema.VIEWS where table_schema='mytest';
一般情况下,-R ?--triggers --events 可以正常导出存储过程、函数、触发器等信息,但是如果创建的时候也写了definer和库名,需要用下面的方式导出。
--查看存储过程
select routine_name,routine_type from information_schema.routines where routine_schema='mytest' and routine_type='PROCEDURE';--查看函数
select routine_name,routine_type from information_schema.routines where routine_schema='mytest' and routine_type='FUNCTION';--查看触发器
select trigger_name from information_schema.triggers where trigger_schema='mytest';--查看事件
select event_name from information_schema.events where event_schema='mytest';
导出存储过程和函数
SELECT CONCAT("DROP ",TYPE," IF EXISTS `",db,"`.`", NAME,"`;\nDELIMITER ;;\nCREATE ",TYPE," `",db,"`.`",NAME,"`(", param_list,") ",IF ( TYPE = "FUNCTION", CONCAT ("RETURNS ", RETURNS, "\n"),"\n"), body_utf8,";;\nDELIMITER ;") FROM ?mysql.proc;
导出触发器
SELECT CONCAT("DROP TRIGGER IF EXISTS `",TRIGGER_SCHEMA, "`.`", TRIGGER_NAME,"`;\nDELIMITER ;;\nCREATE TRIGGER `",TRIGGER_SCHEMA,"`.`",TRIGGER_NAME,"` ",ACTION_TIMING," ",EVENT_MANIPULATION," ON `",EVENT_OBJECT_SCHEMA,"`.`",EVENT_OBJECT_TABLE,"` FOR EACH ROW\n",ACTION_STATEMENT,";;\nDELIMITER ;") FROM information_schema.TRIGGERS;
导出事件
SELECT ?CONCAT( ? "DROP EVENT IF EXISTS `", ? EVENT_SCHEMA, ? "`.`", ? EVENT_NAME, ? "`;\nDELIMITER ;;\nCREATE EVENT `", ? EVENT_SCHEMA, ? "`.`", ? EVENT_NAME, ? "` ON SCHEDULE EVERY ", ? INTERVAL_VALUE, ? " ", ? INTERVAL_FIELD, ? " STARTS '", ? STARTS,"'", ? IF ( ENDS <>NULL, CONCAT (" ENDS '",ENDS,"'"),""), ? ? " ON COMPLETION ", ? ON_COMPLETION, ? " ENABLE DO ", ? EVENT_DEFINITION, ? ";;\nDELIMITER ;" ?) FROM ?information_schema.events;
参考