zoukankan      html  css  js  c++  java
  • mysql备份

    1. 直接打包数据库文件夹,如/usr/local/mysql/data/

    例子:

    mysql> create database abc;

    mysql> use abc;

    mysql> create table test(name char(10),age int(3));

    mysql> insert into test values ('xiaoming',10);

    mysql> select * from test;

     

    备份数据

    service mysqld stop

    cd /usr/local/mysql/data/

    yum -y install xz

    tar Jcf mysql_all-$(date +%F).tar.xz /usr/local/mysql/data/

     

    模拟数据丢失

     [root@localhost ~]# mkdir bak

    [root@localhost ~]# mv /usr/local/mysql/data/* bak/

     

    恢复数据:

    [root@localhost ~]# mkdir restore

    [root@localhost ~]# tar xf mysql_all-2016-12-08.tar.xz -C restore/

    [root@localhost ~]# mv restore/usr/local/mysql/data/* /usr/local/mysql/data/

    [root@localhost ~]# service mysqld start

    查看数据已经恢复

     

    2.完全备份

    1)对单个数据库备份

    格式: mysqldump -u 用户名 -p[密码]  数据库名  >  /备份路径/备份文件名

    例子:

     

    mysqldump -u root aaa > aaa.sql

     

    注意:这种备份方法不会在备份文件中有创建数据库的sql语句。还原时必须手动在数据中创建aaa数据库才能还原。

    加上--database 就会自动生成创建数库的sql语句。

     

     

    2)对多个库进行完全备份
    格式: mysqldump -u 用户名 -p [密码]  --databases 库名 1 [库名 2]… > /备份路径/备份文件名

    示例:

     

    mysqldump -u root --databases aaa bbb > all.sql

    注意:这种方法将两个数据库备份到了一个文件中,在备份的sql文件,会生成创建数据库的sql语句。

     

    3)对所有库进行完全备份
    格式: mysqldump -u 用户名 -p [密码] [选项] --all-databases > /备份路径/备份文件名

    示例:

    mysqldump -u root --all-databases > all.sql

     

    4)备份表

    格式: mysqldump -u 用户名 -p [密码] [选项] 数据库名 表名 > /备份路径/备份文件名

    mysqldump -uroot aaa test > table_test.sql

    还原:

    mysql -uroot aaa < table_test.sql

     

    5)备份表结构

    格式: mysqldump -u 用户名 -p [密码] -d 数据库名 表名 > /备份路径/备份文件名
    示例:

    mysqldump -uroot -d aaa test > table_test.sql

     

    备份实例:

    需求描述:
    北京移电通信公司的用户信息数据库为 client,用户资费数据表为 user_info
    请为该公司每周进行完全备份
    每天为该公司进行增量备份
    新增加的用户信息如表所示

     

     

     

     

     

     

     

     

     

    命令:

    create database client;

    use client;

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

    insert into user_info values('000000006','孙空悟','男','016','10');

    insert into user_info values('000000007','蓝精灵','女','017','91');

    insert into user_info values('000000008','姜姜','女','018','23');

    select * from user_info;

     

    进行一次完全

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

     

    刷新二进制文件

    cd /usr/local/mysql/data/

    ls

     

    开始刷新二进制文件

    [root@localhost data]# mysqladmin -uroot  flush-logs

     

    然后我们开始输入新的数据。这时候新的数据就会生成在新的二进制文件中

     

    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;

     

     

    进行增量备份

        查看刚才新生成的数据

       mysqlbinlog --no-defaults /usr/local/mysql/data/mysql-bin.000009

    备份刚才新生成的数据

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

    [root@localhost data]# cp -r mysql-bin.000009 /mysql_bak/

     

    模拟误操作删除 user_info 表
    [root@localhost ~]# mysql -uroot -e 'drop table client.user_info;'
    [root@localhost ~]# mysql -uroot -e 'select * from client.user_info;'
    ERROR 1146 (42S02) at line 1: Table 'client.user_info' doesn't exist

     

    恢复完全备份
    mysql -uroot client < /mysql_bak/client_userinfo-2016-12-09.sql
    mysql -uroot -e 'select * from client.user_info;'

     

    恢复增量备份
     mysqlbinlog --no-defaults /mysql_bak/mysql-bin.000002 | mysql -u root

    在查看是否恢复成功
     mysql -uroot -e 'select * from client.user_info;'

     

    恢复成功。

     

     

     

     

     

    基于时间点的增量备份恢复

    删除表。

    在重新恢复一下完全备份

    mysql -uroot  -e 'drop table client.user_info;'

     

    恢复完全备份
    mysql -uroot client < /mysql_bak/client_userinfo-2016-12-09.sql
    mysql -uroot -e 'select * from client.user_info;'

     

    我们只恢复关云长的信息

    # at 177

    #160717  8:55:59 server id 1  end_log_pos 312     Query  thread_id=7   exec_time=0    error_code=0

    use client/*!*/;

    SET TIMESTAMP=1468716959/*!*/;

    insert into user_info values('000000009','关云长','男','019','37')

     

    开始恢复

    [root@localhost ~]# mysqlbinlog --no-defaults --stop-datetime='2016-07-17 8:56:00' /mysql_bak/mysql-bin.000009 |mysql -u root

     

     

     

     

    仅恢复“罗纲”的信息,跳过“关云长”的信息恢复

    删除表。

    在重新恢复一下完全备份

    mysql -uroot  -e 'drop table client.user_info;'

     

    恢复完全备份
    mysql -uroot client < /mysql_bak/client_userinfo-2016-12-09.sql
    mysql -uroot -e 'select * from client.user_info;'

     

    开始恢复

     

     

    [root@localhost ~]# mysqlbinlog --no-defaults --start-datetime='2016-07-17 8:56:00' /mysql_bak/mysql-bin.000009 |mysql -u root

     

     

  • 相关阅读:
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    Apache Spark RDD(Resilient Distributed Datasets)论文
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    【机器学习实战】第10章 K-Means(K-均值)聚类算法
    [译]flexbox全揭秘
  • 原文地址:https://www.cnblogs.com/pangbing/p/7739879.html
Copyright © 2011-2022 走看看