为什么使用mysqldump,简单说一下~

使用Sqoop进行ETL是一种侵入的方式,需要连接占用mysql生产资源,Sqoop一般用于全量导入(虽然也可以使用–incremental append来进行增量导入,但对删除和修改的数据没办法同步)在网路不通的情况下,只能使用log日志方式ETL,异步而非侵入
1、<mark>使用mysqldump是对数据表进行备份。</mark>
2、<mark>binlog用于增量日志同步,增删改逻辑都能照顾。</mark>

备份?

<mark>mysqldump -uUSER -pPASSWORD DB > filename.dump</mark>

恢复?

<mark>mysql -uroot -pXX mock1 < /usr/bk/mock.dump</mark>

备份全库?

<mark>mysqldump -uroot -pXXX mock > /usr/bk/mock.dump</mark>

写一个完整的Shell脚本备份MySQL?

<mark>#!bin/bash
cd /usr/bk
echo “In backup dir”
File = backup-employees-$Now.sql
mysqldump -uroot -pXXX --databases mock --tables employees > $File
echo “backup completed”</mark>

备份个别表?

<mark>mysqldump -uroot -proot --databases db1 --tables a1 a2 >/tmp/db1.sql</mark>

条件导出,导出db1表a1中id=1的数据?

<mark>mysqldump -uroot -proot --databases db1 --tables a1 --where=‘id=1’ >/tmp/a1.sql</mark>

将h1服务器中的db1数据库的所有数据导入到h2中的db2数据库中,-C代表压缩?

<mark>mysqldump --host=h1 -uroot -proot -C --databases db1 |mysql --host=h2 -uroot -proot db2</mark>

只导出结构?

<mark>mysqldump --opt -d db1 -u root -p > db1.sql</mark>

只导出数据?

<mark>mysqldump -t db1 -uroot -p > db1.sql
mysqldump -uroot -pXXX -t --databases mock --tables employees > /usr/bk/employees.sql</mark>

生成新的binlog文件,-F

<mark>mysqldump -uroot -proot --databases db1 -F >/tmp/db1.sql</mark>

原文地址:mysqldump命令https://mp.weixin.qq.com/s/gFFhq4exPL7LsuylM5N_sw

原创面试复习图(点击菜单获取)