GreatDB数据库如何利用mysqldump导入导出集群数据?
请大神解答一下,谢谢。最好有详细步骤
GreatDB唯一的能耐就是收买了管理员发诈骗小广告
一、数据导出
使用 mysqldump 工具进行GreatDB数据库的数据导出,用法和 MySQL 是一样的。但是需要注意, 如果导出的数据需要包含视图, 则需要添加--single-transaction, 请使用示例中出现的参数.
简单示例如下:
1) 备份单表, 数据及表结构
shell> mysqldump [options] db_name [tbl_name ...]
例如:
备份testdb库中t1表的数据以及表结构,导出的sql文件存放到/tmp目录中
mysqldump -udbscale -pdbscale -h127.0.0.1 -P3307 --skip-add-locks testdb t1 > /tmp/tes tdb_t1.sql
备份testdb库中t1表,t2表的数据以及表结构,导出的sql文件存放到/tmp目录中
mysqldump -udbscale -pdbscale -h127.0.0.1 -P3307 --skip-add-locks testdb t1 t2 > /tmp/ testdb_table.sql
2) 备份单个库, 因为单个库中, 可能包含视图, 则需要添加 --single-transaction
shell> mysqldump --databases [options] db_name --single-transaction ...数据导出例如:
备份testdb整个库
mysqldump -udbscale -pdbscale -h127.0.0.1 -P3307 --skip-add-locks --single-transaction
--databases testdb > whole_database.sql
如果需要备份存储过程(procedure)和函数(function), 则添加 --routines
mysqldump -udbscale -pdbscale -h127.0.0.1 -P3307 --skip-add-locks --single-transaction
--routines --databases testdb > whole_database.sql
3) 备份整个MySQL实例的所有数据, 因为包含视图, 所以需要添加--single-transaction
shell> mysqldump [options] --all-databases
例如:
mysqldump -uroot -pmysql -h127.0.0.1 -P3307 --skip-add-locks --single-transaction --al l-databases > all_databases.sql
二、数据导入
对于使用 mysqldump 或者 mysqlpump 导出的文件,DBScale支持使用source命令或命令行文件重定向的方式进行数据导入,例如:
导入备份库的sql文件
mysql -udbscale -p -h127.0.0.1 -P3307 < /tmp/testdb.sql
或者
mysql -udbscale -p -h127.0.0.1 -P3307 source /tmp/testdb.sql
导入备份库中的表的sql文件
mysql -udbscale -p -h127.0.0.1 -P3307 testdb < testdb_t1.sql
或者
mysql -udbscale -p -h127.0.0.1 -P3307 testdb source /tmp/testdb_t1.sql
或者
mysql -udbscale -p -h127.0.0.1 -P3307 use testdb
source /tmp/testdb_t1.sql
需要注意的是:
如果使用mysqldump命令从单机mysql库导出数据然后导入dbscale,那么需要在mysqldump命令添加参数"--sk ip-add-locks",否则可能无法导入dbscale.
DBScale不支持同时执行多条SQL命令。使用mysql命令行客户端mysql会自动将多条SQL拆分逐个执行。如果使用图形工具,建议使用SQLYog.
如果dump.sql文件中本身没有创建并 use 到一个schema的话,在执行数据导入前请先登陆集群创建 schema 并在导入的mysql命令中指定 schema.DBScale默认的schema是information_schema,所以如果没有 use s chema 就执行操作的话,可能会报错权限不够,而不是通常mysql 的 No database selected 报错.
如果导入过程中报错"In multiple_mode, dbscale do not support set auto_increment value",
请先执行:
dbscale set global check_auto_increment_value = 0;
然后进行导入;最后再执行:
dbscale set global check_auto_increment_value = 0;
对于GreatDB数据库如何利用mysqldump导入导出集群数据,具体的步骤如下:
导出数据:
mysqldump -uroot -p databaseName > dump.sql
其中,root
是数据库的管理员用户名,databaseName
是你要导出数据的数据库名称,dump.sql
是导出数据保存的文件名。导入数据:
mysql -uroot -p databaseName < dump.sql
其中,root
是数据库的管理员用户名,databaseName
是你要导入数据的数据库名称,dump.sql
是你之前导出数据时保存的文件名。注意:这里的命令是在节点上直接执行的,因为GreatDB是一个分布式数据库,所以需要对每个节点单独执行导入和导出命令。此外,在导入和导出过程中,最好暂停对数据库的读写操作,以免数据不一致。