Mariadb数据库备份的方式有两种:一是冷备,二是热备。
一、数据库冷备:关闭状态下直接复制数据目录
1、使用mysqladmin停止mysql
mysqladmin是一个执行管理操作的客户端程序。它可以用来检查服务器的配置和当前状态、创建和删除数据库等。注意需要进入mysqladmin的目录:/usr/local/mysql/bin/,笔者是在windows上装的wampserver,目录是:D:\wampserver\bin\mariadb\mariadb10.4.10\bin 。
mysqladmin -uroot -p status:查看数据库服务器状态
mysqladmin -uroot -p ping:查看数据库是否可用
mysqladmin -uroot -p version:查看数据库版本
mysqladmin -uroot -p processlist:查看数据库所有进程
mysqladmin-uroot -p shutdown:使用安全模式关闭数据库
mysqladmin -uroot -p create daba-test:创建数据库daba-test
mysqlshow -uroot -p test:查看数据库test下的表
冷备前使用mysqladmin-uroot -p shutdown,使用安全模式关闭数据库,保证数据库的完整性,备份和恢复简单。
2、复制数据目录windows平台只需要进入数据目录:D:\wampserver\bin\mariadb\mariadb10.4.10\data ,然后执行复制数据即可。在linux平台,使用copy或者scp命令来递归复制。
备份到本机:copy -r /data/mysql /newdir
备份到远程机:scp -r /data/mysql root@ipaddress:/newdir
数据库的恢复就简单了,直接拷贝数据目录覆盖原文件即可。冷备份会停止数据库,影响现有业务的运行。
二、数据库热备份:运行状态的逻辑备份
1、mysql自带的mysqldump工具
笔者在前期的文章中写过:windows下定时备份mysql数据库和树莓派利用LAMP部署个人网页,上面有关于在windows和linux平台下进行备份的命令。
windows平台下备份数据库device_information
mysqldump --no-defaults -uphpmyadmin -proot device_information > D:/device_information_%YMD%.sql
linux平台下平台下备份数据库formula_table
mysqldump -hlocalhost -uphpmyadmin -proot formula_table > /home/pi/mysqlbackup_formula/`date +%Y%m%d`.sql
mysqldump -help来查看mysqldump的使用方法,这里就不再。mysqldump 备份是先从buffer中找想要的备份内容,如果没有则将磁盘中的数据调回内存再形成备份文件,期间可能把内存中的热数据冲掉影响业务访问,造成数据库性能抖动。
现在有个数据库test,card表又一千万行数据,笔者在windows平台下使用mysqldump进行备份,大概花了7秒钟,如果是linux平台则可以在命令前加time即可显示运行时间。mysqldump --single-transaction -uroot -p test card > test20210220.sql,使用dir test20210220.sql查看文件大小正常。
现在要恢复数据库,使用mysql命令:mysql -uroot -p testbt < test20210220.sql ,将数据恢复到数据库testbt 下,这个过程大概花了40秒。使用命令mysqlshow -uroot -p testbt -v -v 查看数据库testbt 的表的行数,正常。
2、数据库命令select ... into outfile和load data
进入数据库命令行,使用命令select * from card into outfile 'D:/wampserver/tmp/outfile2021.sql'; 来导出数据outfile2021.sql 。如下,需要注意的是outfile是有特定的数据目录的,运行 show variables like '%secure%';可以查看目录,输出数据文件时不然会出错,也要注意使用反斜杠 / 。备份过程花了4.4秒。
需要注意的是,select ... into outfile只备份表中的数据,并不能包含表的结构。
恢复数据使用命令load data:
先将表中数据删除:delete from card; 然后 load data infile 'D:/wampserver/tmp/outfile2021.sql' into table card; 将文件中的数据写入数据表card中。删除数据较慢的原因为card设置了触发器,在删除数据时会写入另一个表。 load data命令注意在表前要加table,整个过程花了70秒左右。
标签:备份,mysqladmin,uroot,mysqldump,mysql,Mariadb,数据库 From: https://www.cnblogs.com/Alwayslearn/p/16846645.html