mysql备份之mysqldump


4. mysql的备份方式。

  mysql数据库按照其服务的运行状态,即停库和非停库,停库的备份叫冷备,非停库的叫热备。热备份分为逻辑备份和裸文件备份(物理备份)。按备份量又有全量和增量备份。

 

 

 

 

4.1冷备及其恢复.

Mysql的冷备就是在数据库停止的状态下进行备份,好处是可以保证数据库的完整性,备份和恢复都比较快速,但是数据库停止会影响业务,无法访问数据库,所以冷备一般用于不那么重要的业务使用。

1,首先停止数据库

/usr/local/mysql/bin/mysqladmin -uroot -p123456 shutdown

 

 

 

 

 

确保mysql进程已经关闭

2,备份过程为复制整个数据目录到远程的服务器上,或者本地磁盘。为了简便。只列出步骤。如下:

 scp -r /data/mysql/ root@远程机器IP/远程机器目录

 cp -r /data/mysql   /本地目录

 

恢复:

只需要把备份的数据目录替换即可,记得源目录要备份一下,然后重启mysql

 

4.2热备及恢复

热备即为在不停库的状态下进行备份,其中有逻辑备份和物理备份

逻辑备份即将sql执行语句备份,恢复的时候执行sql语句来恢复。一般有mysqldumpmydumper等工具

 

物理备份即备份数据文件,一般的工具有percona公司的XtraBackup的热备软件进行备份。

4.2.1 mysqldump工具备份与恢复

Mysqldump的备份是从buffer中找到需要备份的数据,buffer没有就到磁盘找,并调回buffer

通过mysqldump -help可以看到其用法,下面展示常用参数

 

--single-transaction

用于保证innodb备份数据时的一致性,配合RR隔离级别一起使用,当发起事务时,读取一个数据的快照,知道备份结束时,都不会读取到本事务开始提交的任何数据。

--all-databasess-A

备份所有数据库

--master-data

该参数有12两个值,为1的时候,就会在备份出来的文件中添加一个CHANGE MASTER的语句(主从搭建的时候会用),为2的时候就会在备份文件中添加一个CHANGE MASTER的语句,并在语句前面欠佳注释符号(主从搭建会用到)

--dump-slave

 该参数用于从库端备份数据,在线搭建新的从库时会使用,参数为1的时候会在备份文件中添加一个CHANGE MASTER,2的时候则会在其前添加注释符号。

--no-create-info-t

备份时只备份表数据,不备份表结构。

--no-data-d

只备份表结构,不备份表数据

--complete-insert -c

使用完整的insert语句会包含表中的列信息,这么做可以提高插入效率。

--databases-B)

备份多个数据库,在参数后添加数据库名即可

--default-character-set

字符集,mysql默认的为UTF8,要与备份出的表的字符集保持一致。

--quick-q

相当于加sql_no_query,意味着并不会读取缓存中的数据。

--where=name(-w)

按条件备份出想要的数据

 

1.示例:备份全库,如下

mysqldump --single-transaction --set-gtid-purged=off -uroot -p123456 -A >all_20211109.sql

加上--set-gtid-purged=off 是指关闭保存事务的gtid,不然恢复的时候会显示错误。

 

 

 

 

 

恢复示例,先删除test数据库,利用mysql命令恢复

 

 

 

 

 

 

上面图中把test数据库删了,在下图中使用备份将其恢复

 

 

 

 

 

 

 

 

 

 

2.示例:备份单个数据库test

mysqldump --single-transaction --setgtid-purged=off -uroot -p123456 test>test_20211109.sql

 

 

 

 

如果恢复的时候test被删掉了,要自己创建一个新的test库,如果存在直接恢复即可。

恢复则是mysql -uroot -p123456 test <test20211109.sql

 

 

 

 

 

3.备份数据库的单个表,示例

 mysqldump --single-transaction --set-gtid-purged=off -uroot -p123456 mysql user >user_20211109.sql

 

 

 

 

恢复就不再示例了。

此外还有备份表数据,表结构,根据where条件备份数据等。与上述大同小异。

 

注意事项:使用mysqldump备份时,可能会出现数据库性能抖动问题,出现性能下降的情况,这是因为mysqldump备份是从buffer中找到备份的内容,如果buffer中没有,就需要访问磁盘的数据文件,然后把数据调回到内存中,形成备份文件,在磁盘调回内存时候,如果机器的内存不是很大的情况下,是会把内存中的热数据冲掉,这样业务访问数据的时候也需要从磁盘中拿数据,众所周知磁盘的性能是远小于物理内存的,这将导致数据返回时间延长,影响业务访问。

mysql5.7后,新增了一个innodb_buffer_pool_dumo_pct参数,是用来控制每个innodb buffer中转储活跃使用innodb buffer pages的比列,只有当数据在1s内再次被访问时,才会回到热区域内,这避免了热数据被冲走的情况,默认值为25%

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM