zoukankan      html  css  js  c++  java
  • Xtrabackup 热备

    Xtrabackup介绍
    Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁);
    mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合。

    安装:
    用默认的yum安装的版本较低,不支持mysql5.7,需要如下操作方能安装较新的版本
    yum install https://www.percona.com/downloads/percona-release/redhat/latest/percona-release-0.1-4.noarch.rpm

    yum install percona-xtrabackup-24
    这种方式简单粗暴。其他方法经常会出现缺少依赖的情况,处理起来很耗时间,如下面方法:

    下载官网https://www.percona.com/downloads/XtraBackup/

    下载XtraBackup rpm包
    wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm

    安装依赖包:
    yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL perl-Digest-MD5
    rpm -ivh ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/libev-4.15-1.el6.rf.x86_64.rpm
    rpm -ivh http://mirror.centos.org/centos/6/os/x86_64/Packages/numactl-2.0.9-2.el6.x86_64.rpm

    安装XtraBackup
    rpm -ivh percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm

    备份:

    将备份的数据存在本地

    innobackupex --defaults-file=/etc/my.cnf --user=root --password=64704b  /www/219bake

    将备份的数据压缩后存在本地

    innobackupex -p057ab  --stream=tar /tmp | gzip > /usr/local/src/xtraback/backup/241bake.tar.gz

    将备份的数据压缩后以流的方式传输到存储服务器

    innobackupex -p64704bf  --stream=tar /tmp | ssh root@192.168.6.250 "gzip > /www/bake/250/20180426.tar.gz"

    还原:

    将事物日志应用到备份的数据中

    innobackupex --apply-log --redo-only --use-memory=1G ./

    将mysql停止,并删除mysql的所有数据

    service mysqld stop

    rm -rf /home/www/server/data/*

    将备份数据拷贝回/home/www/server/data
    innobackupex --datadir=/home/www/server/data --copy-back ./

    设置mysql访问权限

    chown -R mysql.mysql /home/www/server/data/*

    重启mysql

    service mysqld restart

    登录mysql,设置从主服务器同步数据

    set global server_id=111;

    从xtrabackup_binlog_pos_innodb获取log file name和位置

    cat xtrabackup_binlog_pos_innodb

    设置从主库同步

    change master to  master_host='192.168.7.*',master_user='liaogs',master_password='adfadfasdf',master_log_file='mysql-bin.000893',master_log_pos=1008633;

    start slave;

    show slave status G;

    重置slave

    reset slave;

    另外

    数据库恢复MySQL [ERROR] Table 'mysql.user' doesn't exist
    删除了数据库文件后,需要重新初始化mysql:
    /www/server/mysql/bin/mysql_install_db --user=mysql --basedir=/www/server/mysql --datadir=/www/server/mysql/data
    在5.6.8之后的版本,用此种方式初始化后,root密码将会存放在 /root/.mysql_secret中,需要用alert重置密码
    ALTER USER 'root'@'%' IDENTIFIED BY 'c3ea96bbd5bf0a94a87a57efd417807d';

  • 相关阅读:
    linux字符设备文件的打开操作
    Linux用ps命令查找进程PID再用kill命令终止进程的方法
    Linux内核锁与中断处理
    写给大数据开发初学者的话
    zabbix监控系统客户端安装
    详解zabbix安装部署(Server端篇)
    Keepalived+Nginx架构整理版
    Nginx + Tomcat 动静分离实现负载均衡
    五个常用的Linux监控脚本代码
    16个Linux服务器监控命令
  • 原文地址:https://www.cnblogs.com/kilometerwine/p/10625435.html
Copyright © 2011-2022 走看看