Linux公社论坛

 找回密码
 注册
查看: 207|回复: 0

[教程分享] mysql 备份

[复制链接]

3

主题

0

听众

7

积分

新手上路

Rank: 1

tonyann 发表于 2019-8-4 19:35:01 |显示全部楼层
MySQL备份/恢复策略

备份很重要

备份需要备份某一时刻的数据库

1. 逻辑备份
        读出表中的行,放在一个文件里

2. 物理备份
        1. 冷备 关闭数据库
        2. 热备

备份要求:备份的东西要和binlog联系起来
备份之前的检查
        1. 文件内容是否正确,主要看datadir
        2. ls –ld 看一下datadir权限
        3. 进入datadir看一些里面的内容是否齐全
                1. ibdata1
                2. ib_logfile0
                3. mysql
                4. performance_schema
                5. tpcc1000
        4. 确认一下errlog,pid,sock
        5. mysqld_safe –defaults-file=/etc/my.cnf &
        6. ps –ef |grep mysqld ;netstat –tulnp |grep 3306;
        7. tail -200f errlog
        8. mysql –uroot –p –h127.0.0.1 ;mysql –uroot –p –S /../../../..sock




逻辑备份和恢复
        逻辑备份的最大优点是对于各种存储引擎都可以用同样的方法来备份
        使用mysqldump工具
                Dumping structure and contents of MySQL databases and tables.
                Usage: mysqldump [OPTIONS] database [tables]
                OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
                OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
                备份:如果显示mysqldump couldn’t execute ‘set option sql_quote_show_create=1’ 则说明系统系统中的mysldump版本问题,需要用我们自己安装的mysql软件中自带的mysqldump去覆盖它,也可以直接指定目录运行也可以
        覆盖的命令如下:[root@database mysql]# cp /usr/local/mysql/bin/mysqldump /usr/bin/mysqldump
                具体的备份操作:[root@database mysql]# mysqldump -uroot -p123456 -h127.0.0.1 tpcc1000 item >/backup/item.sql
               
                修改主机名
                        [root@database mysql]# vim /etc/sysconfig/network


备份与恢复
1. 备份数据库中的表数据
[root@database backup]# mysqldump -uroot -p123456 -h 127.0.0.1 tpcc1000 t1 >/backup/t1.sql

2.查看备份之前的表数据
        mysql> select * from t1;
        +------+------+
        | id   | name |
        +------+------+
        |    1 | 1    |
        |    2 | 2    |
        |    3 | 3    |
        |    4 | 4    |
        +------+------+
        4 rows in set (0.01 sec)

3. 查看备份数据
        [root@database backup]# cat t1.sql |more

4. 删除数据库tpcc1000中的他表

5. 恢复数据库中的t1表
        [root@database backup]# cat t1.sql |mysql -uroot -p123456 -h127.0.0.1 tpcc1000
6. 查看一下数据库tpcc1000中的t1表数据是否恢复,并判断是否完整
        mysql> use tpcc1000;
        Database changed
        mysql> select * from t1;
        +------+------+
        | id   | name |
        +------+------+
        |    1 | 1    |
        |    2 | 2    |
        |    3 | 3    |
        |    4 | 4    |
        +------+------+
        4 rows in set (0.00 sec)

备注:数据在恢复过程中,要锁表


逻辑备份:备份出来的数据是一行行数据
        mysqldump命令中一下比较重要的参数
                -u ,–user 用户
                -p, –password 密码
                -F, --flush-logs 备份数据时,重新开启一个binlog文件
                --single-transaction  备份innodb表不需要锁表,不影响备份期间使用表 (一定要接)
                -l, --lock-tables  锁住myisam表 (一定要接)

          --fields-terminated-by=’,!#’   指定列与列之间的分割符
                      Fields in the output file are terminated by the given
                      string.
          --fields-enclosed-by=name
                      Fields in the output file are enclosed by the given
                      character.
          --fields-optionally-enclosed-by=name
                      Fields in the output file are optionally enclosed by the
                      given character.
          --fields-escaped-by=name
                      Fields in the output file are escaped by the given
                      character.
                -T, --tab=name  建立一个以tab键为分隔符的文本文件  需要接目录


备注:为了保证数据备份的一致性,myisam存储引擎在备份的时候需要加上-l参数,表示将所有的表加上锁,在备份期间,所有的表将只能读而不能进行数据更新,但是对于事务存储引擎(innodb和BDB)来说,可以采用更好的选项 –single-transaction,此选项将使得innodb存储引擎得到一个快照(Snapshot),使得备份的数据能够保持一致性(MVCC)

        1. 备份出来的数据对应的binlog的日志起点

        1. myisam表 -l, --lock-tables  锁住innodb表 (一定要接)
        2. innodb表  --single-transaction  备份innodb表不需要锁表,不影响备份期间使用表 (一定要接)


        完全恢复:
                mysql –uroot –p123456 <item.sql
您需要登录后才可以回帖 登录 | 注册

关注Linux公社官方微信,免费领取邀请码。

手机版|Linux公社(LinuxIDC.com)旗下网站【www.linuxidc.net】

GMT+8, 2019-9-18 00:56 , Processed in 0.041003 second(s), 13 queries , Wincache On.

Powered by Discuz! X 3.2

© 2010-2016 Comsenz Inc.

回顶部