使用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;

相關文章
相關標籤/搜索