# 物理备份的恢复

官方链接 (opens new window)

  • 存在问题,因为我们是要恢复到docker上的自建数据库,使用mysqld_safe命令启动,我们不好操作

  • 其实只需要吧对应的数据指向容器的/var/lib/mysql 配置指向/etc/my.cnf即可

  • backup-my.cnf需要修改

## This MySQL options file was generated by innobackupex.

## The MySQL server
[mysqld]
##innodb_checksum_algorithm=innodb
##innodb_log_checksum_algorithm=innodb
##innodb_data_file_path=ibdata1:200M:autoextend
##innodb_log_files_in_group=2
##innodb_log_file_size=1048576000
##innodb_fast_checksum=false
##innodb_page_size=16384
##innodb_log_block_size=512
##innodb_undo_directory=.
##innodb_undo_tablespaces=0


##rds_encrypt_data=false
##innodb_encrypt_algorithm=aes_128_ecb
  • 如下为docker-compose.yml文件
version: '3.1'
services:
  db:
    image: mysql:5.6
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    command:
      --default-authentication-plugin=mysql_native_password
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    ports:
      - 3306:3306
    volumes:
      - /home/mysql/data:/var/lib/mysql
      - /home/mysql/data/backup-my.cnf:/etc/my.cnf
  • 自己测试数据库的备份和恢复,包括逻辑备份以及binlog的恢复

# mysqlbinlog的恢复

  • 直接获取到的binlog的日志是通过base64加密的,需要查看的话,需要通过解密
    mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001

  • 通过position恢复的命令
    mysqlbinlog --start-position="230" --stop-position="689" binlog.000004 |mysql -uroot -p

  • 通过时间点来进行恢复
    mysqlbinlog --start-datetime="2019-10-24 3:21:26" --stop-datetime="2019-10-24 3:21:29" binlog.000004 |mysql -uroot -p

最后编辑时间: 12/21/2020, 8:56:16 PM