這種架構(gòu)一般用在以下三類場景
專注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)雙灤免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
1. 備份多臺 Server 的數(shù)據(jù)到一臺如果按照數(shù)據(jù)切分方向來講,那就是垂直切分。比如圖 2,業(yè)務(wù) A、B、C、D 是之前拆分好的業(yè)務(wù),現(xiàn)在需要把這些拆分好的業(yè)務(wù)匯總起來備份,那這種需求也很適用于多源復(fù)制架構(gòu)。實現(xiàn)方法我大概描述下:業(yè)務(wù) A、B、C、D 分別位于 4 臺 Server,每臺 Server 分別有一個數(shù)據(jù)庫來隔離前端的業(yè)務(wù)數(shù)據(jù),那這樣,在從庫就能把四臺業(yè)務(wù)的數(shù)據(jù)全部匯總起來,而不需要做額外的操作。那沒有多源復(fù)制之前,要實現(xiàn)這類需求,只能在匯總機(jī)器上搭建多個 MySQL 實例,那這樣勢必會涉及到跨庫關(guān)聯(lián)的問題,不但性能急劇下降,管理多個實例也沒有單臺來的容易。
2. 用來聚合前端多個 Server 的分片數(shù)據(jù)。
同樣,按照數(shù)據(jù)切分方向來講,屬于水平切分。比如圖 3,按照年份拆分好的數(shù)據(jù),要做一個匯總數(shù)據(jù)展現(xiàn),那這種架構(gòu)也非常合適。實現(xiàn)方法稍微復(fù)雜些:比如所有 Server 共享同一數(shù)據(jù)庫和表,一般為了開發(fā)極端透明,前端配置有分庫分表的中間件,比如愛可生的 DBLE。
3. 匯總并合并多個 Server 的數(shù)據(jù)
第三類和第一種場景類似。不一樣的是不僅僅是數(shù)據(jù)需要匯總到目標(biāo)端,還得合并這些數(shù)據(jù),這就比第一種來的相對復(fù)雜些。比如圖 4,那這樣的需求,是不是也適合多源復(fù)制呢?答案是 YES。那具體怎么做呢?
一、使用可視化操作創(chuàng)建數(shù)據(jù)庫1、使用Navicat或者其他工具鏈接mysql,并鏈接服務(wù)器2、選中服務(wù)器,右擊,在新出現(xiàn)的對話框中選擇【新建數(shù)據(jù)庫】3、在新出現(xiàn)的【新建數(shù)據(jù)庫】對話框中,填寫數(shù)據(jù)庫名、選擇字符集和排序規(guī)則4、點(diǎn)擊確定,即
方法/步驟
1、剛剛接觸mysql數(shù)據(jù)的人,第一步新建數(shù)據(jù)庫,可打開phpmyadmin;
2、然后選擇數(shù)據(jù)庫菜單;
3、點(diǎn)擊sql菜單;
4、在輸入框中輸入下面語句
create database 數(shù)據(jù)庫名;
最后點(diǎn)執(zhí)行,新數(shù)據(jù)庫就建好了。
第一步:安裝MySQL客戶端
當(dāng)然你得確保MySQL客戶端已經(jīng)安裝完畢。如果沒有的話,可以按照下面的方法。
在Debian,Ubuntu 或者 Linux Mint上:
$ sudo apt-get install mysql-client
$ sudo apt-get install mysql
第二步:登陸到MySQL服務(wù)器
首先,你需要使用root用戶登陸進(jìn)你的MySQL數(shù)據(jù)庫,如下:
$ mysql -u root -h -p
請注意:為了能登進(jìn)遠(yuǎn)程的MySQL服務(wù)器,你需要開啟服務(wù)器上的遠(yuǎn)程訪問,如果你想調(diào)用同一主機(jī)上的MySQL服務(wù)器,你可以省略 "-h " 參數(shù)
$ mysql -u root -p
你將需要輸入MySQL服務(wù)器的密碼,如果認(rèn)證成功,MySQL提示將會出現(xiàn)。
第三步:創(chuàng)建一個MySQL數(shù)據(jù)庫
在MySQL提示中輸入命令之前,請記住所有的命令都是以分號結(jié)束的(否則將不會執(zhí)行)。另外,考慮輸入命令的時候使用大些字母,輸入數(shù)據(jù)庫對象使用小寫字母。但那不是必須的,只是方便的閱讀。
現(xiàn)在,創(chuàng)建一個叫做xmodulo_DB的數(shù)據(jù)庫:
mysql CREATE DATABASE IF NOT EXISTS xmodulo_DB;
第四步:創(chuàng)建一個數(shù)據(jù)庫表
為了達(dá)到演示的目的,創(chuàng)建一個叫做posts_tbl的表,表里會存儲關(guān)于文章的如下信息:
文章的標(biāo)題
作者的名字
作者的姓
文章可用或者不可用
文章創(chuàng)建的日期
這個過程分兩步執(zhí)行:
首先,選擇需要使用的數(shù)據(jù)庫:
mysql USE xmodulo_DB;
然后,在數(shù)據(jù)庫中創(chuàng)建新表:
mysql CREATE TABLE 'posts_tbl' (
'post_id' INT UNSIGNED NOT NULL AUTO_INCREMENT,
'content' TEXT,
'author_FirstName' VARCHAR(100) NOT NULL,
'author_LastName' VARCHAR(50) DEFAULT NULL ,
'isEnabled' TINYINT(1) NOT NULL DEFAULT 1,
'date' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY ( 'post_id' )
TYPE = MYISAM;
第五步:創(chuàng)建一個用戶,并授予權(quán)限
當(dāng)涉及到訪問新創(chuàng)的數(shù)據(jù)庫和表的時候,創(chuàng)建一個新用戶是一個很好的主意。這樣做就可以讓用戶在沒有整個MySQL服務(wù)器權(quán)限的情況下,去訪問那個數(shù)據(jù)庫(而且只能是那個數(shù)據(jù)庫)
你可以創(chuàng)建新用戶,授予權(quán)限,并且使改變生效:
mysql GRANT ALL PRIVILEGES ON xmodulo_DB.* TO 'new_user'@'%' IDENTIFIED BY 'new_password';
mysql FLUSH PRIVILEGES;
'newuser'和'newpassword'分別指的是新的用戶名和他的密碼。這條信息將會被保存在mysql.user表中,而且密碼會被加密。
第六步:測試
先插入一個虛擬的記錄到posts_tbl表:
mysql USE xmodulo_DB;
mysql INSERT INTO posts_tbl (content, author_FirstName, author_Las tName)
VALUES ('Hi! This is some dummy text.', 'Gabriel', 'Canepa');
然后查看posts_tbl表中的所有記錄:
mysql SELECT * FROM posts_tbl;
注意:MySQL會在先前定義的地方自動插入適當(dāng)?shù)哪J(rèn)值(比如,'isEnabled'和'date')。