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