XtraBackup2.4.4 with mysql5.7.17 主從同步

一、問題:

線上一個主庫壓力比較大,所以增加一個從庫乔宿,但是不能重啟或者停止主庫的正常運行,不能鎖庫鎖表影響業(yè)務(wù)的正常運行访雪。所以這里想到了XtraBackup

二详瑞、XtraBackup介紹:

? ? ? ?Xtrabackup的優(yōu)點:

1、備份完成快速臣缀、可靠

2坝橡、備份期間不間斷的事務(wù)處理

3、節(jié)省磁盤空間和網(wǎng)絡(luò)帶寬

4精置、自動備份驗證

5计寇、提高正常運行時間由于更快的恢復(fù)時間

備份INNODB引擎的數(shù)據(jù)庫不會鎖庫鎖表,但是備份MyISAM的表還是會鎖的氯窍,還支持增量備份饲常。



三、環(huán)境說明

系統(tǒng)版本:CentOS Linux release 7.3.1611 (Core)

內(nèi)核版本:3.10.0-514.16.1.el7.x86_64

?mysql版本:mysql? Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using? EditLine wrapper

xtrabackup版本:percona-xtrabackup-24-2.4.4-1.el7.x86_64?:注:較低版本的xtrabackup不支持 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? centos7.3

四狼讨、xtrabackup軟件安裝:

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

wget -O /etc/yum.repos.d/epel.repo? http://mirrors.aliyun.com/repo/epel-6.repo

yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL

yum install -y percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm


注意:

my.cnf修改:

innodb_file_per_table = 1

binlog_format='row'

在線改:

set global innodb_file_per_table=1;

set global binlog_format='row';

錯誤故障:

rm -f /etc/my.cnf

否則全備時報如下錯誤:

InnoDB: Number of pools: 1

InnoDB: Error: log file ./ib_logfile0 is ofdifferent size 50331648 bytes

InnoDB: than specified in the .cnf file268435456 bytes!

f pools: 1


五贝淤、主庫主從配置

1.主庫配置/etc/my.cnf

增加server-id 和 bin-log

#vim /etc/my.cnfserver-id = 128

? log-bin = mysql-bin

2.主庫配置授權(quán)賬號

mysql>ALTERUSER'root'@'localhost'IDENTIFIEDBY'new_password';

mysql>alter user root@localhost identified by'Admin123!';

mysql>grant replication slave on *.* to'slave'@'10.130.21.53' identified by 'password';

mysql> flush privileges;

3.手動設(shè)置主庫server-id和log-bin 參數(shù)

setglobalserver_id=128

因為這兩個參數(shù)是動態(tài)參數(shù),不用重啟主庫也可以生效

如果你的主庫已經(jīng)設(shè)置這兩個參數(shù)政供,請忽略這一步操作

4.從庫配置/etc/my.cnf

增加server-id 和 bin-log#vim /etc/my.cnfserver-id = 129

#如果需要在從庫上做bin-log備份可以添加如下參數(shù)

log-bin = mysql-bin

log-slave-updates = 1

expire-logs-days=10


mysql -uroot -poldboy123 -S /data/3306/mysql.sock


六播聪、備份主庫數(shù)據(jù)

1.主庫機器上創(chuàng)建備份目錄

#mkdir -p /home/data/backup33061

2.執(zhí)行全庫備份

2.1.備份

innobackupex --defaults-file=/home/data/mysql33061/my.cnf --user=root ?--password=admin123 --socket=/home/data/mysql33061/mysql.sock ?/home/data/backup33061

>>> xtrabackup: Transaction log oflsn (549646200) to (549646758) was copied.

170724 15:19:39 completed OK!

PS:備份完成后,會在/home/data/backup33061目錄下生成一個時間點的目錄布隔,這里是2017-07-24_15-19-04离陶。你也可以加一個--no-timestamp參數(shù)不產(chǎn)生這個目錄,直備份到/home/data/backup33061目錄下

2.2.重放redo log

#下面preparing衅檀,undo撤銷未提交的事務(wù)招刨,重放redo log

innobackupex--defaults-file=/home/data/mysql33061/my.cnf--user=root--password=oldboy123--apply-log--socket=/home/data/mysql33061/mysql.sock/home/data/backup33061/2017-07-24_15-19-04

>>> InnoDB: Shutdown completed;log sequence number 549647400

170724 15:24:19 completed OK!

經(jīng)過預(yù)處理或是redo log后的文件才能替換掉從庫的數(shù)據(jù)目錄

ps:1、ls -l/data/backup/full_data/2016-07-14_05-19-52/查看哀军,你發(fā)現(xiàn)xtrabackup會把你數(shù)據(jù)庫datadir下的所有數(shù)據(jù) 文件都復(fù)制過來還新增了5個xtrabackup_開頭的文件沉眶,我們關(guān)心的是xtrabackup_binlog_info這個文件打却,因為這個文件里面記 錄了你做從庫需要change到主庫的binlog的位置和pos點

? ? ? 2、如果只想備份一個庫谎倔,加“--include=navy”指定庫名即可柳击, “--databases=navy”不好使。

七片习、恢復(fù)數(shù)據(jù)到從庫

1.停止從庫

#/etc/init.d/mysqld stop

2.把主庫備份文件拷貝到從庫機器

#scp -rp /data/backup/full_data//2017-07-24_15-19-04? root@10.130.21.53:/mysql/data/

3.修改恢復(fù)文件權(quán)限

#chown -R mysql:mysql? /mysql/data

4.啟動數(shù)據(jù)庫

#/etc/init.d/mysqld start

