MySQL之备份和恢复(msyqldump、LVM、xtrabackup)(2)

--all-databases 备份所有库,包含CREATE DATABASE命令,无需手动创建库
        --database DBNAME,... 备份指定库,包含CREATE DATABASE命令,无需手动创建库 

--events 备份事件调度器
        --routines 备份存储过程和函数
        --triggers 备份触发器


    备份思路:
        锁表 --> 磁盘同步数据-->刷新二进制日志 --> 备份二进制日志文件(最好全部保留) --> 完全备份 --> 增量备份

还原思路:
        如有必要重新初始化数据库 --> 临时关闭二进制日志记录 --> 还原完全备份 --> 还原增量备份 --> 即时点还原(将编号最大的二进制日至文件通过管道送给mysql服务器 )--> 开启二进制日志记录

备份策略:
        完全+增量:

还原策略:
        完全+增量+即时点

实例:
        1.备份jiaowu数据库,假设为MyISAM引擎,使用温备份:
            mysql> LOCK TABLES;
            mysql> FLUSH TABLES;
            或
            mysql>FLUSH TABLES WITH READ LOCK;
            mysql>FULSH LOGS;
            mysql>SHOW BINARY LOGS;
            #mysqldump -uroot  -p jiaowu> /root/backup/jiaowu.sql
            mysql>UNLOCK TABLES;


            #mysqldum -uroot -p --master-data=2 --lock-all-tables --flush-logs  jiaowu > /root/backup/jiaowu.sql

2.备份jiaowu数据库,假设为InnoDB引擎,使用热备份:
            #mysqldump -uroot -p --master-data=2 --flush-logs --single-transaction jiaowu > /root/backup/jiaowu.sql
           
        3.完全备份:
            #mysqldump -uroot -p --lock-all-tables  --flush-logs --all-databases --master-data=2  > /root/backup/alldb-`date +%F-%H-%M-%S `.sql

4.增量备份:
            可以备份二进制日志或者是对某表进行备份,根据具体情况而定。
            假设刷新日志后,生成最新的日志为mysql-bin.000008。

mysql>FLUSH LOGS;
            #cp mysql-bin-* /root/binlog/

#mysqlbinlog mysql-bin-000002 >/root/backup/mysql-inc/binlog-2.sql
            ...
            #mysqlbinlog mysql-bin-000007 >/root/backup/mysql-inc/binlog-3.sql

5.即时点备份:
            #mysqlbinlog mysql-bin-0000008> /root/backup/mysql-inc/binlog-`date +%F+%H+%M+%S `.sql

6.假设数据所在磁盘损坏,进行还原:
            初始化数据库并启动服务
                #cd /usr/local/mysql
                #scripts/mysql_install_db --user=root --datadir=/mdata/data
                #service mysqld start

导入完全备份和所有增量:
                #mysql  -uroot -p < /root/backup/alldb-xxxx.sql
                #mysql -uroot -p < /root/backup/mysql-inc/binlog-xxxxx.sql
                ...
            导入即时点数据:
                #mysqlbinlog mysql-bin-LATEST > /root/lastbinlog.sql
                #mysql -uroot -p < /root/lastbinlog.sql
                或
                #mysqlbinlog mysql-bin-LATEST |mysql -uroot -p


        6.使用5的方法虽然可以恢复,但是会被记录到二进制日志中,一般还原的操作是无需记录到二进制日志的。临时关闭当前会话的二进制日志。

mysql>SET sql_log_bin=0;
            mysql>SOURCE /root/backup/alldb-xxxx.sql;
            mysql>SOURCE /root/backup/mysql-inc/binlog-xxxxx.sql;
            ...
            mysql>SOURCE /root/lastbinlog.sql;
            mysql>SET sql_log_bin=1;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e625e449a7fd39c619fdce28de2b182a.html