溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Mycat讀寫分離以及拆庫(kù)拆表綜合實(shí)驗(yàn)1:mysql主從以及garela cluster環(huán)境準(zhǔn)備

發(fā)布時(shí)間:2020-06-17 07:24:08 來(lái)源:網(wǎng)絡(luò) 閱讀:738 作者:Mathology 欄目:MySQL數(shù)據(jù)庫(kù)

數(shù)據(jù)規(guī)劃:

Haproxy 集群

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

部署mysql互為主從、多源復(fù)制

編輯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ù)來(lái)控制刷新master.info這個(gè)文件的頻率,甚至可以不刷新這個(gè)文件。因?yàn)樗⑿逻@個(gè)文件是沒有必要的,即根據(jù)master-info.log這個(gè)文件恢復(fù)本身就是不可靠的。在MySQL 5.7中,推薦master_info_repository設(shè)置為TABLE,來(lái)減少這部分的開銷。

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ǔ)過程來(lái)確定同步

#創(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;

部署galera cluster

[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)境中,需要注意。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI