内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

螞蟻搬家式遷移mysql數(shù)據(jù)庫(kù)-創(chuàng)新互聯(lián)


乘機(jī)房搬遷的機(jī)會(huì),打算做一次業(yè)務(wù)整合?,F(xiàn)有的架構(gòu)是在2010年規(guī)劃并運(yùn)營(yíng)起來(lái)的,隨著時(shí)間的推移,項(xiàng)目也越來(lái)越多。打開(kāi)nginx配置文件,有四十多行include包含存在,每一個(gè)包含就是一個(gè)項(xiàng)目(有些是web,有些是app)。一整個(gè)機(jī)柜,老舊的設(shè)備,負(fù)載均衡高可用架構(gòu)。為保證業(yè)務(wù)一致性和降低成本,業(yè)務(wù)數(shù)據(jù)(開(kāi)發(fā)的應(yīng)用程序及用戶(hù)上傳數(shù)據(jù))共享一套NFS;各業(yè)務(wù)共享同一套物理數(shù)據(jù)庫(kù)(一臺(tái)物理服務(wù)器mysql創(chuàng)建多個(gè)庫(kù))。隨著業(yè)務(wù)和訪問(wèn)量的增長(zhǎng),這種隱患越來(lái)越令人擔(dān)憂(yōu),主要表現(xiàn)在以下幾個(gè)方面:

創(chuàng)新互聯(lián)建站專(zhuān)注于普陀網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供普陀營(yíng)銷(xiāo)型網(wǎng)站建設(shè),普陀網(wǎng)站制作、普陀網(wǎng)頁(yè)設(shè)計(jì)、普陀網(wǎng)站官網(wǎng)定制、微信小程序開(kāi)發(fā)服務(wù),打造普陀網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供普陀網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

◆安全問(wèn)題

數(shù)十個(gè)站點(diǎn)共享目錄,以nfs方式共享給各物理服務(wù)器,這幾十個(gè)項(xiàng)目,只要任何一個(gè)有安全漏洞存在,有心人都能進(jìn)來(lái)為所欲為,讓站點(diǎn)全部淪陷。時(shí)不時(shí)的,被人注入惡意代碼,針對(duì)性的進(jìn)行清除,但沒(méi)多久又被注入篡改。大家心里都有數(shù),存在漏洞的地方,不一定是被篡改的那個(gè)。但站點(diǎn)太多,又沒(méi)有隔離,根本無(wú)法用安全工具掃描(一個(gè)站點(diǎn)進(jìn)行掃描,平均花費(fèi)一天)。

[root@web57 ~]# more /usr/local/nginx/conf/nginx.conf

user  www www;

worker_processes  6;

 

worker_rlimit_nofile 51200;

 

events {

 use epoll;

 #use kqueue;   #FreeBSD system

 worker_connections 51200;

}

 

http {

 include       mime.types;

 default_type  application/octet-stream;

 #charset  gb2312;

 server_names_hash_bucket_size 256;

 client_header_buffer_size 256k;

 large_client_header_buffers 4 256k;

 client_max_body_size 500m;

…………………………………………省略若干…………………………………

include vhosts/faxian.quanzhen.com.conf;

include vhosts/www.quanzhen.com.conf;

include vhosts/news.quanzhen.com.conf;

include vhosts/s.quanzhen.com.conf;

include vhosts/down.quanzhen.com.conf;

include vhosts/static.quanzhen.com.conf;

include vhosts/image.quanzhen.com.conf;

include vhosts/3g.quanzhen.com.conf;

include vhosts/mini.quanzhen.com.conf;

include vhosts/xml.quanzhen.com.conf;

include vhosts/mayiapi.quanzhen.com.conf;

include vhosts/www.android77.com.conf;

include vhosts/fahongbao.android77.com.conf;

include vhosts/update.android77.com.conf;

include vhosts/dev.quanzhen.com.conf;

include vhosts/qr.110.cc.conf;

include vhosts/110.cc.conf;

include vhosts/eggserver.quanzhen.com.conf;

include vhosts/apkegg.quanzhen.com.conf;

include vhosts/eggserver.yidong7.cn.conf;

include vhosts/www.yidong7.cn.conf;

include vhosts/down.yidong7.cn.conf;

include vhosts/wan.quanzhen.com.conf;

include vhosts/open.quanzhen.com.conf;

include vhosts/bakdown.yidong7.cn.conf ;

include vhosts/hanhua.quanzhen.com.conf;

include vhosts/mpk.quanzhen.com.conf;

include vhosts/android.quanzhen.com.conf;

include vhosts/pay.quanzhen.com.conf;

include vhosts/cmstop.quanzhen.cn.conf;

include vhosts/news.quanzhen.cn.conf;

include vhosts/pingce.quanzhen.cn.conf;

include vhosts/gonglue.quanzhen.cn.conf;

include vhosts/hao.quanzhen.cn.conf;

include vhosts/all.quanzhen.cn.conf;

include vhosts/s.quanzhen.cn.conf;

include vhosts/apkz.quanzhen.com.conf;

include vhosts/ajax.quanzhen.com.conf;

include vhosts/union.quanzhen.com.conf;

include vhosts/mai.quanzhen.com.conf;

include vhosts/blog.quanzhen.com.conf;

include vhosts/guazi.quanzhen.com.conf;

include vhosts/lockscreen.yidong7.cn.conf;

include vhosts/dsp.pujia8.com.conf;

include vhosts/3svx4haii9.quanzhen.com.conf;

include vhosts/u.quanzhen.com.conf;

include vhosts/bianji.quanzhen.com.conf;

include vhosts/default.conf;

}

 

