本文概览:同步线上数据库的数据表结构或者数据到测试环境数据库就是使用mysqldump来实现。mysqldump可以导出数据表结构和数据。
1 同步一个数据表
1.1 导出数据和表结构
1.导出脚本
在本地执行如下命令,从和线上一样的那个beta环境中导出指定表的sql。如下导出qadmin_resource表的数据。命令格式
1 |
mysqldump -u用户名 -p密码 -hIP地址 -P端口 --lock-tables=false 数据库名 表名> 导出的文件 |
2.导入数据
在本地执行如下命令,指定导入到某一个库的表中
1 |
mysql --default-character-set=utf8mb4 -hIP -P端口号 -u用户名 -p密码 |
3.然后执行
1 |
source dump_source.sql |
1.2 只导出数据
1、-t 不导出数据表结构
1 |
mysqldump -u用户名 -p密码 -hIP地址 -P端口 --lock-tables=false -t 数据库名 表名> 导出的文件 |
2、–wheree
1 |
--where="F_user_id=11 and F_state=8" |
3、limit和order
也通过–where来实现。如下
1 |
--where="1 order by id desc limit 2" |
1.3 只导出表结构
1.导出脚本
如下命令,就是多了参数“-d”。
1 |
mysqldump -u用户名 -hIP -p密码 -P端口号 -d 数据库名 表名 > 导出文件; |
2 同步一个库数据
1.导出脚本
在本地执行如下命令
1 |
mysqldump --default-character-set=utf8mb4 -u用户名 -p密码 -hIP地址 -P端口 数据库名 > 导出的文件 |
3 相关参数
1. –ignore-table,
导出一个数据库中所有表结构,可能需要排除个别的表。
(1)举例,如下是导出dbName数据库中所有表结构,但是排除table1和table2。
1 |
mysqldump -h123.33.33.2 -uroot -proot -P8306 -d dbName --ignore-table=dbName.table1 --ignore-table=dbName.table2 >result.sql |
(2)–ignore-table的值的格式是
1 |
数据库名称.表名字 |
(3)多个排除表,此时就使用多个–ignore-table=xxx.tablen,如下
1 |
--ignore-table=dbName.table1 --ignore-table=dbName.table2 |
附
如果是导数据,则参考如下
(全文完)