Haproxy 集群
成都創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元原平做網(wǎng)站,已為上家服務(wù),為原平各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
haproxy01 node127 192.168.31.127
haproxy02 node128 192.168.31.128
Mycat集群
mycat01 node119 192.168.31.119
mycat02 node118 192.168.31.118
MySQL主從復(fù)制集群
mysqlm1 node115 192.168.31.115
mysqlm2 node116 192.168.31.116
mysqls1 node117 192.168.31.117
MySQL galera Cluster
pxc1 node123 192.168.31.123
pxc2 node124 192.168.31.125
pxc3 node126 192.168.31.126
編輯node115配置文件
node115# cat /etc/my.cnf
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-bin=/tmp/node115
log-bin-index=/tmp/node115
server-id=115
innodb_file_per_table=1
編輯node116配置文件
node116# cat /etc/my.cnf
log-bin=/tmp/node116
log-bin-index=/tmp/node116
server-id=116
innodb_file_per_table=1
編輯node117配置文件
node117上的配置
master_info_repository=TABLE
relay_log_info_repository=TABLE
server-id=117
slave_skip_errors = 1062
master_info_repository
開啟MTS功能后,務(wù)必將參數(shù)master_info_repostitory設(shè)置為TABL,這樣性能可以有50%~80%的提升。這是因?yàn)椴⑿袕?fù)制開啟后對(duì)于元master.info這個(gè)文件的更新將會(huì)大幅提升,資源的競(jìng)爭(zhēng)也會(huì)變大。在之前InNOSQL的版本中,添加了參數(shù)來控制刷新master.info這個(gè)文件的頻率,甚至可以不刷新這個(gè)文件。因?yàn)樗⑿逻@個(gè)文件是沒有必要的,即根據(jù)master-info.log這個(gè)文件恢復(fù)本身就是不可靠的。在MySQL 5.7中,推薦master_info_repository設(shè)置為TABLE,來減少這部分的開銷。
relay_log_info_repository 同理
在node115、node116上執(zhí)行授權(quán)操作mysql> grant replication slave on *.* to 'rep'@'192.168.31.%' identified by 'Mirror-12345';
在配置同步之前先要獲取master file以及Pos,請(qǐng)根據(jù)實(shí)際情況配置
mysql> show master status\G
*************************** 1. row ***************************
File: node115.000002
Position: 35291277
在node116上的配置:
mysql> change master to
-> master_host='192.168.31.115',
-> master_user='rep',
-> master_password='Mirror-12345',
-> master_port=3306,
-> master_log_file='node115.000002',
-> master_log_pos=154;
在node115上的配置:
mysql> change master to
-> master_host='192.168.31.116',
-> master_user='rep',
-> master_password='Mirror-12345',
-> master_port=3306,
-> master_log_file='node116.000002',
-> master_log_pos=154;
node117上的配置
mysql> set global read_only=1; #只讀模式
change master to
master_host='192.168.31.115',
master_user='rep',
master_password='Mirror-12345',
master_port=3306,
master_log_file='node115.000002',
master_log_pos=154 for channel 'node115'; #以channel區(qū)分源
change master to
master_host='192.168.31.116',
master_user='rep',
master_password='Mirror-12345',
master_port=3306,
master_log_file='node116.000001',
master_log_pos=447 for channel 'node116';
確定replication已經(jīng)正常運(yùn)行
mysql> show slave status\G[for channel chanelname]
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
在node115或者node116上使用存儲(chǔ)過程來確定同步
#創(chuàng)建表
CREATE TABLE `t3` (
`id` INT (11) NOT NULL AUTO_INCREMENT,
`user_id` VARCHAR (20) NOT NULL,
`vote_id` INT (11) NOT NULL,
`group_id` INT (11) NOT NULL,
`create_time` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `index_user_id` (`user_id`) USING HASH
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8
#創(chuàng)建存儲(chǔ)過程
DELIMITER //
CREATE PROCEDURE `t5`(IN n int)
BEGIN
DECLARE i INT DEFAULT 1;
WHILE (i <= n ) DO INSERT INTO t3(user_id,vote_id,group_id,create_time ) VALUES (FLOOR(RAND() * 1000),FLOOR(RAND() * 1000),FLOOR(RAND() * 100) ,now() );
set i=i+1;
END WHILE;
END;
//
#調(diào)用存儲(chǔ)
call t5(10000)
#在node117上確定數(shù)據(jù)已經(jīng)同步
mysql> select count(*) from t3;
[root@node123 ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
# yum install Percona-XtraDB-Cluster-57
# systemctl start mysql
# mysql -uroot -p
mysql> grant all on *.* to sstuser@'192.168.31.%' identified by 'Mirror-12345'; #授權(quán)sst用戶
# systemctl stop mysql
修改wsrep配置文件
[root@node123 ~]# cat /etc/percona-xtradb-cluster.conf.d/wsrep.cnf |grep -v '#'
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.31.123,192.168.31.125,192.168.31.126
binlog_format=ROW
default_storage_engine=InnoDB
wsrep_slave_threads= 8
wsrep_log_conflicts
innodb_autoinc_lock_mode=2
wsrep_node_address=192.168.31.123
wsrep_cluster_name=pxc-cluster
wsrep_node_name=node123
pxc_strict_mode=ENFORCING
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth="sstuser:Mirror-12345"
修改其余兩個(gè)節(jié)點(diǎn)的配置文件,與第一個(gè)完全相同,除了一下兩個(gè)參數(shù)
wsrep_node_name=node125
wsrep_node_address=192.168.31.125
wsrep_node_name=node126
wsrep_node_address=192.168.31.126
啟動(dòng)第一個(gè)節(jié)點(diǎn)
[root@node123 ~]# systemctl start mysql@bootstrap.service
mysql> show status like 'wsrep%'; #請(qǐng)關(guān)注下面的參數(shù)
| wsrep_cluster_size | 1
啟動(dòng)第二個(gè)節(jié)點(diǎn)
[root@node125 ~]# systemctl start mysql@bootstrap.service
mysql> show status like 'wsrep%'; #請(qǐng)關(guān)注下面的參數(shù)
| wsrep_cluster_size | 2
啟動(dòng)第三個(gè)節(jié)點(diǎn)
[root@node126 ~]# systemctl start mysql@bootstrap.service
mysql> show status like 'wsrep%'; #請(qǐng)關(guān)注下面的參數(shù)
| wsrep_cluster_size | 3
請(qǐng)使用之前提供的存儲(chǔ)過程驗(yàn)證rep功能。
需要說明的是:這個(gè)是測(cè)試環(huán)境,包括之前的mysql主從,以及當(dāng)前的galera cluster,所以沒有全量備份這個(gè)步驟,在生產(chǎn)環(huán)境中,需要注意。