• 2.1 使用 mysqldump 的 前提:需要开启 binlog 日志功能

    # 1. 修改mysql的配置文件
    vim /etc/my.cnf

    [mysqld]
    # binlog
    # 配置log-bin后,必须配置server-id,MySQL才能启动;
    # server-id在所有的主从服务之间要保证唯一;
    log-bin=mysql-bin
    server-id=1

    # 2.配置完毕之后,重启mysql服务
    service mysqld restart

    2.2 导出 mysql 中的所有数据库的 表结构 以及 表数据

    [root@server01 opt]# mysqldump --all-databases --master-data -uroot -p > dbdump.db
    Enter password: 

    2.3 导出 mysql 中某个单独数据库的 表结构 以及 表数据

    [root@server01 opt]# mysqldump -uroot -p -h127.0.0.1 -P3306  test > test.sql
    Enter password: 

    2.4 导出 mysql 中的数据库 表结构,不包含 表数据

    [root@server01 opt]# mysqldump -uroot -p -h127.0.0.1 -P3306 --add-locks -q -d test > test.sql
    Enter password: 

    3. source命令备份与还原

    #还原格式:
    SOURCE 导入文件的路径;

    2. 
    还原
     要先登录
     create database db1;
     use db1;
     source 路径/备份.sql; 
      执行这个sql脚本文件

    4. 备份、还原db1数据库中的数据

    4.1 备份 db1 数据库

    [root@server01 opt]# mysqldump -uroot -p -h127.0.0.1 -P3306 db1 > db1.sql
    Enter password: 
    [root@server01 opt]
    [root@server01 opt]# ls -ll -h db1.sql 
    -rw-r--r-- 1 root root 3.3K Feb  8 15:12 db1.sql
    [root@server01 opt]

    4.2 删除db1数据库中所有的内容

    mysql> drop database db1;
    Query OK, 2 rows affected (0.02 sec)

    4.3 创建一个新的db1数据库

    导入数据之前,需要创建数据库。

    mysql> create database db1 charset utf8;
    Query OK, 1 row affected (0.01 sec)

    4.4  选中数据库

    mysql> use db1; -- 使用db1数据库
    Database changed
    mysql> 
    mysql> select database(); -- 查看当前使用的数据库
    +------------+
    | database() |
    +------------+
    | db1        |
    +------------+
    1 row in set (0.00 sec)

    mysql> 
    mysql> show tables-- 查看数据库中的表,当前没有表
    Empty set (0.00 sec)

    mysql> 

    4.5 使用SOURCE命令还原数据

    -- 使用 source 命令导入数据
    mysql> source /opt/db1.sql;
    Query OK, 0 rows affected (0.00 sec)

    Query OK, 0 rows affected (0.00 sec)

    Query OK, 0 rows affected (0.00 sec)

    Query OK, 0 rows affected (0.00 sec)

    Query OK, 0 rows affected (0.00 sec)

    ...
    -- 查看当前使用的数据库为 db1
    mysql> select database();
    +------------+
    | database() |
    +------------+
    | db1        |
    +------------+
    1 row in set (0.00 sec)

    mysql> 
    -- 查看当前db1中的数据库表,可以看到已经成功导入
    mysql> show tables;
    +---------------+
    | Tables_in_db1 |
    +---------------+
    | product       |
    | stu3          |
    +---------------+
    2 rows in set (0.00 sec)

    mysql> 

    5. mysql 命令导入数据

    在上面我们使用 source 命令来还原数据,但是这个缺陷是要先进行 mysql 登录。这个命令如果写在 shell 脚本中还没那么方便。

    那么我们可以使用 mysql 命令来直接导入数据。

    格式如下:

    mysql -u用户名 -p密码 数据库名称 < 备份文件

    执行示例如下:

    [root@server01 opt]# mysql -uroot -p db1 < db1.sql 
    Enter password: 
    [root@server01 opt]


    本文分享自微信公众号 - 海洋的渔夫(DevOpsCommunity)。
    如有侵权,请联系 support@oschina.cn 删除。
    本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

    04-03 10:17