使用xtrabackup进行Mysql不锁表主从复制

Xtrabackup 是percona公司的开源项目,用以实现相似innodb官方的热备份工具InnoDB Hot Backup的功能,可以很是快速地备份与恢复MySQL数据库。 Xtrabackup中包含两个工具:html

xtrabackup是用于热备份innodb, xtradb表中数据的工具,不能备份其余类型的表,也不能备份数据表结构;mysql

innobackupex是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。sql

1、安装数据库

1.配置Yum源centos

# Name: Percona RPM Repositorybash

# URL: http://www.percona.com/percona-lab.html服务器

[percona]app

name = CentOS $releasever - Perconasocket

baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/ide

enabled = 1

#gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona

gpgcheck = 0


2.安装

yum install xtrabackup -y

2、配置主从

  1. 在Master(主服务器)上新建主从备份所使用的帐号

    GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by '123456';

  2. 修改Master配置文件,并重启Mysql服务


    [mysqld]

    thread_concurrency = 32

    long_query_time= 2

    slow-query-log = on

    slow-query-log-file = /home/mysql/logs/mysql-slow.log

    skip-name-resolve

    server_id=205

    binlog-ignore-db=mysql

    log-bin=ddsc-mysql-slave1-bin

    binlog_cache_size = 1M

    expire_logs_days=7

    skip-name-resolve

    relay_log=/data/mysqldb/ddsc-mysql-relay-bin

    slave-skip-errors=all

    log_slave_updates=1

    log-bin=ddsc-mysql-bin

    binlog_format=mixed

  3. 修改Slave配置文件,并重启Mysql服务。配置内容可参考主配置文件,注意:server_id不能一致。

  4. 使用xtrabackup对主库进行备份。

    innobackupex  --defaults-file=/etc/my.cnf --socket=/data/mysqldb/mysql.mysql  --user=root   --password='' /backup/

  5. 若是报错:


    InnoDB: The error means the system cannot find the path specified.

    InnoDB: File ./ib_logfile0: 'open' returned OS error 71. Cannot continue operation

    innobackupex: Error: The xtrabackup child process has died at /usr/bin/innobackupex line 2622.

    修改my.cnf增长:


    datadir=/data/mysqldb

    basedir=/usr/local/mysql/

  6. 把备份好的文件Copy到Slave端。

    scp -r 2016-08-08_13-53-57/ root@192.168.3.225:/tmp/

  7. 通常状况下,这个备份是不能用于恢复的,由于备份的数据中可能会包含还没有提交的事务或已经提交但还没有同步至数据文件中的事务。所以,此时数据文件处于不一致的状态,咱们如今就是要经过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。

    innobackupex -apply-log /tmp/2016-08-08_13-53-57/

  8. 恢复数据

    先中止mysqld服务,而后清空数据文件目录,恢复完成后再设置权限


  9. service mysqld stop
    mv /data/mysqldb /data/mysqldb_old
    mkdir -p /data/mysqldb
    innobackupex --copy-back /tmp/2016-08-08_13-53-57/
    chown -R mysql.mysql /data/mysql/data
    service mysqld start

8.查看binlog日志文件的位置值,作主从同步:

cat /tmp/2016-08-08_13-53-57/xtrabackup_binlog_info

ddsc-mysql-bin.00001912476 #这两个数字是用来作主从的必备

9.在slave机器上作主从相关操做:

CHANGE MASTER TO

MASTER_HOST='192.168.1.xxx',

MASTER_USER='rep',

MASTER_PASSWORD='xxxxxx',

MASTER_PORT=3306,

MASTER_LOG_FILE='ddsc-mysql-bin.000019',

MASTER_LOG_POS=12476;

     

10.启动从服务器

start slave;

相关文章
相关标签/搜索