전체 백업에는 mysqldump 명령을 사용하고 증분 백업에는 binlog 구성을 사용합니다.
전체 백업
1. 전체 백업 명령
mysqldump -u${
DB_USER} -P${
DB_PORT} -p${
DB_PWD} --host=${
HOST} ${
DATABASE} | gzip > ${
BACKUP}/${
DATETIME}.sql.gz
증분 백업
2. 증분 백업 binlog 구성
[mysqld]
#binlog 配置
binlog_format=mixed #此参数配置binlog的日志格式,默认为mixed。
log-bin =/var/lib/mysql//logs/mysql-bin.log #此参数表示启用binlog日志功能,并可以定制路径名称,默认为mysql-bin
expire-logs-days = 14 #日志保留的时间,默认单位是天
binlog-do-db=db_name #记录指定数据库日志
binlog-ignore-db=db_name #忽略指定数据库
max-binlog-size = 500M #binlog的日志最大值,最大和默认值是1GB
server-id = 1 #同步时用的 不要与其他server-id重复
mysql을 다시 시작한 후 'log_bin'과 같은 변수 표시; 값은 ON입니다.
데이터 복구
echo "解压昨日备份文件获得全量sql"
gunzip ${
BACKUP}/${
DATETIME}.sql.gz
echo "获得当日增量sql"
mysqlbinlog -v --start-datetime="2020-09-04 00:00:00" --stop-datetime="2020-09-04 23:00:00" //var/lib/mysql//logs/mysql-bin.log.000* > 20200908.sql
echo "执行昨天全量sql"
mysql -h${
HOST} -u${
DB_USER} -p${
DB_PWD} --default-character-set=utf8 ${
DATABASE} < ${
BACKUP}/${
DATETIME}.sql
echo "执行当日增量sql"
mysql -h${
HOST} -u${
DB_USER} -p${
DB_PWD} --default-character-set=utf8 ${
DATABASE} < ${
BACKUP}/${
DATETIME}.sqll