水电工888 发表于 2018-10-4 06:32:47

mysql五

  day05增量备份
  一、启用binlog日志 实现 实时增量备份
  二、使用第3方软件提供的命令做增量备份
  +++++++++++++++++++++++++++++++++
  一、启用binlog日志 实现 实时增量备份
  1.1binlog日志介绍:二进制日志, 是MySQL数据库服务日志文件中的一种,记录执行的除查询之外的sql命令。默认没有启用。
  查询的sql命令 :show   desc   select
  1.2启用binlog日志?
  vim /etc/my.cnf
  
  server_id=50               #1-255
  log-bin
  binlog-format="mixed"   #ROW
  ....
  :wq
  #systemctlrestartmysqld
  日志文件默认存储位置: 数据库目录/var/lib/mysql/
  日志文件的默认名称:主机名-bin.编号   500M
  日志索引文件                host50-bin.index
  1.3 查看日志文件内容?
  #mysqlbinlog   目录名/日志文件名
  #mysqlbinlog/var/lib/mysql/host50-bin.000001
  1.4 自定定义日志文件的名字和存储目录?
  #mkdir/logdir
  #chowmysql/logdir
  #setenforce0
  #vim /etc/my.cnf
  
  server_id=50               #1-255
  #log-bin
  log-bin=/logdir/plj
  binlog-format="mixed"
  ....
  :wq
  #systemctlrestartmysqld
  #ls   /logdir/
  1.5 日志文件记录sql命令的方式?
  时间点
  偏移量(pos)
  1.6 执行日志文件内的sql命令恢复数据?
  #mysqlbinlog [选项] 目录名/日志文件名|   mysql-uroot-p123456
  时间点
  --start-datetime="yyyy-mm-ddhh:mm:ss"
  --stop-datetime="yyyy-mm-ddhh:mm:ss"
  偏移量(pos)
  --start-position=数字   --stop-position=数字
  #mysqlbinlog--start-position=293--stop-position=1490/logdir/plj.000001    |mysql -uroot-p123456
  1.7手动创建新的binlog日志文件?
  mysql>flush logs;
  #mysql-uroot-p123456   -e"flush logs"
  #mysqldump-uroot-p123456--flush-logsdb4> /root/db4.sql
