go4321 发表于 2018-10-7 06:28:15

MySQL数据管理5-hj

  llbakt2.sh 功能:
  把服务器上userdb库t2表的所有记录备份到本机/mybak文件
  夹里。使用系统日期做备份文件名例如 2017-05-25-t2.sql
  mkdir/shell
  vim/shell/allt2bak.sh
  #!/bin/bash
  day=`date +%Y-%m-%d`
  if[! -e/mybak];then
  mkdir   /mybak
  fi
  mysqldump    -hlocalhost   -uroot   -p123123--flush-
  logsuserdb t2>   /mybak/$day-t2.sql
  :wq
  chmod+x    /shell/allt2bak.sh    &>/dev/null
  /shell/allt2bak.sh
  ls/mybak/*.sql
  crontab-e
  0018    *   *1/shell/allt2bak.sh&>/dev/null
  0018    *   *2-7   /shell/baknewbinlog.sh
  备份每天新生成的binlog日志文件
  :wq
  systemctl   status   crond
  ++++++++++++++++++++++++++++++
  day05
  实时增量备份:启用mysql服务的binlog日志实现
  1 binlog日志介绍: 也叫二进制日志,是mysql服务日志文件
  一种,记录客户端连接数据库服务器后,执行的除查询之外的
  SQL命令。
  查询包括:select    show   desc
  2启用binlog日志
  vim /etc/my.cnf
  
  server_id=12
  log_bin
  binlog_format="mixed"
  :wq
  #systemctlrestartmysqld
  ls /var/lib/mysql/
  localhost-bin.000001日志文件
  localhost-bin.index      日志索引文件
  查看binlog日志文件的内容
  mysqlbinlog    binlog日志文件
  自定义binlog日志文件名和存储目录
  #mkdir/logdir
  #chow mysql/logdir
  #vim /etc/my.cnf
  
  server_id=12
  #log_bin
  log_bin=/logdir/plj
  binlog_format="mixed"
  :wq
  #systemctlrestartmysqld
  ls /logdir/
  3 执行binlog日志文件里的SQL命令恢复数据。
  命令格式
  mysqlbinlog选项   binlog日志文件   |mysql-uroot-
  p123123
  选项
  pos节点
  --start-position=数字
  --stop-position=数字
  时间点
  --start-datetime="yyyy-mm-ddhh:mm:ss"
  --stop-datetime="yyyy-mm-ddhh:mm:ss"
  mysqlbinlog   --start-position=1400    --stop-
  position=1816/logdir/plj.000001    | mysql-uroot -
  p123123
  手动创建新的binlog日志文件
  # systemctlrestart mysqld
  mysql>flushlogs;
  # mysql -uroot -p123123 -e "show databases"
  #mysqldump-uroot -p123123--flush-logsuserdb>
  /opt/userdb.sql
  删除已有的binlog日志文件?
  把编号之前的日志文件删除
  mysql> purgemasterlogsto"binlog文件名";
  mysql>purgemasterlogsto"plj.000003";
  删除所有的binlog日志文件,重新生成第一个日志文件
  mysql> reset   master ;
  +++++++++++++++++++++++++++++
  安装第3方软件做增量备份与恢复
  # rpm -qperl-DBD-MySQLperl-Digest-MD5
  # rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
  # rpm -ivh percona-xtrabackup-24-2.4.7-
  1.el7.x86_64.rpm
  命令格式
  #innobackupex
  db105.t1   (200-700)
  #innobackupex --user root--password123123--
  databases="db105.t1"   /fullbak   --no-timestamp
  db105.t1(10 -- 777)
  # innobackupex --user root--password123123--
  databases="db105.t1"--incremental/new1dir--
  incremental-basedir=/fullbak --no-timestamp
  db105.t1(7 -- 3333)
  # innobackupex --user root--password123123--
  databases="db105.t1"   --incremental /new2dir   --
  incremental-basedir=/new1dir   --no-timestamp
  # cp -r /var/lib/mysql/mysql   /opt/mysql.bak
  增量恢复数据
  1 默认数据丢失
  rm-rf /var/lib/mysql
  mkdir /var/lib/mysql
  chownmysql:mysql/var/lib/mysql
  2 恢复日志文件
  #innobackupex --user root --password 123456 --
  databases="db105.t1" --apply-log --redo-only/fullbak
  #innobackupex --user root --password 123456 --
  databases="db105.t1"   --apply-log --redo-only
  /fullbak   --incremental-dir="/new1dir"
  #innobackupex --user root --password 123456 --
  databases="db105.t1"   --apply-log --redo-only
  /fullbak   --incremental-dir="/new2dir"
  3 把备份目录下文件拷贝回数据库目录下
  # innobackupex --user root --password 123456 --
  databases="db105.t1" --copy-back /fullbak
  # cp -r   /opt/mysql.bak /var/lib/mysql/mysql
  #chown-R mysql:mysql/var/lib/mysql/
  4 重启数据库服务
  #systemctl restartmysqld
  5 登录查看数据
  mysql   -uroot-p123123
  mysql> select* from db105.t1;
  备份过程
  lsn   日志序列号
  数据库目录下
  ib_logfile0
  ib_logfile1
  ibdata1
  备份目录下
  xtrabackup_checkpoints
  xtrabackup_logfile
  ibdata1
  #systemctlstop mysqld
  #mv /etc/my.cnf /etc/my.cnf.bak
  #rm -rf /var/lib/mysql
  #mysql_install_db--datadir=/var/lib/mysql --
  user=mysql
  #rm -rf /var/lib/mysql/mysql/
  #cp -r /opt/mysql.bak/ /var/lib/mysql/mysql
  # chown-R mysql:mysql /var/lib/mysql
  # systemctlstatus mysqld
  恢复完全备份文件中的某个表
  mysql> drop tablebbsdb.a;
  #innobackupex --user root --password 654321 --
  databases="bbsdb" --apply-log --export /allbak//导出
  表信息
  mysql> createtable gamedb.a(id int); //创建表

  mysql>>  表空间
  mysql> system cp /allbak/bbsdb/a.{ibd,cfg,exp}
  /var/lib/mysql/bbsdb   //拷贝表信息文件
  mysql> system chown mysql:mysql
  /var/lib/mysql/bbsdb/a.*   //修改所有者

  mysql>>  表空间
  mysql> select* fromgamedb.a;
  ++++++++++++++++++++++++++++++++++++
  MySQL 主从同步
  12
  主数据库服务器的配置
  mysql> grantreplicationslaveon*.*to   plj@"%"
  identified by "123456";
  vim /etc/my.cnf
  
  server_id=12
  log_bin=master12
  binlog_format="mixed"
  :wq
  # systemctlrestart mysqld
  mysql> show master status;
  11
  配置从数据库服务器
  # mysql -h192.168.4.12-uplj-p123456
  vim /etc/my.cnf
  
  server_id=11
  log_bin=slave11
  :wq
  # systemctlrestart mysqld
  mysql> show slave status;
  Empty set (0.00 sec)
  mysql> changemasterto
  master_host="192.168.4.12",master_user="plj",master_
  password="123456",master_log_file="master12.000001
  ",master_log_pos=154;
  mysql> startslave;
  mysql> showslave status\G;
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
  测试主从同步配置
  12
  mysql -uroot -p123123
  mysql> createdatabasedb105;createtabledb105.a
  (id int); insert intodb105.a values(100);
  11
  mysql -uroot -p654321
  mysql>select* from db105.a;

页: [1]
查看完整版本: MySQL数据管理5-hj