本文主要給大家介紹安裝和配置MySQL-cluster教程,其所涉及的東西,從理論知識來獲悉,有很多書籍、文獻(xiàn)可供大家參考,從現(xiàn)實意義角度出發(fā),創(chuàng)新互聯(lián)累計多年的實踐經(jīng)驗可分享給大家。
創(chuàng)新互聯(lián)公司從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站設(shè)計、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元文安做網(wǎng)站,已為上家服務(wù),為文安各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
mysql-cluster免編譯包下載:https://dev.mysql.com/downloads/file/?id=469881
新版本支持只把索引和用到的數(shù)據(jù)加載到內(nèi)存,而不是老版本的整個數(shù)據(jù)庫都得加到內(nèi)存中
wget https://cdn.mysql.com//Downloads/MySQL-Cluster-7.5/mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64.tar.gz
解壓:
# tar xvf mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64.tar.gz
# mv xvf mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64 /soft/mysql
給mysql-cluster目錄授權(quán)
#useradd -s mysql /sbin/nologin
# mkdir /soft/mysql/data
# chown -R mysql:mysql /soft/mysql/*
# chmod +x /soft/mysql/bin/ndb_mem*
# cd /soft/mysql/
# ln -s /soft/mysql/bin/ndb_mgmd /sbin/ndb_mgmd #方便在shell直接調(diào)用ndb_mgmd命令
# ln -s /soft/mysql/bin/ndb_mgm /sbin/ndb_mgm #方便在shell直接調(diào)用ndb_mgm命令
建立config.ini文件
# vim config.ini #內(nèi)容如下,一定要注意格式。從windows復(fù)制過來的話記得用uft8編碼
[NDBD DEFAULT]
NoOfReplicas=2 #每個數(shù)據(jù)節(jié)點的鏡像數(shù)量
DataMemory=500M #每個數(shù)據(jù)節(jié)點中給數(shù)據(jù)分配的內(nèi)存
IndexMemory=300M #每個數(shù)據(jù)節(jié)點中給索引分配的內(nèi)存
[NDB_MGMD] #配置管理節(jié)點,[]后面不能有空格,也不能有注釋
hostname=192.168.240.130
datadir=/soft/mysql/data #管理節(jié)點數(shù)據(jù)(日志)目錄
[NDBD] #數(shù)據(jù)節(jié)點配置,[]后面不能有空格,也不能有注釋
hostname=192.168.240.129
datadir=/soft/mysql/data
[NDBD]
hostname=192.168.240.127
datadir=/soft/mysql/data
[MYSQLD] #SQL節(jié)點目錄,[]后面不能有空格,也不能有注釋
hostname=192.168.240.129
[MYSQLD]
hostname=192.168.240.128
-------------------------------------------------------------------------------------------------------------------
[root@amoebe mysql]# ./bin/ndb_mgmd -f config.ini #啟動服務(wù)
MySQL Cluster Management Server mysql-5.7.18 ndb-7.5.6 #啟動成功
[root@amoebe mysql]# ./bin/ndb_mgm #進(jìn)入管理程序,可以看到配置文件生效了,但因為沒配置節(jié)點上的mysql,所以這里顯示未連接
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]2 node(s)
id=2 (not connected, accepting connect from 192.168.240.129)
id=3 (not connected, accepting connect from 192.168.240.127)
[ndb_mgmd(MGM)]1 node(s)
id=1@192.168.240.130 (mysql-5.7.18 ndb-7.5.6)
[mysqld(API)]2 node(s)
id=4 (not connected, accepting connect from 192.168.240.129)
id=5 (not connected, accepting connect from 192.168.240.128)
-------------------------------------------------------------------------------------------------------------------------------
配置節(jié)點: 192.168.240.128/192.168.240.129
[root@localhost]# useradd -s /sbin/nologin mysql
[root@localhost]# mkdir /soft/mysql
[root@localhost]# tar xf mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64.tar.gz
[root@localhost]# mkdir /soft/mysql/data
[root@localhost]# chown -R mysql:mysql /soft/mysql
[root@localhost]# cd /soft/mysql
[root@localhost mysql]# yum install -y libaio*
vim support-files/mysql.server #修改服務(wù)文件
basedir=/soft/mysql
datadir=/soft/mysql/data
[root@yaho mysql]# bin/mysqld --initialize --user=mysql --basedir=/soft/mysql --datadir=/soft/mysql/data
./bin/mysqld --initialize --user=mysql --datadir=/soft/mysql/data --注意自動生成的臨時密碼
[Note] A temporary password is generated for root@localhost: pByj>rz95OhV
----------------------------------------------------------------------------------------------------------------------------------
先更改密碼:
[root@yaho mysql]# bin/mysql -u root -p'pByj>rz95OhV' --登錄mysql,有特殊符號,要用''括起來,在這里踏坑了
mysql> use mysql; --必須先更改密碼才可以操作
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
[root@mysql]# vim /etc/my.cnf
[mysqld]
datadir=/soft/mysql/data
user=mysql
ndbcluster
lc_messages-dir=/soft/mysql/share/
ndb-connectstring=192.168.240.130
[mysql_cluster]
ndb-connectstring=192.168.240.130
[root@mysql]# bin/ndbd --initial #第一次使用要初始化數(shù)據(jù),下次不能加--initial,否則會清空數(shù)據(jù)庫
[root@mysql]# ln -s /soft/mysql/bin /sbin/mysql
[root@mysql]# ln -s /soft/mysql/support-files/mysql.server /sbin/mysqld
----------------------------------------------------------------------------------------------------------------------------
回到130控制臺:
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]2 node(s)
id=2@192.168.61.128 (mysql-5.7.18 ndb-7.5.6, starting, Nodegroup: 0) --節(jié)點ndbd已連接
id=3@192.168.61.129 (mysql-5.7.18 ndb-7.5.6, starting, Nodegroup: 0) --節(jié)點ndbd已連接
[ndb_mgmd(MGM)]1 node(s)
id=1@192.168.61.130 (mysql-5.7.18 ndb-7.5.6)
[mysqld(API)]2 node(s)
[mysqld(API)]2 node(s)
id=4@192.168.61.128 (mysql-5.7.18 ndb-7.5.6) #小心防火墻
id=5@192.168.61.129 (mysql-5.7.18 ndb-7.5.6) #小心防火墻
-----------------------------------------------------------------------------------------------------------------------------
測試:
建庫/建表
在192.168.61.128上登錄mysql:
mysql>create databases abc charset=gbk;
Query OK, 0 rows affected (0.72 sec)
mysql>create table name(id int(5) not null primary key auto_increment,name varchar(10) not null ) engine=ndb;
Query OK, 0 rows affected (0.72 sec)
mysql>insert into name(name) values ('張三'),('李四');
-----------------------------------------------------------------------------------------------------------------------------
在192.168.240.128/192.168.240.129 進(jìn)行查詢
mysql>select * from tp.name;
+----+---------+
| id | name |
+----+----------+
| 1 | 張三 |
| 2 | 李四 |
+----+---------+
-----------------------------------------------------------------------------------------------------------------------------
模擬192.168.240.128/192.168.240.129故障之一失效,再查詢
mysql>select * from tp.name;
+----+---------+
| id | name |
+----+----------+
| 1 | 張三 |
| 2 | 李四 |
+----+---------+
mysql>insert into name(name) values ('長江'),('黃河');
Query OK, 0 rows affected (0.72 sec)
mysql> select * from tp.name group by id;
+----+--------+
| id | name |
+----+--------+
| 1 | 長江 |
| 2 | 黃河 |
| 3 | 張三 |
| 4 | 李四 |
+----+--------+
4 rows in set (0.01 sec)
經(jīng)過測試總結(jié)大致有幾點:
當(dāng)cluster掛了后,兩個數(shù)據(jù)節(jié)點的mysql都不能訪問數(shù)據(jù)庫;
當(dāng)cluster掛了時,兩個mysql還是可以正常工作的,更新數(shù)據(jù)也會同步,但不能重啟mysql服務(wù);
2.只要不是兩個mysql服務(wù)同時掛了,數(shù)據(jù)還是安全的。
3.當(dāng)cluster掛掉,節(jié)點A掛掉,這時往節(jié)點B上更新數(shù)據(jù);cluster和節(jié)點A恢復(fù)上線后會造成節(jié)點A和節(jié)點B的數(shù)據(jù)不一致。
4.當(dāng)兩個mysql數(shù)據(jù)不一致時,先啟動cluster,再啟動數(shù)據(jù)更新的數(shù)據(jù)節(jié)點和SQL節(jié)點,確保已經(jīng)成功連上cluster,最后再啟動另一個節(jié)點,后一個節(jié)點會自動更新最新的數(shù)據(jù)。?。禹樞蚝苤匾。?!
5.只要cluster和ndbd還存活,mysql暫時的失效,數(shù)據(jù)也不會丟失。
7.必須有一個ndbd存活,mysql才能正常工作。
-----------------------------------------------------------------------------------------------------------------------------
啟動順序:
管理節(jié)點 ndb_megd -> 數(shù)據(jù)節(jié)點 ndbd -> SQL節(jié)點 指定ndbcluster 參數(shù)的專用mysqld
ndb_mgmd -f config.ini -> ndbd -> mysqld start
關(guān)閉順序:
SQL節(jié)點 指定ndbcluster 參數(shù)的專用mysqld -> 管理節(jié)點 ndb_mem
mysqld stop --> ndb_mgm -e shutdown --> 完成
附配置過程中碰到的幾個錯誤:
1. mysqld --initialize-insecure自動生成無密碼的root用戶,mysqld --initialize自動生成帶隨機(jī)密碼的root用戶
2.用mysql帳號設(shè)置的話需要在 /etc/security/limits.conf 中追加下面信息,不然會提示limite限制錯誤:
mysql hard nofile 65535
3.[ERROR] Can't find error-message file '/usr/local/mysql/share/zh-cn/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.
在my.cnf里添加行:
lc_messages-dir=/soft/mysql/share/
4.啟動mysql時,可能會提示:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
ln -s /soft/mysql/mysql.sock /tmp/mysql.sock #要用絕對路徑
5.ndb_mgm> showNode 2: Forced node shutdown completed. Occured during startphase 4. Caused by error 2353: 'Insuffice. ndbd服務(wù)自動斷開,可能是時差的問題:
cluser端 kill掉 ndb_mgmd 再重新啟動。數(shù)據(jù)節(jié)點再重新啟動ndbd 和mysqld 即可。
NDB引擎和Innodb 引擎的區(qū)別:摘自http://www.oschina.net/question/565065_79802
N NDB 和 Innodb 的使用基本是一樣的,ACID (原子性、一致性、隔離性、持久性)實現(xiàn)方式也基本相同,但是他們之間有一個很重要的區(qū)別:在同一個 transaction 中,如果某一部的執(zhí)行出錯,Innodb 會繼續(xù)的往下執(zhí)行,而 NDB 則會馬上回滾到最初狀態(tài)(類似于 SqlServer 中的 SET XACT_ABORT ON 的狀態(tài)),如果不注意這一點的話,在一些極端情況下,系統(tǒng)將出現(xiàn)數(shù)據(jù)不一致的情況,所以還是需要大家多多注意哦!
測試用例如下(在 test 庫中進(jìn)行測試):
[Innodb 用例]
mysql> create table test_innodb (i int not null primary key) engine innodb;
mysql> begin;
mysql> insert into test_innodb values(1);
mysql> insert into test_innodb values(1); # 主鍵重復(fù)出錯
mysql> commit;
mysql> select * from test_innodb;
+---+
| i |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
[NDB 用例]
mysql> create table test_ndb (i int not null primary key) engine ndbcluster;
mysql> begin;
mysql> insert into test_ndb values(1);
mysql> insert into test_ndb values(1); # 主鍵重復(fù)出錯
mysql> commit;
mysql> select * from test_ndb;
Empty set (0.00 sec)
看了以上安裝和配置mysql-cluster教程介紹,希望能給大家在實際運用中帶來一定的幫助。本文由于篇幅有限,難免會有不足和需要補充的地方,大家可以繼續(xù)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊板塊,會定期給大家更新行業(yè)新聞和知識,如有需要更加專業(yè)的解答,可在官網(wǎng)聯(lián)系我們的24小時售前售后,隨時幫您解答問題的。
網(wǎng)頁標(biāo)題:安裝和配置mysql-cluster教程
分享URL:http://jinyejixie.com/article28/jopgcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、面包屑導(dǎo)航、Google、網(wǎng)站設(shè)計、搜索引擎優(yōu)化、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)