目前数据库服务主要有两种方案:
1.自建数mysql
2.使用RDS数据库
rds这里指的是阿里云提供的 提供稳定可靠、可弹性伸缩的关系型云数据库RDS,这里是mysql。
本文档为mysql自建和使用rds备份教程。通过全量和增量(实时备份)预防程序漏洞,误操作,被黑客攻击等导致数据丢失,防患于未然。
备份命令:mysqldumpMySQL数据库自带的一个很好用的备份命令。是逻辑备份,导出 的是SQL语句。也就是把数据从MySQL库中以逻辑的SQL语句的形式直接输出或生成备份的文件的过程。
单实例语法(Syntax):
mysqldump -u <username> -p <dbname> > /path/to/***.sql
多实例的备份语法(Syntax):
mysqldump -u <username> -p <dbname> -S <sockPath> > /path/to/***.sql
eg: mysqldump -u root -p wordpress > /opt/mysql_$(date +%F).sql
目前车队宝数据量小,全量备份采用MySQL的dump即可,
mysql实时备份开启binlog即可。
MySQL 的二进制日志 binlog 可以说是 MySQL 最重要的日志,它记录了所有的DDL和DML语句(除了数据查询语句select、show等),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。
开启binlog日志:如果更安全机制,备份服务双份binlog,可以使用canal消费binlog双保险或drbd等双写。
vi编辑打开mysql配置文件
# vi /etc/my.cnf
在[mysqld] 区块
设置/添加 log-bin=mysql-bin 确认是打开状态(值 mysql-bin 是日志的基本名或前缀名);
重启mysqld服务使配置生效
# systemctl restart mysqld
通过步骤a,全量备份的数据 ,使用mysql -uroot -p [database] </path/to/bak.sql 恢复即可
增量备份,用于恢复全量备份时间段内的数据。
通过mysql的binlog还可以指定–start-date、–stop-date、–start-position和–stop-position参数,用于精确恢复数据到某个时刻之前或者跳过中间某个出问题时间段恢复数据。 也可以根据条件生成sql语句修改后恢复数据。
mysqlbinlog 命令的语法格式:
mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名
也可以使用上面的命令,生成并修改sql后恢复数据。
--------------------------------------------------------
常用参数选项解释:
--start-position=875 起始pos点
--stop-position=954 结束pos点
--start-datetime="2016-9-25 22:01:08" 起始时间点
--stop-datetime="2019-9-25 22:09:46" 结束时间点
--database=myshop 指定只恢复mysshop数据库(一台主机上往往有多个数据库,只限本地log日志)
--------------------------------------------------------
不常用选项:
-u --user=name 连接到远程主机的用户名
-p --password[=name] 连接到远程主机的密码
-h --host=name 从远程主机上获取binlog日志
--read-from-remote-server 从某个MySQL服务器上读取binlog日志
mysqlbinlog 例子:
mysqlbinlog -vv --base64-output=decode-rows -vv --start-datetime="2021-05-21 14:04:03" --stop-datetime="2021-05-21 14:05:03" mysql-bin.002421
全量中的数据没有增量的数据部分+增量的数据中没有增量前面的数据。
先用全量备份恢复,在执行增量生成的sql恢复,即可。
开启数据备份和日志备份(binlog),rds备份参数设置说明
https://help.aliyun.com/document_detail/98818.htm?spm=a2c4g.11186623.2.22.27fe4620fnhPgD#concept-l1m-xgn-ydb
操作说明:
https://help.aliyun.com/document_detail/96147.htm?spm=a2c4g.11186623.2.7.2f80323f4tWUNY#concept-vrh-qp4-ydb
云盘实例,可以按秒恢复数据,但是数据恢复需要2-5分钟
rds控制台,也可以下载binlog日志,
自建mysql恢复速度快,特别是可以用全量备份的文件先生成一个数据库备用,再通过增量备份binlog,几乎可以秒级恢复数据。
rds备份恢复简单方便,速度较慢。rds高可用版本可以库表恢复,基础版只能实例克隆。