zoukankan      html  css  js  c++  java
  • MySQL完全备份操作

    MySQL数据库的完全备份可以采用多种方式,物理冷备份一般用tar命令直接打包数据库文件夹(数据目录),而在备份前需要先停库。

    1、直接打包数据库文件夹,源码包的位置/usr/local/mysql/data/,rpm包的位置 /var/lib/mariadb/

    示例:

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

    mysql> show databases;

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | class              |

    | client             |

    | li                 |

    | mysql              |

    | performance_schema |

    | sys                |

    +--------------------+

    mysql> exit

    Bye

    [root@localhost ~]# systemctl stop mysqld.service

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

    auto.cnf        ibdata1      localhost.localdomain.err  sys

    class           ib_logfile0  mysql

    client          ib_logfile1  mysql.log

    ib_buffer_pool  li           performance_schema

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

    db.opt  users.frm  users.ibd

    [root@localhost ~]# rpm -q xz

    xz-5.1.2-9alpha.el7.x86_64

    [root@localhost ~]# tar jcf backup/mysql_all-$(date +%F).tar.xz /usr/local/mysql/data/

    tar: 从成员名中删除开头的“/”

    [root@localhost ~]# ls backup/

    client.user_info-20191012.sql  mysql_all-2019-10-14.tar.xz

    [root@localhost ~]# rm -rf /usr/local/mysql/data/class/

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

    auto.cnf        ibdata1      li                         mysql.log

    client          ib_logfile0  localhost.localdomain.err  performance_schema

    ib_buffer_pool  ib_logfile1  mysql                      sys

    [root@localhost ~]# systemctl start mysqld.service

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

    mysql> show databases;

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | client             |

    | li                 |

    | mysql              |

    | performance_schema |

    | sys                |

    +--------------------+

    6 rows in set (0.00 sec)

    mysql> exit

    Bye

    [root@localhost ~]# mkdir /news

    [root@localhost ~]# mv backup/mysql_all-2019-10-14.tar.xz /news/

    [root@localhost ~]# cd /news/

    [root@localhost news]# ls

    mysql_all-2019-10-14.tar.xz

    [root@localhost news]# tar xf mysql_all-2019-10-14.tar.xz

    [root@localhost news]# ls

    mysql_all-2019-10-14.tar.xz  usr

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

    db.opt     users.frm  users.ibd 

    [root@localhost news]# mv usr/local/mysql/data/class /usr/local/mysql/data/

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

    mysql> show databases;

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | class              |

    | client             |

    | li                 |

    | mysql              |

    | performance_schema |

    | sys                |

    +--------------------+

    7 rows in set (0.00 sec)

    mysql> use class;

    Reading table information for completion of table and column names

    You can turn off this feature to get a quicker startup with -A

    Database changed

    mysql> select * from users;

    +-----------+-------------------------------------------+

    | user_name | user_passwd                               |

    +-----------+-------------------------------------------+

    | lisi      | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |

    | wangwu    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

    | zhangsan  | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |

    +-----------+-------------------------------------------+

    3 rows in set (0.00 sec)

    mysql> exit

    2、使用专用备份工具mysqldump

           MySQL自带的备份工具mysqldump,可以很方便的对MySQL进行备份。通过该命令工具可以将数据库、数据表或全部的库导出为SQL脚本,便于该命令在不同版本的MySQL服务器上使用。例如,当需要升级MySQL服务器时,可以先使用mysqldump命令将原有库信息到导出,然后直接在升级后的MySQL服务器中导入即可。

    (1)对单个库进行完全备份

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

    示例:

    [root@localhost ~]# mysqldump -uroot -p123456 --databases auth > backup/auth-$(date +%Y%m%d).sql

    mysqldump: [Warning] Using a password on the command line interface can be insecure.

    [root@localhost ~]# cat backup/auth-20181214.sql

    (2)对多个库进行完全备份

    格式:mysqldump -u用户名 -p [密码] [选项] --databases 库名1 [库名2]… > /备份路径/备份文件名

    示例:

    [root@localhost ~]# mysqldump -uroot -p123456 --events --databases mysql auth > backup/mysql+auth-$(date +%Y%m%d).sql

    [root@localhost ~]# cat backup/mysql+auth-20181214.sql

    (3)对所有库进行完全备份

    格式:mysqldump -u用户名 -p [密码] [选项] --opt --all-databases > /备份路径/备份文件名

    示例:

    [root@localhost ~]# mysqldump -uroot -p123456 --events --opt --all-databases > backup/mysql_all.$(date +%Y%m%d).sql

    [root@localhost ~]# cat backup/mysql_all.20181214.sql

    //--opt 加快备份速度,当备份数据量大时使用

    [root@localhost ~]# cat backup/mysql_all.20160505.sql

    (4)对表进行完全备份

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

    示例:

    [root@localhost ~]# mysqldump -uroot -p123456 auth user > backup/auth_user-$(date +%Y%m%d).sql

    [root@localhost ~]# cat backup/auth_user-20181214.sql

    (5)对表结构的备份

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

    示例:

    [root@localhost ~]# mysqldump -uroot -p123456 -d mysql user > backup/desc_mysql_user-$(date +%Y%m%d).sql

    [root@localhost ~]# cat backup/desc_mysql_user-20181214.sql

    使用mysqldump备份后,恢复数据库

    1、source命令

    登录到MySQL数据库,执行source 备份sql脚本路径

    示例:

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

    mysql> show databases;

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | auth               |

    | mysql              |

    | performance_schema |

    | test               |

    | usr                |

    +--------------------+

    6 rows in set (0.00 sec)

     

    mysql> drop database auth;

    Query OK, 1 row affected (0.12 sec)

     

    mysql> source backup/mysql_all.20181214.sql

    mysql> show databases;

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | auth               |

    | mysql              |

    | performance_schema |

    | test               |

    | usr                |

    +--------------------+

    6 rows in set (0.00 sec)

    2、mysql命令

    格式:mysql -u用户名 -p [密码] < 库备份脚本的路径

             mysql -u用户名 -p [密码] 库名 < 表备份脚本的路径

    示例:

    [root@localhost ~]# mysql -uroot -p123456 -e 'show databases;'

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | auth               |

    | mysql              |

    | performance_schema |

    | test               |

    | usr                |

    +--------------------+

    [root@localhost ~]# mysql -uroot -p123456 -e 'drop database auth;'

    [root@localhost ~]# mysql -uroot -p123456 < backup/mysql_all.20181214.sql

    [root@localhost ~]# mysql -uroot -p123456 -e 'show databases;'

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | auth               |

    | mysql              |

    | performance_schema |

    | test               |

    | usr                |

    +--------------------+

     

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

    [root@localhost ~]# mysql -uroot -p123456 auth< backup/auth_user-20181214.sql

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

    +------------+------+

    | name       | ID   |

    +------------+------+

    | crushlinux |  123 |

    +------------+------+

  • 相关阅读:
    SEO常用外链资源站整理分享
    不同的LINUX系统,跨服务器快速拷贝文件
    WPS表格、Excel常用技巧大全,99%人都不知道,但非常实用!
    php 5.4中php-fpm 的重启、终止操作命令
    帝国CMS伪静态
    Centos7访问Win7/Win10系统中的共享文件
    H3C S5500三层交换机划分Vlan与H3C路由组网
    H3C S5500V2交换机误格式化恢复
    linux_centos7_时间更新
    Centos7安装mysql数据库
  • 原文地址:https://www.cnblogs.com/liyurui/p/11740522.html
Copyright © 2011-2022 走看看