5.確認(rèn)數(shù)據(jù)是否恢復(fù)成功

登錄從庫捌肴,執(zhí)行show databases;

6.確認(rèn)同步的位置點

在從庫上或者主庫上都可以查看該信息,我們是在從庫上查看

#cat /mysql/data/xtrabackup_binlog_info? ? ? mysql33061-bin.000001? ? 476764

九藕咏、開始主從同步

1.配置從庫 主從配置

#登錄從庫并執(zhí)行

mysql > CHANGEMASTER TOMASTER_HOST='10.130.21.52',MASTER_USER='rep',MASTER_PASSWORD='oldboy123',MASTER_LOG_FILE='mysql33061-bin.000001', MASTER_LOG_POS=476764;

2.開始同步

mysql> start slave;

3.查看同步狀態(tài)

mysql> show slave status\G

Slave_IO_Running: Yes? ? Slave_SQL_Running: Yes? Seconds_Behind_Master: 0



centos6.5 + mysql5.6


備份與主從同步:

注意:

若是mysql編譯安裝等状知,提示找不到socket路徑,可以用--socket=/var/lib/mysql/mysql.sock參數(shù)執(zhí)行socket路徑

1 備份

在主庫上運行備份命令侈离,后面跟備份文件放在哪個目錄下;

innobackupex --defaults-file="/etc/my.cnf" --user=root --passwor=123456 /opt/

2.scp到從庫

經(jīng)備份后的文件夾整體scp到從庫的某個目錄试幽,如opt目錄下

scp -rp 備份目錄 遠(yuǎn)程用戶@遠(yuǎn)程主機:/遠(yuǎn)程目錄

3.預(yù)處理

內(nèi)存較大的主機,可以適當(dāng)加大use-memory卦碾,提高處理速度。

innobackupex --defaults-file="/etc/my.cnf" \

--user=root \

--apply-log \

--use-memory=4G /opt/2016-05-07_16-50-33/

4.關(guān)閉從庫

/etc/init.d/mysqld stop

5.copy數(shù)據(jù)

注意:(拷貝前需要將之前的mysql數(shù)據(jù)目錄清空)

innobackupex --defaults-file="/etc/my.cnf" \

--user=root \

--move-back /opt/2016-05-07_16-50-33/

6.查看master位置

[root@linux-node2 data]# cat xtrabackup_binlog_pos_innodb

mysql-bin.000008? ? 3037723

7.修改權(quán)限

將mysql的數(shù)據(jù)目錄授予mysql用戶權(quán)限

chown -R mysql:mysql /data01/mysql/

8.啟動從庫

/etc/init.d/mysqld start

9.設(shè)置主從

mysql> change master to \

master_host='192.168.56.11', \

master_user='slave', \

master_password='123456', \

master_log_file='mysql-bin.000008', \

master_log_pos=3037723;

相關(guān)經(jīng)驗:

生產(chǎn)環(huán)境212G的數(shù)據(jù):

備份時間約25分

內(nèi)網(wǎng)scp時間:5分鐘(千兆網(wǎng)卡)

預(yù)處理時間:5分種

拷貝(恢復(fù))數(shù)據(jù):21分鐘

延遲復(fù)制:

1.誤刪除恢復(fù)起宽。

2.延遲測試洲胖。

3.歷史查詢。

mysql> stop slave;

mysql> change master to master_delay = 600;

mysql> start slave;

半同步復(fù)制:

master:

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

mysql> SET GLOBAL rpl_semi_sync_master_timeout = 1000;

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

mysql> stop slave io_thread;start slave io_thread;

高可用解決方案:? ?MHA

架構(gòu)擴展方案:

1.基于復(fù)制的擴展

2.客戶端分庫分表

3.mysql cluster

4.Percona XtraDB Cluster

5.MySQL的Proxy中間件(mysql proxy,mycat)

MySQL? -> Percona Server? -> MariaDB

基于復(fù)制的擴展? -> 客戶端分庫分表 -> MySQL PXC -> mysql 中間件? -> mysql cluster

從庫:一定要設(shè)置只讀

MySQL Proxy部署? ?PXC部署(技術(shù)儲備)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坯沪,一起剝皮案震驚了整個濱河市绿映,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腐晾,老刑警劉巖叉弦,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異藻糖,居然都是意外死亡淹冰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門巨柒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來樱拴,“玉大人,你說我怎么就攤上這事洋满【牵” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵牺勾,是天一觀的道長正罢。 經(jīng)常有香客問我,道長驻民,這世上最難降的妖魔是什么翻具? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任袱饭,我火速辦了婚禮,結(jié)果婚禮上呛占,老公的妹妹穿的比我還像新娘虑乖。我一直安慰自己,他們只是感情好晾虑,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布疹味。 她就那樣靜靜地躺著,像睡著了一般帜篇。 火紅的嫁衣襯著肌膚如雪糙捺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天笙隙,我揣著相機與錄音洪灯,去河邊找鬼。 笑死竟痰,一個胖子當(dāng)著我的面吹牛签钩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播坏快,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼铅檩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了莽鸿?” 一聲冷哼從身側(cè)響起昧旨,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎祥得,沒想到半個月后兔沃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡级及,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年乒疏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片创千。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡缰雇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出追驴,到底是詐尸還是另有隱情械哟,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布殿雪,位于F島的核電站暇咆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜爸业,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一其骄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扯旷,春花似錦拯爽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至耸黑,卻和暖如春桃煎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背大刊。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工为迈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缺菌。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓葫辐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親男翰。 傳聞我的和親對象是個殘疾皇子另患,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容