◆性能問(wèn)題

主要集中在數(shù)據(jù)庫(kù)上邊,只要有一個(gè)庫(kù)出現(xiàn)問(wèn)題,引起鎖表或者其它競(jìng)爭(zhēng),全部相關(guān)業(yè)務(wù)都會(huì)掛起,煩不勝煩啊。想進(jìn)行拆分,決策人認(rèn)為,本來(lái)就滿(mǎn)機(jī)柜了,如果再新家機(jī)器,得另租機(jī)柜,考慮到成本等其它問(wèn)題,只求不出事即可。

 

整合的計(jì)劃是,遷移部分業(yè)務(wù)到公有云上,騰出服務(wù)器后,對(duì)現(xiàn)有的設(shè)備進(jìn)行擴(kuò)充配置(拼內(nèi)存、硬盤(pán)等,古舊的機(jī)器直接下架)。留下配置高的,進(jìn)行虛擬化,既能減少設(shè)備數(shù)量(托管費(fèi)降低),又有利于日常維護(hù)。

 

前邊說(shuō)了這么多,似乎與技術(shù)關(guān)系不大,但對(duì)于一些有遺留問(wèn)題的項(xiàng)目,還是具有參考意義。接下來(lái),我們就進(jìn)入正題,看看我們要遷移的項(xiàng)目狀況。要往云上遷移的數(shù)據(jù)包括網(wǎng)站數(shù)據(jù)及數(shù)據(jù)庫(kù)數(shù)據(jù),網(wǎng)站數(shù)據(jù)比較好辦,rsync同步到對(duì)應(yīng)的目錄,而數(shù)據(jù)庫(kù)相對(duì)而言,要麻煩不少。兩個(gè)數(shù)據(jù)庫(kù),一個(gè)容量38G,另一個(gè)29G,不算太大,但公用的ibdata1文件卻有123G,最初是嘗試把這兩個(gè)庫(kù),直接導(dǎo)入到阿里云的RDS,在進(jìn)行數(shù)次操作失敗后,咨詢(xún)客服得到的答復(fù)是RDS暫時(shí)不支持分表的數(shù)據(jù)庫(kù)。為節(jié)省成本,購(gòu)買(mǎi)一個(gè)配置高一點(diǎn)的云主機(jī)(cpu 8core,內(nèi)存32G,1T高效云盤(pán)),部署上mysql5.6,供兩個(gè)數(shù)據(jù)庫(kù)使用。

 

第一次嘗試

預(yù)估了一下,200G的數(shù)據(jù),貪心一把,看一次性能不能遷移完。提前幾天,把云上的環(huán)境全部準(zhǔn)備妥當(dāng)(能出來(lái)測(cè)試頁(yè)),運(yùn)營(yíng)部門(mén)把通知發(fā)下去,然后某天夜里0:30分,一些人在辦公室,一些人在家里,瞇著眼,莊重地在鍵盤(pán)敲入“screen”這幾個(gè)字符。在qq群里得到一致許可,可以進(jìn)行數(shù)據(jù)庫(kù)導(dǎo)出操作以后,小弟小心翼翼地發(fā)來(lái)一條指令:

[root@db-209 ~]# innobackupex  --user=root  --passwor='i%=KGb76' \

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

