利用percona-xtrabackup快速搭建MySQL資料庫主從複製

來源:互聯網
上載者:User

標籤:mysql資料庫主從配置   innobackupex 備份恢複資料庫   xtrabackup備份恢複資料庫   innobackupex 備份還原資料庫   xtrabackup備份還原資料庫   

應用情境:

Linux伺服器A運行MySQL服務,並開啟了log-bin(log-bin = mysql-bin)和指定了server-id(server-id = 1);

Linux伺服器B也以與伺服器A同樣的方式(不同樣也可以,參考下面的“注意”)安裝了MySQL服務,可開啟log-bin也可不開啟log-bin,如果開啟了log-bin則需要注意MySQL function的限制問題(可通過set global log_bin_trust_function_creators=TRUE;解決);

複製模式:伺服器B與伺服器A的MySQL完全同步(推薦這麼做,參考:《記一次因磁碟塊預設保留原則導致的資料庫匯入失敗問題》文章中的最後一段關於資料庫HA的描述)。

注意:

伺服器A和伺服器B最好採用相近的硬體設定和資料庫安裝參數。如果資料庫都是編譯安裝的,那需要注意配置libmysqlclient18,否則會導致手動安裝的percona-xtrabackup運行時報錯,說找不到某些運行檔案。

可參考:

# Set mysql library    ln -s /usr/local/mysql/lib/libmysqlclient.so.18.0.0 /usr/lib64/libmysqlclient.so.18.0.0    ln -s /usr/local/mysql/lib/libmysqlclient.so.18.0.0 /usr/lib64/libmysqlclient.so.18    ln -s /usr/local/mysql/lib/libmysqlclient.so.18.0.0 /usr/lib64/libmysqlclient.so    ls -l /usr/lib64/libmysqlclient.so.18.0.0    ls -l /usr/lib64/libmysqlclient.so.18    ls -l /usr/lib64/libmysqlclient.so    vim /etc/ld.so.conf.d/mysql-x86_64.conf         /usr/lib64/mysql         /usr/local/mysql/lib    ldconfig
工具知識:

percona-xtrabackup是一個開源免費的MySQL備份工具,支援熱備(也就是說備份過程中不影響資料庫使用,io和部分cpu資源還是需要的,但一般來說對資料庫伺服器的影響並不是很大,特別是當資料庫的資料目錄和備份目錄是所在磁碟是高效能磁碟或者不同的磁碟時,對其影響微乎甚微)。

它的備份原理與冷copy資料庫資料庫目錄基本類似,但做的更精細一下,比如自動忽略某些不需要的日誌、檔案等。

CentOS預設源中沒有percona-xtrabackup這個工具包,只能採用手動安裝的方式。

cd   wget -c https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.2.12/binary/tarball/percona-xtrabackup-2.2.12-Linux-x86_64.tar.gz    tar zxf percona-xtrabackup-2.2.12-Linux-x86_64.tar.gz     cd percona-xtrabackup-2.2.12-Linux-x86_64/bin    yum -y install perl perl-Time-HiRes    ln -s /root/percona-xtrabackup-2.2.12-Linux-x86_64/bin/innobackupex /usr/bin/innobackupex    ln -s /root/percona-xtrabackup-2.2.12-Linux-x86_64/bin/xbcrypt /usr/bin/xbcrypt    ln -s /root/percona-xtrabackup-2.2.12-Linux-x86_64/bin/xbstream /usr/bin/xbstream    ln -s /root/percona-xtrabackup-2.2.12-Linux-x86_64/bin/xtrabackup /usr/bin/xtrabackup

Ubuntu預設提供percona-xtrabackup工具,可以直接使用apt-get進行安裝,apt-get -y install percona-xtrabackup。

apt-get -y install percona-xtrabackup

注意:

Ubuntu系統中使用apt-get安裝percona-xtrabackup工具時會導致libmysqlclient18 mysql-common這兩個包也會被安裝(libaio1 libdbd-mysql-perl libdbi-perl libmysqlclient18 mysql-common percona-xtrabackup),mysql-common這個包會帶進/etc/mysql/my.cnf,也許會導致service mysql {command}不能正常使用,可以將/etc/mysql/my.cnf改名或者將/etc/mysql目錄改名,消除影響。如果資料庫不是採用編譯安裝而是採用apt-get安裝的話,則可以注意一下,看看是否有影響。

操作步驟:

1.確定主從資料庫上都正確配置了log-bin和分配了不同的server-id    

egrep ‘(log-bin|server-id)‘ /etc/my.cnf    或    grep -E ‘(log-bin|server-id)‘ /etc/my.cnf

2.在主程式庫伺服器上使用innobackupex工具備份資料庫並將Database Backup檔案傳輸到從庫機器的磁碟上

