這種架構一般用在以下三類場景

創新互聯專業為企業提供孟州網站建設、孟州做網站、孟州網站設計、孟州網站制作等企業網站建設、網頁設計與制作、孟州企業網站模板建站服務,十年孟州做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
1. 備份多臺 Server 的數據到一臺如果按照數據切分方向來講,那就是垂直切分。比如圖 2,業務 A、B、C、D 是之前拆分好的業務,現在需要把這些拆分好的業務匯總起來備份,那這種需求也很適用于多源復制架構。實現方法我大概描述下:業務 A、B、C、D 分別位于 4 臺 Server,每臺 Server 分別有一個數據庫來隔離前端的業務數據,那這樣,在從庫就能把四臺業務的數據全部匯總起來,而不需要做額外的操作。那沒有多源復制之前,要實現這類需求,只能在匯總機器上搭建多個 MySQL 實例,那這樣勢必會涉及到跨庫關聯的問題,不但性能急劇下降,管理多個實例也沒有單臺來的容易。
2. 用來聚合前端多個 Server 的分片數據。
同樣,按照數據切分方向來講,屬于水平切分。比如圖 3,按照年份拆分好的數據,要做一個匯總數據展現,那這種架構也非常合適。實現方法稍微復雜些:比如所有 Server 共享同一數據庫和表,一般為了開發極端透明,前端配置有分庫分表的中間件,比如愛可生的 DBLE。
3. 匯總并合并多個 Server 的數據
第三類和第一種場景類似。不一樣的是不僅僅是數據需要匯總到目標端,還得合并這些數據,這就比第一種來的相對復雜些。比如圖 4,那這樣的需求,是不是也適合多源復制呢?答案是 YES。那具體怎么做呢?
1、首先要在本地建立兩個mysql服務(參考這里),指定不同的端口。我這里一個主(3306),一個從(3307)。2、然后修改主配置文件:
[mysqld]
server-id = 1
binlog-do-db=test #要同步的數據庫
#binlog-ignore-db=mysql #不同步的數據庫,如果指定了binlog-do-db這里應該可以不用指定的
log-bin=mysql-bin #要生成的二進制日記文件名稱
修改從配置文件:
[mysqld]
server-id = 2
log-bin = mysql-bin
replicate-do-db=test
3、在主庫添加一個用戶 repl 并指定replication權限
create user 'repl'@'127.0.0.1' identified by 'asdf';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'127.0.0.1'; -- --這里我指定數據庫(test.*)時報錯,而指定全庫(*.*)時會成功。
4、保持主從mysql的test數據庫初始狀態一致。
一般是先將所有的表加讀鎖,然后copy磁盤上的數據庫文件夾。我這里直接停止服務,然后將數據文件拷貝過去。
5、在主數據庫里面運行show master status;記下file和position字段對應的參數。
1.mysql數據庫沒有增量備份的機制,當數據量太大的時候備份是一個很大的問題。還好mysql數據庫提供了一種主從備份的機制,其實就是把主數據庫的所有的數據同時寫到備份數據庫中。實現mysql數據庫的熱備份。
2.要想實現雙機的熱備首先要了解主從數據庫服務器的版本的需求。要實現熱備mysql的版本都要高于3.2,還有一個基本的原則就是作為從數據庫的數據庫版本可以高于主服務器數據庫的版本,但是不可以低于主服務器的數據庫版本。
3.設置主數據庫服務器:
a.首先查看主服務器的版本是否是支持熱備的版本。然后查看my.cnf(類unix)或者my.ini(windows)中mysqld配置塊的配置有沒有log-bin(記錄數據庫更改日志),因為mysql的復制機制是基于日志的復制機制,所以主服務器一定要支持更改日志才行。然后設置要寫入日志的數據庫或者不要寫入日志的數據庫。這樣只有您感興趣的數據庫的更改才寫入到數據庫的日志中。
server-id=1 //數據庫的id這個應該默認是1就不用改動
log-bin=log_name //日志文件的名稱,這里可以制定日志到別的目錄 如果沒有設置則默認主機名的一個日志名稱
binlog-do-db=db_name //記錄日志的數據庫
binlog-ignore-db=db_name //不記錄日志的數據庫
以上的如果有多個數據庫用","分割開
然后設置同步數據庫的用戶帳號
mysql GRANT REPLICATION SLAVE ON *.*
- TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
4.0.2以前的版本, 因為不支持REPLICATION 要使用下面的語句來實現這個功能
mysql GRANT FILE ON *.*
- TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
設置好主服務器的配置文件后重新啟動數據庫
b.鎖定現有的數據庫并備份現在的數據
鎖定數據庫
mysql FLUSH TABLES WITH READ LOCK;
備份數據庫有兩種辦法一種是直接進入到mysql的data目錄然后打包你需要備份數據庫的文件夾,第二種是使用mysqldump的方式來備份數據庫但是要加上"--master-data " 這個參數,建議使用第一種方法來備份數據庫
c.查看主服務器的狀態
mysql show master status\G;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
記錄File 和 Position 項目的值,以后要用的。
d.然后把數據庫的鎖定打開
mysql UNLOCK TABLES;
4.設置從服務器
a.首先設置數據庫的配置文件
server-id=n //設置數據庫id默認主服務器是1可以隨便設置但是如果有多臺從服務器則不能重復。
master-host=db-master.mycompany.com //主服務器的IP地址或者域名
master-port=3306 //主數據庫的端口號
master-user=pertinax //同步數據庫的用戶
master-password=freitag //同步數據庫的密碼
master-connect-retry=60 //如果從服務器發現主服務器斷掉,重新連接的時間差
report-host=db-slave.mycompany.com //報告錯誤的服務器
b.把從主數據庫服務器備份出來的數據庫導入到從服務器中
c.然后啟動從數據庫服務器,如果啟動的時候沒有加上"--skip-slave-start"這個參數則進入到mysql中
mysql slave stop; //停止slave的服務
d.設置主服務器的各種參數
mysql CHANGE MASTER TO
- MASTER_HOST='master_host_name', //主服務器的IP地址
- MASTER_USER='replication_user_name', //同步數據庫的用戶
- MASTER_PASSWORD='replication_password', //同步數據庫的密碼
- MASTER_LOG_FILE='recorded_log_file_name', //主服務器二進制日志的文件名(前面要求記住的參數)
- MASTER_LOG_POS=recorded_log_position; //日志文件的開始位置(前面要求記住的參數)
e.啟動同步數據庫的線程
mysql slave start;
查看數據庫的同步情況。
查看主從服務器的狀態
mysql SHOW PROCESSLIST\G //可以查看mysql的進程看看是否有監聽的進程
如果日志太大清除日志的步驟如下
1.鎖定主數據庫
mysql FLUSH TABLES WITH READ LOCK;
2.停掉從數據庫的slave
mysql slave stop;
3.查看主數據庫的日志文件名和日志文件的position
show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| louis-bin.001 | 79 | | mysql |
+---------------+----------+--------------+------------------+
4.解開主數據庫的鎖
mysql unlock tables;
5.更新從數據庫中主數據庫的信息
mysql CHANGE MASTER TO
- MASTER_HOST='master_host_name', //主服務器的IP地址
- MASTER_USER='replication_user_name', //同步數據庫的用戶
- MASTER_PASSWORD='replication_password', //同步數據庫的密碼
- MASTER_LOG_FILE='recorded_log_file_name', //主服務器二進制日志的文件名(前面要求記住的參數)
- MASTER_LOG_POS=recorded_log_position; //日志文件的開始位置(前面要求記住的參數)
6.啟動從數據庫的slave
mysql slave start;
mysql最多可以擴展9臺主機。
MySQL是一種關系型數據庫,在Java企業級開發中非常常用,因為MySQL是開源免費的,并且方便擴展。阿里巴巴數據庫系統也大量用到MySQL,因此它的穩定性是有保障的。MySQL是開放源代碼的,因此任何人都可以在GPL的許可下下載并根據個性化的需要對其進行修改。MySQL的默認端口號是3306。
MyISAM是MySQL的默認數據庫引擎。雖然性能極佳,而且提供了大量的特性,包括全文索引、壓縮、空間函數等,但MyISAM不支持事務和行級鎖,而且最大的缺陷就是崩潰后無法安全恢復。不過,5.5版本之后,MySQL引入了InnoDB,MySQL5.5版本后默認的存儲引擎為InnoDB。
雙機熱備說明現成資料很多;我簡單說下步驟:
主機為A,從機為B
A的操作,
用root賬戶登錄,mysql -u root -p密碼
create database wangxh; 創建同步數據庫
grant all privileges on wangxh.* to 'tom'@'B的ip' identified by '密碼'; //添加用于B機同步的賬號tom
grant replication slave on *.* to 'tom'@'B的ip'; //這個權限需要額外加
flush privileges; 刷新權限表,不然tom用戶的權限無效
關閉mysql服務
編輯my.cnf,在[mysqld]下加上
server-id=1,//主機id,可以任意數字,一般都為1
log-bin=mysql-bin.index //生成的bin-log文件名,可以在mysql數據文件夾下找到
binlog_format=row //默認是STATEMENT,建議用row
binlog-do-db=wangxh --允許被復制的庫名,可以設置多個,用“,”分開
B的操作,
用root賬戶登錄,mysql -u root -p密碼
create database wangxh; 創建同步數據庫
編輯my.cnf,在[mysqld]下加上
server-id=2 //只要不和A的server-id重復即可
master-host=A的ip
master-user=tom
master-password=tom的密碼
replicate-do-db=back;復制的數據庫;
最后保存文件,然后重啟AB機器的mysql
登錄B的mysql執行,start slave
查看slave狀態,
show slave status;
目前mysql5.6版本也未能支持CHANGE MASTER TO 多用戶;而且只基于數據庫同步,不支持單個實例多線程同步
本文題目:mysql怎么支持多機 安裝多個mysql
轉載來源:http://www.yijiale78.com/article32/doddjsc.html
成都網站建設公司_創新互聯,為您提供虛擬主機、App設計、定制開發、企業建站、定制網站、網站維護
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