备份的类型
1 2 3 4 5 6 7 8 9 10 11 |
1.冷备份:先停止数据库的访问,然后备份 这些备份在用户不能访问数据时进行,因此无法读取或修改数据。这些脱机备份会阻止执行任何使用数据的活动。这些类型的备份不会干扰正常运行的系统的性能。但是,对于某些应用程序,会无法接受必须在一段较长的时间里锁定或完全阻止用户访问数据。 2.温备份:不停止数据库的访问,不阻止数据的读取,阻止数据修改的同时然后备份 这些备份在读取数据时进行,但在多数情况下,在进行备份时不能修改数据本身。这种中途备份类型的优点是不必完全锁定最终用户。但是,其不足之处在于无法在进行备份时修改数据集,这可能使这种类型的备份不适用于某些应用程序。在备份过程中无法修改数据可能产生性能问题。 3.热备份:不停止数据库的访问,不锁表,不阻止数据的读取和写入的同时进行备份 这些动态备份在读取或修改数据的过程中进行,很少中断或者不中断传输或处理数据的功能。使用热备份时,系统仍可供读取和修改数据的操作访问 |
备份的形式
逻辑备份
1 2 3 4 5 6 7 8 9 10 11 12 |
#把数据导出成sql文件的形式进行备份 1.binlog 的方式 2.into outfile 1)配置数据库 [root@db01 ~]# vim /etc/my.cnf [mysqld] secure-file-priv=/tmp 2)数据库执行 mysql> select * from world.city into outfile '/tmp/world_city.data'; 3)查看导出文件 3.mysqldump 4.replication (数据库主从,属于逻辑备份,并没有是真正的做到备份) |
物理备份
1 2 3 4 5 6 7 8 9 10 11 12 13 |
1.直接备份data目录 1)将数据目录data打包 [root@db01 /service/mysql]# tar czf data.tar.gz data 2)将data打包文件推送到另一台数据库服务器(两台机器必须使用相同安装方式) [root@db01 /service/mysql]# scp data.tar.gz 172.16.1.52:/tmp/ 3)停止新机器数据库,将新机器data目录删除 [root@db02 ~]# systemctl stop mysqld [root@db02 ~]# rm -rf /service/mysql/data 3)到新机器解压data目录到数据库的数据目录 [root@db02 /service/mysql]# tar xf /tmp/data.tar.gz -C ./ 4)登录数据库查看 2.Xtrabackup |
备份的类型
1 2 3 4 5 6 7 8 9 10 11 |
1.全备:全部数据都进行备份 1)比较浪费磁盘空间 2)恢复数据方便 2.增备:对新增加的数据进行备份 1)相对于全备比较节省磁盘空间 2)恢复数据需要合并多次数据 3.差异备份:针对上一次全备进行备份 1)也会出现数据的重复,比较浪费磁盘空间 2)恢复数据,只需要与全备合并进行恢复即可 |
语法
1 2 3 4 |
Usage: mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --all-databases [OPTIONS] For more options, use mysqldump --help |
不使用任何参数
1 2 3 4 5 6 7 8 |
1.导出指定库 [root@db01 ~]# mysqldump -uroot -p world > /tmp/world.sql 2.导出指定库下面的指定表 [root@db01 ~]# mysqldump -uroot -p world city > /tmp/city.sql 3.导出指定库下面的多个表(第一个参数必须是库,后面的其他参数都只能是表名) [root@db01 ~]# mysqldump -uroot -p world city country > /tmp/city2.sql |
加参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
1. -A 等于 --all-databases,导出所有库 [root@db01 ~]# mysqldump -uroot -p -A > /tmp/full.sql 2. -B 指定库备份,只能指定库的名字 [root@db01 ~]# mysqldump -uroot -p -B world row events > /tmp/1.sql 3. -F 备份数据的同时刷新binlog [root@db01 ~]# mysqldump -uroot -p -F world city > /tmp/city2.sql 4. --master-data=2 备份时进行打点,记录备份时的binlog位置点(必须开启binlog才能使用) [root@db01 ~]# mysqldump -uroot -p123 -B world --master-data=2 > /tmp/world.sql --master-data=0 不打点不记录位置 --master-data=2 打点并注释(单纯的进行备份时) --master-data=1 打点不注释(主从数据库扩展从库时) 5. --single-transaction 快照备份 6. -d 仅表结构 7. -t 仅数据 8. -R --routines 备份存储过程和函数数据 9. --triggers 备份触发器数据 #备份的完整命令 [root@db01 ~]# mysqldump -uroot -p -A -R --triggers --master-data=2 --single-transaction > /tmp/full.sql 10. gzip 压缩备份 [root@db01 ~]# mysqldump -uroot -p -A -R --triggers --master-data=2 --single-transaction | gzip > /tmp/full.tar.gz #压缩恢复数据时 [root@db01 ~]# zcat /tmp/full.tar.gz | mysql -uroot -p 11. 备份同时加上时间戳 [root@db01 ~]# mysqldump -uroot -p -A -R --triggers --master-data=2 --single-transaction > /tmp/full$(date +%F).sql |