--databases=“quanzhen_mobile7lockscreen quanzhen_equipment” /data/bakmysql/

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy

and Percona Ireland Ltd 2009-2012.  All Rights Reserved.

 

This software is published under

the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.

 

180618 00:30:31  innobackupex: Starting mysql with options:  --defaults-file='/etc/my.cnf' --password=xxxxxxxx --user='root' --unbuffered --

180618 00:30:31  innobackupex: Connected to database with mysql child process (pid=20090)

180618 00:30:37  innobackupex: Connection to database server closed

IMPORTANT: Please check that the backup run completes successfully.

           At the end of a successful backup run innobackupex

           prints "completed OK!".

 

innobackupex: Using mysql  Ver 14.12 Distrib 5.0.95, for redhat-linux-gnu (x86_64) using readline 5.1

innobackupex: Using mysql server version Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

 

innobackupex: Created backup directory /data/bakmysql/2018-06-18_00-30-37

180618 00:30:37  innobackupex: Starting mysql with options:  --defaults-file='/etc/my.cnf' --password=xxxxxxxx --user='root' --unbuffered --

180618 00:30:37  innobackupex: Connected to database with mysql child process (pid=20123)

180618 00:30:39  innobackupex: Connection to database server closed

 

180618 00:30:39  innobackupex: Starting ibbackup with command: xtrabackup_55  --defaults-file="/etc/my.cnf"  --defaults-group="mysqld" --backup --suspend-at-end --target-dir=/data/bakmysql/2018-06-18_00-30-37 --tmpdir=/tmp

innobackupex: Waiting for ibbackup (pid=20132) to suspend

innobackupex: Suspend file '/data/bakmysql/2018-06-18_00-30-37/xtrabackup_suspended'

 

xtrabackup_55 version 2.0.7 for Percona Server 5.5.16 Linux (x86_64) (revision id: 552)

xtrabackup: uses posix_fadvise().

xtrabackup: cd to /data/mysql_db

xtrabackup: Target instance is assumed as followings.

xtrabackup:   innodb_data_home_dir = ./

xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend

xtrabackup:   innodb_log_group_home_dir = ./

xtrabackup:   innodb_log_files_in_group = 2

xtrabackup:   innodb_log_file_size = 5242880

>> log scanned up to (601191481892)

[01] Copying ./ibdata1 to /data/bakmysql/2018-06-18_00-30-37/ibdata1

>> log scanned up to (601191481892)

>> log scanned up to (601191481892)

>> log scanned up to (601191481892)

>> log scanned up to (601191481892)

>> log scanned up to (601191481892)

>> log scanned up to (601191481892)

>> log scanned up to (601191481892)

…………………………………省略……………………………………………

樂(lè)觀估計(jì),上午7點(diǎn)前,能完成整個(gè)遷移,幾個(gè)人商量輪流監(jiān)看進(jìn)展程度,等進(jìn)行完一步后叫醒休息的人,以便進(jìn)行下一步。結(jié)果,到凌晨六點(diǎn)多,才執(zhí)行完這個(gè)innobackupex,還差好幾步呢,每一步都同樣耗時(shí),只能宣告遷移暫時(shí)失敗,選個(gè)黃道吉日,分兩次進(jìn)行遷移。

 

第二次分拆遷移

萬(wàn)年歷排除近期諸事不宜的日子,再搖卦選利用用神的地支,選定日志,約上相關(guān)人等,繼續(xù)進(jìn)行遷移。有了上一次的教訓(xùn),在遷移前又對(duì)要遷移的庫(kù)做了清理,刪掉了一些無(wú)用的數(shù)據(jù),省出來(lái)好幾個(gè)G的空間。在源數(shù)據(jù)庫(kù),執(zhí)行指令:

[root@db-209 ~]#innobackupex  --user=root  --passwor='i%=KGb76'  \

--defaults-file=/etc/my.cnf --databases=“quanzhen_equipment” /data/bakmysql/

我交到好以后,就躺下睡覺(jué),到凌晨三點(diǎn)電話響了,告知第一步完成。

[root@db-209 ~]#innobackupex  --apply-log /data/bakmysql/2018-06-18_00-30-37

日志應(yīng)用倒是執(zhí)行的很快,回車(chē)即完。然后進(jìn)行tar 打包和復(fù)制文件到目標(biāo)服務(wù)器,由于租賃的出口帶寬太?。値?0M,現(xiàn)在讀者知道為什么要夜間訪問(wèn)低谷進(jìn)行遷移了吧?),復(fù)制文件到目標(biāo)服務(wù)花了一些時(shí)間。

 

