业务场景:需要将服务器A上的mysql数据库迁移到另外一台服务器B。
命令格式
mysqldump [选项] 数据库名 [表名] > 脚本名
mysqldump [选项] --数据库名 [选项 表名] > 脚本名
mysqldump [选项] --all-databases [选项] > 脚本名
选项说明
参数名 | 缩写 | 含义 |
---|---|---|
--host | -h | 服务器IP地址 |
--port | -P | 服务器端口号 |
--user | -u | MySQL 用户名 |
--pasword | -p | MySQL 密码 |
--databases | 指定要备份的数据库 | |
--all-databases | 备份mysql服务器上的所有数据库 | |
--compact | 压缩模式,产生更少的输出 | |
--comments | 添加注释信息 | |
--complete-insert | 输出完成的插入语句 | |
--lock-tables | 备份前,锁定所有数据库表 | |
--no-create-db/--no-create-info | 禁止生成创建数据库语句 | |
--force | 当出现错误时仍然继续备份操作 | |
--default-character-set | 指定默认字符集 | |
--add-locks | 备份数据库表时锁定数据库表 |
实例
1.备份所有数据库:
mysqldump -uroot -p --all-databases > /backup/mysqldump/all.db
2.备份指定数据库:
mysqldump -uroot -p test > /backup/mysqldump/test.db
3.备份指定数据库指定表(多个表以空格间隔)
mysqldump -uroot -p mysql db event > /backup/mysqldump/2table.db
4.备份指定数据库排除某些表
mysqldump -uroot -p test --ignore-table=test.t1 --ignore-table=test.t2 > /backup/mysqldump/test2.db
5.备份指定数据库包含函数、视图、事件、触发器
mysqldump -uroot -p test --databases testdb --triggers --events --routines> /backup/mysqldump/test2.db
- 用ssh终端连接服务器A
- mysqldump指令将数据库表/数据保存成xx.sql文件存到本地
#导出数据到/opt/sqlbak/目录下
# 导出所有数据库的表结构和数据
mysqldump -uroot -p123456 --all-databases > /opt/sqlbak/alldata.sql
# 导出指定数据库的表结构和数据
mysqldump -uroot -p123456 --databases db1 db2 > /opt/sqlbak/alldata.sql
# 导出指定数据库(user)的所有表结构和数据
mysqldump -uroot -p123456 user > /opt/sqlbak/user.sql
# 导出指定数据库(user)的所有表结构(不包含数据)
mysqldump -uroot -p123456 -d user > /opt/sqlbak/user.sql
# 导出指定数据库(user)某一张表(socre)的结构
mysqldump -uroot -p123456 -d user score > /opt/sqlbak/userscore.sql
# 导出指定数据库(user)某一张表(score)的结构和数据
mysqldump -uroot -p123456 user score > /opt/sqlbak/userscoredata.sql
- 上传导出的文件到服务器B
- 可以通过xshell的xftp直接拉过去
- 使用scp指令传输到/opt/sqlbak/目录下
# '-r' 代表传输的是文件夹,如果传输的是文件,就不需要 -r
scp /opt/sqlbak root@192.168.0.100:/opt/
scp [-r] /opt/sqlbak/user.sql root@192.168.0.100:/opt/
- 在服务器执行.sql文件完成数据迁移
# 登录mysql
mysql -uroot -p
输入密码
# 新建迁移保存的数据库, 如果已创建了数据库,则使用 use [databasename] ;
mysql > create database user;
# 执行.sql文件
mysql > source /opt/sqlbak/user.sql;