systemctlrestartmysqld
  1.7 删除已有的binlog日志文件
  mysql> reset   master;
  mysql> purgemasterlogsto"日志文件名";
  mysql> purgemasterlogsto "plj.000006";
  ++++++++++++++++++++++++++++++++++++++++++
  二、使用第3方软件提供的命令做增量备份---
  2.1 percona 介绍?
  2.2 安装percona
  #yum-yinstallperl-Digest-MD5   perl-DBD-MySQL
  #rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
  #rpm -ivh percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
  2.3innobackupex命令的语法格式 ?
  #innobackupex   
  选项?
  --user用户名
  --password密码
  --databases库名
  --no-timestamp不使用系统日期做备份目录的子目录名
  --apply-log恢复日志
  --copy-back恢复数据
  A、使用innobackupex名字只做完全 和完全恢复?
  A.1完全备份
  #innobackupex   --userroot    --password123456--databases="mysqlperformance_schema   sys   db66"    /allbak--no-timestamp
  #ls   /allbak
  A.2 完全恢复
  #innobackupex   --userroot    --password123456--databases="mysqlperformance_schema   sys   db66"   --apply-log    /allbak
  #rm-rf/var/lib/mysql
  #mkdir/var/lib/mysql
  #innobackupex   --userroot    --password123456--databases="mysqlperformance_schema   sys   db66"   --copy-back    /allbak
  #ls/var/lib/mysql
  #chown   -Rmysql:mysql   /var/lib/mysql
  #systemctlstop mysqld
  #systemctlstart mysqld
  #mysql -uroot-p123456
  mysql> showdatabases;
  /var/lib/mysql
  ++++++++++++++++++++++++++++++++++++++
  增量备份
  --incremental目录名   #增量备份数据存储目录
  --incremental-basedir=目录名   #上次备份数据存储目录
  1 先要有一次完全备份/onedir
  #innobackupex   --userroot    --password123456--databases="mysqlperformance_schema   sys   db66"   /onedir--no-timestamp
  2 增量备份
  第一次增量备份 存储目录/new1dir
  #innobackupex   --userroot    --password123456
  --databases="mysqlperformance_schema   sys   db66"
  --incremental   /new1dir    --incremental-basedir=/onedir   --no-timestamp
  第二增量备份数据存储的目录   /new2dir
  #innobackupex   --userroot    --password123456
  --databases="mysqlperformance_schema   sys   db66"
  --incremental   /new2dir   --incremental-basedir=/new1dir--no-timestamp
  增量备份的工作原理:
  innobackupex 命令-----> innodb 存储引擎的表
  数据库目录/var/lib/mysql下
  事务日志文件 记录 执行的sql 操作 和 数据信息
  ib_logfile1   ib_logfile0       ibdata1
  LSN日志序列号
  备份目录的文件说明: /onedir    /new1dir   /new2dir
  cat xtrabackup_checkpoints
  xtrabackup_logfile
  增量恢复(要求数据库目录必须是空的)
  --redo-only合并日志
  --incremental-dir=目录名    #增量恢复时,指定使用哪个备份目录的恢复数据。
  1 #rm -rf/var/lib/mysql
  2 恢复日志
  #innobackupex   --userroot    --password123456
  --databases="mysqlperformance_schema   sys   db66"
  --apply-log--redo-only/onedir
  #innobackupex   --userroot    --password123456
  --databases="mysqlperformance_schema   sys   db66"
  --apply-log--redo-only   /onedir    --incremental-dir=/new1dir
  #innobackupex   --userroot    --password123456
  --databases="mysqlperformance_schema   sys   db66"
  --apply-log--redo-only   /onedir    --incremental-dir=/new2dir
  3 恢复数据
  #innobackupex   --userroot    --password123456
  --databases="mysqlperformance_schema   sys   db66"
  --copy-bak   /onedir
  4 修改文件所有者
chown-R mysql:mysql/var/lib/mysql
  5 重启数据库服务
  #systemctl restartmysqld
  6 查看数据
  #mysql -uroot -p123456
  mysql>
  ++++++++++++++++++++++++++++++++++++++++
  恢复完全备份数据中的某张表
  innobackupex命令信息:
  --export导出表信息
  import导入表空间
  删除表空间

  mysql>>  db66.a
  db66.b
  完全备份:
  #innobackupex   --userroot    --password123456
  --databases="db66"   /db66bak   --no-timestamp
  #ls /db66bak
  mysql> use db66;
  mysql> droptablea;
  mysql> createtable a(id int);
  #ls /var/lib/mysql/db66/
  a.frma.ibd
  导出表信息
  #innobackupex --user root --password 123456
  --databases="db66" --apply-log --export /db66bak
  #ls /db66bak/db66/
  删除表空间

  mysql>>  #ls /var/lib/mysql/db66/
  把备份目录下导出的表信息文件拷贝到数据库目录下
cp /db66bak/db66/a.{cfg,exp,ibd}/var/lib/mysql/db66/
chown mysql /var/lib/mysql/db66/a.*
  导入表空间

  mysql>>  mysql> select froma;
  mysql> select   fromb;
  ++++++++++++++++++++++++++++++++++++++++
  innobackupex 增量备份
  选项:
  --user    --password    --databases
  --incremental
  --incremental-basedir
  --apply-log   --redo-only    --incremental-dir
  --export   import

  mysql>>  完全备份完全恢复
  增量备份增量恢复 (增量备份原理)
  使用完全备份文件恢复某张表的数据
  +++++++++++++++++++++++++++++++++++++++++
  53 :scp-r/var/lib/mysql   192.168.4.51:/var/lib/
  51 : chown -Rmysql:mysql/var/lib/mysql
  systemctlrestartmysql

页: [1]
查看完整版本: mysql五