目標(biāo)服務(wù)器,僅僅需要安裝好mysql軟件,創(chuàng)建好目錄/data/mysql_db,不需要執(zhí)行數(shù)據(jù)庫(kù)初始化操作,因?yàn)閕nnobackupex導(dǎo)入時(shí),要求數(shù)據(jù)目錄必須為空。阿里云的配置,遠(yuǎn)比源服務(wù)器配置高,解壓文件很快就完成。

 

檢查一下mysql選項(xiàng)文件/etc/my.cnf,注意是選項(xiàng)文件。設(shè)定“—datadir=/data/mysql_db”,就可執(zhí)行導(dǎo)入操作,指令如下:

[root@msyql mysql_db]#innobackupex  --defaults-file=/etc/my.cnf  \

--copy-back /data/db_bk/2018-06-18_00-30-37

源數(shù)據(jù)導(dǎo)出時(shí),沒(méi)有把庫(kù)mysql一并導(dǎo)出,這倒不是什么要緊的事情,反正只有一個(gè)賬戶(hù)需要?jiǎng)?chuàng)建。接下來(lái),初始化數(shù)據(jù)庫(kù)并創(chuàng)建應(yīng)用帳號(hào),具體操做如下:

[root@msyql mysql_db]#cd /usr/local/mysql/

[root@msyql ~]#scripts/mysql_install_db  --user=mysql --datadir=/data/mysql_db

[root@msyql ~]#mysql

mysql>grant all on quanzhen_equipment.* to ……

還要記得給mysql空密碼消除掉。

 

源庫(kù)與目標(biāo)庫(kù),比對(duì)一下表的數(shù)量,以及隨機(jī)抽取一些大表,對(duì)記錄數(shù)進(jìn)行比較。確認(rèn)數(shù)據(jù)完整以后,一幫去調(diào)試應(yīng)用,后續(xù)工作不表,沒(méi)我什么事。

 

第三次分拆遷移

有了上一次的成功經(jīng)驗(yàn),這次信心滿(mǎn)滿(mǎn)了,不過(guò)擔(dān)心還是有的,就是那個(gè)目標(biāo)庫(kù)導(dǎo)入時(shí),要求數(shù)據(jù)目錄為空。小弟在未開(kāi)始時(shí),就來(lái)征求我的意見(jiàn),我擔(dān)心可能會(huì)有障礙,就對(duì)他說(shuō),你只要把源站數(shù)據(jù)導(dǎo)出準(zhǔn)備好,放到目標(biāo)數(shù)據(jù)庫(kù),余下的我親自搞定。

 

自己的選擇有兩個(gè),一個(gè)是使用選項(xiàng)“--force-non-empty-directories”,如果不行,就再弄一個(gè)mysql實(shí)例,啟用3307端口,雙實(shí)例運(yùn)行。先嘗試第一個(gè)選項(xiàng),看能不能進(jìn)行下去,具體指令為:

[root@msyql db_bk]# pwd

/data/db_bk

[root@msyql db_bk]#innobackupex  --defaults-file=/etc/my.cnf --copy-back \

--force-non-empty-directories 2018-06-22_00-24-52

180623 23:31:57 innobackupex: Starting the copy-back operation

 

IMPORTANT: Please check that the copy-back run completes successfully.

           At the end of a successful copy-back run innobackupex

           prints "completed OK!".

 

innobackupex version 2.4.11 based on MySQL server 5.7.19 Linux (x86_64) (revision id: b4e0db5)

innobackupex: Can't create/write to file '/data/mysql_db/ib_logfile0' (Errcode: 17 - File exists)

[01] error: cannot open the destination stream for ib_logfile0

[01] Error: copy_file() failed.

悲催了,有同名文件存在,不行!直接終止運(yùn)行。好吧,我把文件“ib_logfile0、ib_logfile1”挪走,再執(zhí)行,還是不行,提示文件“ibdata1”存在,這可是個(gè)大家伙。雖然擔(dān)心新導(dǎo)入的ibdata1可能不包含現(xiàn)有數(shù)據(jù)庫(kù)相關(guān)信息,但忍不住想試一把??赡苡凶x者會(huì)問(wèn),這樣搞可能把數(shù)據(jù)庫(kù)原有的數(shù)據(jù)破壞掉了,其實(shí)我想到這一層來(lái),老早我就把整個(gè)庫(kù)做了備份,買(mǎi)了保險(xiǎn)的。

 

