這種架構(gòu)一般用在以下三類場(chǎng)景
成都創(chuàng)新互聯(lián)公司于2013年開(kāi)始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元利川做網(wǎng)站,已為上家服務(wù),為利川各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
1. 備份多臺(tái) Server 的數(shù)據(jù)到一臺(tái)如果按照數(shù)據(jù)切分方向來(lái)講,那就是垂直切分。比如圖 2,業(yè)務(wù) A、B、C、D 是之前拆分好的業(yè)務(wù),現(xiàn)在需要把這些拆分好的業(yè)務(wù)匯總起來(lái)備份,那這種需求也很適用于多源復(fù)制架構(gòu)。實(shí)現(xiàn)方法我大概描述下:業(yè)務(wù) A、B、C、D 分別位于 4 臺(tái) Server,每臺(tái) Server 分別有一個(gè)數(shù)據(jù)庫(kù)來(lái)隔離前端的業(yè)務(wù)數(shù)據(jù),那這樣,在從庫(kù)就能把四臺(tái)業(yè)務(wù)的數(shù)據(jù)全部匯總起來(lái),而不需要做額外的操作。那沒(méi)有多源復(fù)制之前,要實(shí)現(xiàn)這類需求,只能在匯總機(jī)器上搭建多個(gè) MySQL 實(shí)例,那這樣勢(shì)必會(huì)涉及到跨庫(kù)關(guān)聯(lián)的問(wèn)題,不但性能急劇下降,管理多個(gè)實(shí)例也沒(méi)有單臺(tái)來(lái)的容易。
2. 用來(lái)聚合前端多個(gè) Server 的分片數(shù)據(jù)。
同樣,按照數(shù)據(jù)切分方向來(lái)講,屬于水平切分。比如圖 3,按照年份拆分好的數(shù)據(jù),要做一個(gè)匯總數(shù)據(jù)展現(xiàn),那這種架構(gòu)也非常合適。實(shí)現(xiàn)方法稍微復(fù)雜些:比如所有 Server 共享同一數(shù)據(jù)庫(kù)和表,一般為了開(kāi)發(fā)極端透明,前端配置有分庫(kù)分表的中間件,比如愛(ài)可生的 DBLE。
3. 匯總并合并多個(gè) Server 的數(shù)據(jù)
第三類和第一種場(chǎng)景類似。不一樣的是不僅僅是數(shù)據(jù)需要匯總到目標(biāo)端,還得合并這些數(shù)據(jù),這就比第一種來(lái)的相對(duì)復(fù)雜些。比如圖 4,那這樣的需求,是不是也適合多源復(fù)制呢?答案是 YES。那具體怎么做呢?
1、mysql數(shù)據(jù)庫(kù)(例如192.168.1.1)需要?jiǎng)?chuàng)建允許遠(yuǎn)程訪問(wèn)的用戶??梢灾付↖P或允許所有IP
2、例如#創(chuàng)建數(shù)據(jù)庫(kù),允許user01在192.168.1.5訪問(wèn)
mysql -uroot -p123456 -e"create database db01"
#創(chuàng)建用戶
mysql -uroot -p123456 -e"CREATE USER 'user01'@'192.168.1.5' IDENTIFIED BY ‘123456’;"
mysql -uroot -p123456 -e"GRANT ALL ON db01.* TO 'user01'@'192.168.1.5';"
3、例如#創(chuàng)建數(shù)據(jù)庫(kù),允許user01在%(任意IP)訪問(wèn)
mysql -uroot -p123456 -e"CREATE USER 'user01'@'%' IDENTIFIED BY ‘123456’;"
mysql -uroot -p123456 -e"GRANT ALL ON db01.* TO 'user01'@'%';"
4、查詢user和相應(yīng)host
select user,host from user;
5、遠(yuǎn)程訪問(wèn)mysql測(cè)試
mysql -uroot -p123456 -h 192.168.1.1
一、連接遠(yuǎn)程數(shù)據(jù)庫(kù):
1、顯示密碼
如:MySQL
連接遠(yuǎn)程數(shù)據(jù)庫(kù)(192.168.5.116),端口“3306”,用戶名為“root”,密碼“123456”
C:/mysql -h
192.168.5.116 -P 3306 -u root -p123456
2、隱藏密碼
如:MySQL 連接本地?cái)?shù)據(jù)庫(kù),用戶名為“root”,
C:/mysql -h
localhost -u root -p
Enter password:
二、配置mysql允許遠(yuǎn)程鏈接
默認(rèn)情況下,mysql帳號(hào)不允許從遠(yuǎn)程登陸,只能在localhost登錄。本文提供了二種方法設(shè)置mysql可以通過(guò)遠(yuǎn)程主機(jī)進(jìn)行連接。
一、改表法
在localhost登入mysql后,更改 "mysql" 數(shù)據(jù)庫(kù)里的 "user" 表里的 "host"
項(xiàng),將"localhost"改稱"%"
例如:
#mysql -u root
-p
Enter password:
……
mysql
mysqlupdate user
set host = '%' where user = 'root';
mysqlselect host,
user from user;
二、授權(quán)法
例如:
你想myuser使用mypassword(密碼)從任何主機(jī)連接到mysql服務(wù)器的話。
mysqlGRANT ALL
PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果你想允許用戶myuser從ip為192.168.1.6的主機(jī)連接到mysql服務(wù)器,并使用mypassword作為密碼
mysqlGRANT ALL
PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY
'mypassword' WITH GRANT OPTION;
mysqlFLUSH
PRIVILEGES
使修改生效,就可以了
常見(jiàn)問(wèn)題:
1、在采用法二授權(quán)法之后,無(wú)法在本地登錄mysql(如:#mysql -u root -p -h
192.168.5.116
Enter password:
ERROR 1045 (28000): Access denied for user
'root'@'loadb116' (using password: YES)
上例中l(wèi)oadb116是主機(jī)名.
解決方法:
1、這時(shí)可以使用:mysql -u
root -p 登錄,進(jìn)入到mysql后。
mysql grant all privileges on *.* to 'root'@'loadb116'
identified by '123456' with grant option;
Query OK, 0 rows affected
(0.00 sec)
mysql flush
privileges;
Query OK, 0 rows affected (0.00
sec)
2、在本地使用ip地址登錄
#
mysql -u root -p -h
192.168.5.116
Enter password:
Welcome to the MySQL
monitor. Commands end with ; or /g.
Your MySQL connection id is 60
Server
version: 5.1.45 MySQL Community Server (GPL)
Type 'help;' or '/h' for
help. Type '/c' to clear the buffer.
mysql