# for master    apt-get install percona-xtrabackup    mv /etc/mysql/my.cnf /etc/mysql/my.cnf~ || mv /etc/mysql /etc/mysql~    service mysql status    # df -h    # du -sh /data/mysql/data     # 觀察一下磁碟使用方式,以及/data/mysql/data MySQL資料庫資料目錄的佔用空間的大小,評估將這些檔案scp到從程式庫伺服器的哪個位置等等    cd /data    mkdir -p /data/mysql-master_data    # which innobackupex    # 為了避免ssh串連丟失,採用nohup執行    nohup /usr/bin/innobackupex --user=root --password=password /data/mysql-master_data &    #上述命令執行成功後會在/data/mysql-master_data目錄下得到一個以時間格式產生的新目錄的名字,如/data/mysql-master_data/2015-11-03_12-39-51    # make sure user privileges on scp target    # sshpass - noninteractive ssh password provider    apt-get -y install sshpass    # 為了避免ssh串連丟失,可以採用nohup執行    sshpass -ppassword scp -o StrictHostKeyChecking=no -P22 -r /data/mysql-master_data [email protected]:/data    rm -rf /data/mysql-master_data

3.在從程式庫伺服器上使用innobackupex工具恢複從主程式庫伺服器得來的Database Backup檔案    

# for slave    #此處參考文章下面的“xtraBackup備份原理剖析”參考瞭解為什麼需要apply-log    innobackupex --apply-log /data/mysql-master_data/2015-11-03_12-39-51    #查看“/data/mysql-master_data/2015-11-03_12-39-51”內的xtrabackup_binlog_info檔案,記錄bin-log filename和pos值,以便切換master。    service mysql stop    #清空資料庫資料目錄    rm -rf /data/mysql/data/*    innobackupex --copy-back /data/mysql-master_data/2015-11-03_12-39-51    chown mysql:mysql -R /data/mysql/data/

4.配置從庫,啟用同步進程和觀察結果    

service mysql start    mysql -uroot -ppassword    #如果從庫的my.cnf中設定了開啟二進位日誌,為了程式員的某些便利,啟用log_bin_trust_function_creators,進一步瞭解可以參考下方的“MySQL 函數限制”和“MySQL建立方法錯誤:This function has none of DETERMINISTIC, NO SQL”    SHOW VARIABLES LIKE ‘%func%‘;    SET GLOBAL log_bin_trust_function_creators=1;    SHOW VARIABLES LIKE ‘%func%‘;    CHANGE MASTER TO MASTER_HOST=‘192.168.100.132‘,MASTER_USER=‘root‘,MASTER_PASSWORD=‘password‘,MASTER_LOG_FILE=‘mysql-bin.000665‘,MASTER_LOG_POS=51145611;    START SLAVE;    SHOW SLAVE STATUS \G;    #注意觀察Slave_IO_Running: Yes和Slave_SQL_Running: Yes,只有都是Yes的時候才表示正確    # 如果原先主庫上配置有event則需要在從庫上停掉,畢竟從庫不是用於做這個(含有寫入操作)的    SHOW VARIABLES LIKE ‘event_scheduler‘;    SET GLOBAL event_scheduler=0;    SHOW VARIABLES LIKE ‘event_scheduler‘;    QUIT;    rm -rf /data/mysql-master_data    # end
附帶,利用innobackupex 工具單機備份資料庫和恢複資料庫的例子:
# backup   cd /data    mkdir -p /data/mysql-master_data    nohup /usr/bin/innobackupex --user=root --password=password/data/mysql-master_data &    ls /data/mysql/data/ -alh    ls /etc/my.cnf -l# recovery   service mysql stop    service mysql status    innobackupex --apply-log /data/mysql-master_data/2015-11-03_11-21-10/    rm -rf /data/mysql/data/*    innobackupex --copy-back /data/mysql-master_data/2015-11-03_11-21-10/    chown mysql:mysql -R /data/mysql/data/    service mysql start    rm -rf /data/mysql-master_data
參考:

percona-xtrabackup 介紹 https://www.percona.com/software/mysql-database/percona-xtrabackup

xtraBackup備份原理剖析 http://blog.chinaunix.net/uid-20785090-id-4212816.html

MySQL 複製選項 http://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html

MySQL 函數限制 http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_log_bin_trust_function_creators

MySQL建立方法錯誤:This function has none of DETERMINISTIC, NO SQL http://blog.sina.com.cn/s/blog_4cb400450100ntu6.html

tag:MySQL資料庫主從配置,innobackupex 備份恢複資料庫,xtrabackup備份恢複資料庫,innobackupex 備份還原資料庫,xtrabackup備份還原資料庫

--end--

本文出自 “通訊,我的最愛” 部落格,請務必保留此出處http://dgd2010.blog.51cto.com/1539422/1709183

利用percona-xtrabackup快速搭建MySQL資料庫主從複製

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.