正全神貫注盯著屏幕查看輸出,希望進(jìn)展順利,突然,qq群有消息傳來(lái),問(wèn)進(jìn)展如何,啥時(shí)能完成。一看時(shí)間,六點(diǎn)了,北方大地已經(jīng)一片光明。時(shí)間來(lái)不及了,停掉進(jìn)程,試試直接復(fù)制文件,不使用innobuckupex。心中沒(méi)底,就去仔細(xì)比較了數(shù)據(jù)庫(kù)目錄與導(dǎo)出數(shù)據(jù)目錄中的三個(gè)文件“ibdata1、ib_logfile0、ib_logfile1”,發(fā)現(xiàn)其大小完全相同。不管了,把現(xiàn)有數(shù)據(jù)庫(kù)里的這幾個(gè)文件搬走,從導(dǎo)出目錄cp來(lái)著三個(gè)文件。復(fù)制完,執(zhí)行mysqld_safe啟動(dòng)服務(wù),失敗,提示ib_logfile0無(wú)寫(xiě)入權(quán)限;這好辦,一條chown指令而已。再執(zhí)行啟動(dòng)mysql服務(wù),正常。

 

那么數(shù)據(jù)對(duì)不對(duì)呢?我不能確定,萬(wàn)一不對(duì),就再配一個(gè)mysql,導(dǎo)入數(shù)據(jù),以雙實(shí)例啟動(dòng),后邊再想法整合;阿里云購(gòu)買(mǎi)的服務(wù)器,相互通信是內(nèi)網(wǎng),不會(huì)在傳輸上浪費(fèi)太多時(shí)間。

 

既然服務(wù)正常,就對(duì)一下數(shù)據(jù)吧,萬(wàn)一運(yùn)氣爆棚(前幾天夜里夢(mèng)到自己能飛,抓住一只巨型天鵝,我美美地?fù)е禊Z的脖子…),數(shù)據(jù)完整可用呢!我自己悄悄對(duì)比了一陣,沒(méi)差異呢,又到qq群呼叫其它人,說(shuō)導(dǎo)入有障礙,數(shù)次不成功,后邊采取了一些不確定的手段,mysql服務(wù)是起來(lái)了,請(qǐng)大家核實(shí)一下數(shù)據(jù),看是否完整可用。幾個(gè)程序員一陣忙碌,得到答復(fù),數(shù)據(jù)是完整可用的。到此,我的工作完成了。

 

有人可能要鄙視我一番,為什么不先測(cè)試?不制定完善的流程?這個(gè)問(wèn)題問(wèn)得好!我數(shù)次建議決策人,準(zhǔn)備點(diǎn)資源,說(shuō)白了就是準(zhǔn)備1臺(tái)空閑服務(wù)器,再內(nèi)網(wǎng)演練,就算白天也能能進(jìn)行(復(fù)制數(shù)據(jù)走內(nèi)網(wǎng),不在用戶(hù)訪問(wèn)的帶寬),但是,沒(méi)有資源給我啊,但事情又不得不做。雖然累點(diǎn),折騰一番,翻過(guò)來(lái)想,咱玩懸的也獲得經(jīng)驗(yàn),不然也沒(méi)有這個(gè)文章問(wèn)世,你們覺(jué)得覺(jué)呢?

本文名稱(chēng):螞蟻搬家式遷移mysql數(shù)據(jù)庫(kù)-創(chuàng)新互聯(lián)
文章位置:http://www.rwnh.cn/article32/dsoppc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、App設(shè)計(jì)、微信小程序Google、網(wǎng)站制作、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
鲁甸县| 涟水县| 兴仁县| 石首市| 永登县| 宝应县| 台前县| 运城市| 建昌县| 剑川县| 呼玛县| 尼玛县| 清原| 吉安市| 伊川县| 资溪县| 隆林| 宁海县| 秭归县| 铁岭市| 万宁市| 芜湖县| 大荔县| 鞍山市| 新巴尔虎左旗| 都兰县| 伊金霍洛旗| 巩义市| 威远县| 阳曲县| 鹤山市| 大化| 改则县| 镇坪县| 宝兴县| 确山县| 赣榆县| 浦城县| 阿勒泰市| 三门县| 宜兴市|