zoukankan      html  css  js  c++  java
  • Mysql增量备份与恢复

    案例:

    关闭防火墙:

    systemctl stop firewalld

    iptables -F

    setenforce 0

    安装mariadb mariadb-server

    yum -y install mariadb

    yum -y install mariadb-server

    vim /etc/my.cnf

    [mysqld]

    server-id=1

    log-bin=mysql-bin

    datadir=/var/lib/mysql

    socket=/var/lib/mysql/mysql.sock

    symbolic-links=0

    default-storage-engine = INNODB

    character-set-server = utf8

    collation-server = utf8_general_ci

    # Disabling symbolic-links is recommended to prevent assorted security risks

    symbolic-links=0

    # Settings user and group are ignored when systemd is used.

    # If you need to run mysqld under a different user or group,

    # customize your systemd unit file for mariadb according to the

    # instructions in http://fedoraproject.org/wiki/Systemd

    [mysqld_safe]

    log-error=/var/log/mariadb/mariadb.log

    pid-file=/var/run/mariadb/mariadb.pid

    #

    # include all files from the config directory

    #

    !includedir /etc/my.cnf.d

    添加数据库、表,录入数据

    [root@localhost ~]# mysql -uroot -p123456

    mysql> create database client;

    mysql> use client;

    mysql> create table user_info(身份证 char(20) not null,姓名 char(20) not null,性别 char(4),用户ID号 char(10) not null,资费 int(10));

    mysql> insert into user_info values('000000006','张三','男','016','10');

    mysql> insert into user_info values('000000007','李四','女','017','91');

    mysql> insert into user_info values('000000008','王五','女','018','23');

    mysql> select * from user_info;

    先进行一次完全备份

    [root@localhost ~]# mkdir /mysql_bak

    [root@localhost~]#mysqldump -uroot -p123456 client user_info >/mysql_bak/client_userinfo-$(date +%F).sql

    [root@localhost ~]# mysqldump -uroot -p123456 --databases client >/mysql_bak/client-$(date +%F).sql

    [root@localhost ~]# ls /mysql_bak/

    client-2018-12-14.sql  client_userinfo-2018-12-14.sql

    进行一次日志回滚(生成新的二进制日志)

    [root@localhost ~]# ls /usr/local/mysql/data

    client  ibdata1  ib_logfile0  ib_logfile1  localhost.localdomain.err  mysql  mysql-bin.000001  mysql-bin.index  mysql.sock  test

    [root@localhost ~]# mysqladmin -uroot -p123456 flush-logs

    [root@localhost ~]# ls /usr/local/mysql/data

    client  ibdata1  ib_logfile0  ib_logfile1  localhost.localdomain.err  mysql  mysql-bin.000001  mysql-bin.000002  mysql-bin.index  mysql.sock  test

    继续录入新的数据

    [root@localhost ~]# mysql -uroot -p123456

    mysql> use client;

    mysql> insert into user_info values('000000009','赵六','男','019','37');

    mysql> insert into user_info values('0000000010','孙七','男','020','36');

    mysql> select * from user_info;

    进行增量备份

    [root@localhost ~]# mysqladmin -uroot -p123456 flush-logs

    [root@localhost ~]# ls /usr/local/mysql/data

    client   ib_logfile0  localhost.localdomain.err  mysql-bin.000001  mysql-bin.000003  mysql.sock ibdata1  ib_logfile1  mysql  mysql-bin.000002  mysql-bin.index   test

    [root@localhost ~]# mysqlbinlog --no-defaults --base64-output=decode-rows -v /mysql_bak/mysql-bin.000002   //查看新操作的日志记录

    [root@localhost ~]# cp -p /usr/local/mysql/data/mysql-bin.000002 /mysql_bak/

    模拟误操作删除user_info表

    [root@localhost ~]# mysql -uroot -p123456 -e 'drop table client.user_info;'

    [root@localhost ~]# mysql -uroot -p123456 -e 'select * from client.user_info;'

    ERROR 1146 (42S02) at line 1: Table 'client.user_info' doesn't exist

    恢复完全备份

    [root@localhost ~]# mysql -uroot -p123456 client < /mysql_bak/client_userinfo-2018-12-14.sql

    [root@localhost ~]# mysql -uroot -p123456 -e 'select * from client.user_info;'

    恢复增量备份

    [root@localhost ~]# mysqlbinlog --no-defaults /mysql_bak/mysql-bin.000002 | mysql -u root -p123456

    [root@localhost ~]# mysql -uroot -p123456 -e 'select * from client.user_info;'

    [root@localhost ~]# mysql -uroot -p123456 client < /mysql_bak/client_userinfo-2018-12-14.sql

    [root@localhost ~]# mysqlbinlog --no-defaults /mysql_bak/mysql-bin.000002

    仅恢复到12:06:00之前的数据,即不恢复“孙七”的信息

    [root@localhost ~]# mysqlbinlog --no-defaults --stop-datetime='2018-12-14 12:06:00' /mysql_bak/mysql-bin.000002 |mysql -uroot -p123456

    [root@localhost ~]# mysql -uroot -p123456 -e 'select * from client.user_info;'

    仅恢复“孙七”的信息,跳过“赵六”的信息恢复

    [root@localhost ~]# mysql -uroot -p123456 -e 'drop table client.user_info;'

    [root@localhost ~]# mysql -uroot -p123456 client < /mysql_bak/client_userinfo-2018-12-14.sql

    [root@localhost ~]# mysqlbinlog --no-defaults --start-datetime='2018-12-14 12:06:00' /mysql_bak/mysql-bin.000002 |mysql -uroot -p123456

    [root@localhost ~]# mysql -uroot -p123456 -e 'select * from client.user_info;'

    基于位置的恢复

    [root@localhost ~]# mysql -uroot -p123456 -e 'drop table client.user_info;'

    [root@localhost ~]# mysql -uroot -p123456 -e 'select * from client.user_info;'

    ERROR 1146 (42S02) at line 1: Table 'client.user_info' doesn't exist

    [root@localhost ~]# mysql -uroot -p123456 client < /mysql_bak/client_userinfo-2018-12-14.sql

    [root@localhost ~]# mysqlbinlog --no-defaults --stop-position='241' /mysql_bak/mysql-bin.000002 |mysql -uroot -p123456

    [root@localhost ~]# mysql -uroot -p123456 -e 'select * from client.user_info;'

    [root@localhost ~]# mysql -uroot -p123456 -e 'drop table client.user_info;'

    [root@localhost ~]# mysql -uroot -p123456 client < /mysql_bak/client_userinfo-2018-12-14.sql

    [root@localhost ~]# mysqlbinlog --no-defaults --start-position='241' /mysql_bak/mysql-bin.000002 |mysql -uroot -p123456

    [root@localhost ~]# mysql -uroot -p123456 -e 'select * from client.user_info;'

  • 相关阅读:
    c#数据类型
    遮罩层
    图片轮播
    js 获取浏览器高度和宽度值
    bootstrap、jquery
    洛谷P1442 铁球落地 题解
    HDU3016 Man Down 题解
    POJ2892 Tunnel Warfare 题解
    HDU2795 Billboard 题解
    CF920F SUM and REPLACE 题解
  • 原文地址:https://www.cnblogs.com/liyurui/p/11740583.html
Copyright © 2011-2022 走看看