mysql备份工具和策略

mysqldump备份工具:

备份整个数据库:

mysqldump  --all-databases > dump.sql

包含存储过程和事件的备份如下:

mysqldump --all-databases  --routines --events > dump.sql

 

备份指定的数据库和表   

mysqldump --databases bank > bank_backup.sql

mysqldump --databases bank  --tables account > account_backup.sql

 

备份忽略的表:

mysqldump --databases  bank  --ignore-table=bank.account > bank_backip.sql

 

指定行

mysqldump可以过滤备份的数据根据条件

mysqldump --databases bank --tables account   --where="hire_date"> '2000-01-01'"   >   bank_after2000.sql

 

从远程服务器备份

有时候你没有ssh访问数据库的权限(比如云上的RDS),这种情况下,可以使用mysqldump从远程服务器备份到本地服务器

mysqldump --all-databases  --routines  --events  --triggers  --hostname<远程主机>   >  dump.sql

 

备份不包含数据的schema

mysqldump --all-databases  --routines --events  --triggers  --no-data  >dump.sql

 

备份不包含schema的数据

mysqldump   --all-databases    --no-create-db  --no-create-info  --complete-insert  > data.sql

 

从生产服务器恢复数据到已有一些数据的开发服务器,如果要将数据合并到开发过程中

mysqldump  --databases  bank  --skip-add-drop-table     --no-create-info     --replace > to_development.sql

--replace,使用replace into而不是insert

--skip-add-drop-table ,不会将drop语句写入dump文件

如果拥有相同数量的表和结构,还可以包含--no-create-info,该选项跳过dump文件中的create table语句

 

mysqlpump备份工具

非常类似于mysqldump,但他提供一些额外功能;

并行处理:

可以指定线程数量(CPU数量)加速备份过程,例如,使用8个线程进行完整备份

mysqlpump  --default-parallelism=8 > full_backup.sql

 

例如,bank数据库比其他数据大很多,所以可以为bank指定4个线程,其他数据库指定2个线程

mysqlpump  -uroot -p  --parallel-schemas=4:bank  --default-parallelism=2  > full_bakcup.sql

 

例如,3个线程用于db1和db2,2个线程用于db3和db4,还有4个线程用于其他的

mysqlpump  --parallel-schemas=3:db1,db2     --parallel-schemas=2:db3,db4    --default-parallelism=4 > backup.sql

 

压缩备份

可以使用--compress-output = lz4 或 --compress-output = zlib,解压要有相应的解压缩工具

mysqlpump -u root -p --compress-ouput=lz4 > dump.lz4

解压缩:

lz4_decompress   dump.lz4  dump.sql

mysqlpump -u root -p --compress-output=zlib >dump.zlib

解压缩:

zlib_decompress  dump.zlib  dumop.sql

 

mydumper备份工具:

这是一个开源备份工具,需要在系统进行单独安装

 

物理备份:

由于复制文件时候写入了数据,所以备份数据将不一致并不可用,所以最好关闭mysql服务,复制备份完后再重新启动

service mysqld stop

rsync -av     /data/mysql    /backrups

或者

rsync -e ssh  -az   /data/mysql       backupusers@remotehost:/backups

service mysqld start

 

posted @ 2021-03-05 16:21  王能武  阅读(136)  评论(0编辑  收藏  举报