Linux MySQL数据库的全库和单库备份
MySQL数据库的备份重要性不用多说,备份方式也很多,但常用的是MySQL自带的备份程序MySQLdump,该程序一键备份,一键恢复,十分方便,并且备份形式支持远程保存备份文件,多种媒介存储,十分的方便。
下面就以数据库备份在本地,恢复到另一台远程主机为例,演示数据库的备份以及远程迁移。
环境说明:两台主机,第一台主机IP地址为192.168.0.3,数据库为zabbix,该库内有多表。暂定称呼为三号。
第二台主机IP地址为192.168.0.4,只有原始数据库。暂定称呼为四号。
两台主机都是使用的MySQL的小弟版本mariadb,zabbix服务时启动状态。下面开始正式备份以及数据库迁移到192.168.0.4这个主机。
在3号主机上,执行备份命令:
mysqldump -uroot --databases zabbix --single-transaction >`date +%F-%H-%M`-zabbix.sql -p
该命令为以root用户登录数据库,备份数据库名称为zabbix (--databases zabbix,这个也可以写为-B),
在备份数据库时,保持数据库的数据一致性(--single-transaction),当然如果是在生产环境下,可能会有锁表的现象。
重定向到本地当前工作目录下。这个`date +%F-%H-%M`需要说明一下,是时间的格式化,当前的系统时间的日和分也有,类似这样2020-01-02-11-47,备份文件名字为zabbix.sql。
最后的 -p一定要有哦,这是表示需要密码验证,但密码当命令执行时验证,这样做是为了安全,毕竟,没谁愿意让他人发现密码在命令的历史记录中。输入正确的密码后即开始备份,根据数据库大小等待时间不一,然后在当前工作目录下就可以看到 2020-01-02-11-47-zabbix.sql的文件了。这个就是备份好的数据库文件。 当然,这个都指定数据库了,自然是单库的备份。
mysqldump -uroot -A --single-transaction >`date +%F-%H-%M`-zabbix.sql -p
这个命令就是全库备份命令 了。 -A 可以替换为 --all-databases,也就是说上面命令等价于
mysqldump -uroot -all-databases --single-transaction >`date +%F-%H-%M`-zabbix.sql -p,
既然是全库备份,自然不需要指定需要备份的数据库名称了。
如果是全库备份,远程迁移的目标主机不需要重新建立数据库,直接使用本地的备份文件在远程主机上恢复即可,也就是四号主机上。
远程主机的数据库迁移命令为:
cat 2020-01-02-10-55-zabbix.sql | mysql -uroot -p123456 -h 192.168.0.4
记住,这个时候使用的备份文件是全库备份出来的文件,单库的不要尝试哦。
单库的备份文件如果需要恢复到远程的主机,那么首先需要在远程主机上新建一个数据库,并且权限以及使用用户等与原备份数据库一致才可以、然后,上面那个恢复命令 最后面需要添加要恢复的库名才可以。并且输入的密码是远程的主机的数据库密码,也就是四号的数据库密码。
另外,友情提示一下,远程主机需要开启远程登录权限哦。