您好,登錄后才能下訂單哦!
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主從復制集群
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功能后,務必將參數master_info_repostitory設置為TABL,這樣性能可以有50%~80%的提升。這是因為并行復制開啟后對于元master.info這個文件的更新將會大幅提升,資源的競爭也會變大。在之前InnoSQL的版本中,添加了參數來控制刷新master.info這個文件的頻率,甚至可以不刷新這個文件。因為刷新這個文件是沒有必要的,即根據master-info.log這個文件恢復本身就是不可靠的。在MySQL 5.7中,推薦master_info_repository設置為TABLE,來減少這部分的開銷。
relay_log_info_repository 同理
在node115、node116上執行授權操作mysql> grant replication slave on *.* to 'rep'@'192.168.31.%' identified by 'Mirror-12345';
在配置同步之前先要獲取master file以及Pos,請根據實際情況配置
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區分源
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已經正常運行
mysql> show slave status\G[for channel chanelname]
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
在node115或者node116上使用存儲過程來確定同步
#創建表
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
#創建存儲過程
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;
//
#調用存儲
call t5(10000)
#在node117上確定數據已經同步
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'; #授權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"
修改其余兩個節點的配置文件,與第一個完全相同,除了一下兩個參數
wsrep_node_name=node125
wsrep_node_address=192.168.31.125
wsrep_node_name=node126
wsrep_node_address=192.168.31.126
啟動第一個節點
[root@node123 ~]# systemctl start mysql@bootstrap.service
mysql> show status like 'wsrep%'; #請關注下面的參數
| wsrep_cluster_size | 1
啟動第二個節點
[root@node125 ~]# systemctl start mysql@bootstrap.service
mysql> show status like 'wsrep%'; #請關注下面的參數
| wsrep_cluster_size | 2
啟動第三個節點
[root@node126 ~]# systemctl start mysql@bootstrap.service
mysql> show status like 'wsrep%'; #請關注下面的參數
| wsrep_cluster_size | 3
請使用之前提供的存儲過程驗證rep功能。
需要說明的是:這個是測試環境,包括之前的mysql主從,以及當前的galera cluster,所以沒有全量備份這個步驟,在生產環境中,需要注意。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。