mysql分布式集群怎么搭建

搭建MySQL分布式集群需要使用MySQL Cluster技术,首先安装管理节点和数据节点,然后配置集群参数,最后启动集群并进行测试。

搭建MySQL分布式集群需要以下几个步骤:

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、网站设计、外贸网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的波密网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

1、准备硬件环境

2、安装MySQL数据库

3、配置MySQL主从复制

4、安装和配置ProxySQL

5、测试集群功能

1. 准备硬件环境

为了搭建一个MySQL分布式集群,我们需要至少3台服务器,其中一台作为主服务器(Master),另外两台作为从服务器(Slave),这里假设我们已经准备好了3台服务器,它们的IP地址分别为:

主服务器:192.168.1.1

从服务器1:192.168.1.2

从服务器2:192.168.1.3

2. 安装MySQL数据库

在3台服务器上分别安装MySQL数据库,这里以Ubuntu系统为例,使用以下命令安装:

sudo aptget update
sudo aptget install mysqlserver

安装完成后,登录MySQL,修改root用户的密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password';

3. 配置MySQL主从复制

3.1 配置主服务器

编辑主服务器的/etc/mysql/mysql.conf.d/mysqld.cnf文件,添加以下内容:

[mysqld]
serverid=1
logbin=mysqlbin
binlogformat=mixed

重启MySQL服务:

sudo service mysql restart

创建用于复制的用户:

CREATE USER 'repl'@'%' IDENTIFIED BY 'repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

查看主服务器状态:

SHOW MASTER STATUS;

记下FilePosition的值,稍后在从服务器上配置时需要用到。

3.2 配置从服务器

编辑从服务器的/etc/mysql/mysql.conf.d/mysqld.cnf文件,添加以下内容:

[mysqld]
serverid=2
relaylog=relaylog

重启MySQL服务:

sudo service mysql restart

在从服务器上配置主服务器信息:

CHANGE MASTER TO
MASTER_HOST='192.168.1.1',
MASTER_USER='repl',
MASTER_PASSWORD='repl_password',
MASTER_LOG_FILE='之前记录的File值',
MASTER_LOG_POS=之前记录的Position值;

启动从服务器上的复制进程:

START SLAVE;

查看从服务器状态,确保复制正常:

SHOW SLAVE STATUS\G;

4. 安装和配置ProxySQL

在一台新的服务器上安装ProxySQL,用于负载均衡和故障转移,这里以Ubuntu系统为例,使用以下命令安装:

wget https://repo.proxysql.com/ProxySQL2.0.131ubuntu18.04.x86_64.sh
chmod +x ProxySQL2.0.131ubuntu18.04.x86_64.sh
sudo ./ProxySQL2.0.131ubuntu18.04.x86_64.sh

安装完成后,编辑/etc/proxysql.cnf文件,添加以下内容:

mysql_user: proxysql
mysql_password: proxysql_password

重启ProxySQL服务:

sudo service proxysql restart

登录ProxySQL管理界面:

mysql uadmin padmin h127.0.0.1 P6032 prompt='ProxySQL> '

添加主服务器和从服务器的信息:

INSERT INTO global_variables (variable_name, variable_value) VALUES('mysqlmaster.hostgroups', 'group1');
INSERT INTO global_variables (variable_name, variable_value) VALUES('mysqlmaster.load_balance', 'ON');
INSERT INTO global_variables (variable_name, variable_value) VALUES('mysqlmaster.failover_on_error', 'OFF');
INSERT INTO global_variables (variable_name, variable_value) VALUES('mysqlslave.read_only', 'ON');
INSERT INTO global_variables (variable_name, variable_value) VALUES('mysqlslave.ignore_auto_incr', 'ON');
INSERT INTO global_variables (variable_name, variable_value) VALUES('mysqlslave.net_write_timeout', '10000');
INSERT INTO global_variables (variable_name, variable_value) VALUES('mysqlslave.net_read_timeout', '10000');

添加主服务器和从服务器的访问信息:

INSERT INTO mysql_servers (hostname, port, username, password, weight) VALUES('192.168.1.1', 3306, 'root', 'your_password', 1);
INSERT INTO mysql_servers (hostname, port, username, password, weight) VALUES('192.168.1.2', 3306, 'root', 'your_password', 1);
INSERT INTO mysql_servers (hostname, port, username, password, weight) VALUES('192.168.1.3', 3306, 'root', 'your_password', 1);

创建用户和访问权限:

INSERT INTO users (username, password, preferred_hostgroup, hostgroup) VALUES('client', 'client_password', 'group1', 'group1');
INSERT INTO mysql_query_rules (rule_id, active, source_hostgroup, target_hostgroup, sql_pattern, replacement_pattern) VALUES(1, 'Y', 'group1', 'group1', 'SELECT @@GLOBAL\\.GTID_EXECUTED', '');
INSERT INTO mysql_query_rules (rule_id, active, source_hostgroup, target_hostgroup, sql_pattern, replacement_pattern) VALUES(2, 'Y', 'group1', 'group1', 'BINLOG_WAIT_EVENT', '');
INSERT INTO mysql_query_rules (rule_id, active, source_hostgroup, target_hostgroup, sql_pattern, replacement_pattern) VALUES(3, 'Y', 'group1', 'group1', 'BINLOG_CHECKPOINT', '');
INSERT INTO mysql_query_rules (rule_id, active, source_hostgroup, target_hostgroup, sql_pattern, replacement_pattern) VALUES(4, 'Y', 'group1', 'group1', 'RESET MASTER', '');
INSERT INTO mysql_query_rules (rule_id, active, source_hostgroup, target_hostgroup, sql_pattern, replacement_pattern) VALUES(5, 'Y', 'group1', 'group1', 'SHOW MASTER STATUS', '');
INSERT INTO mysql_query_rules (rule_id, active, source_hostgroup, target_hostgroup, sql_pattern, replacement_pattern) VALUES(6, 'Y', 'group1', 'group1', 'START MASTER', '');
INSERT INTO mysql_query_rules (rule_id, active, source_hostgroup, target_hostgroup, sql_pattern, replacement_pattern) VALUES(7, 'Y', 'group1', 'group1', 'STOP MASTER', '');
INSERT INTO mysql_query_rules (rule_id, active, source_hostgroup, target_hostgroup, sql_pattern, replacement_pattern) VALUES(8, 'Y', 'group1', 'group1', 'SHOW SLAVE STATUS', '');
INSERT INTO mysql_query_rules (rule_id, active, source_hostgroup, target_hostgroup, sql_pattern, replacement_pattern) VALUES(9, 'Y', 'group1', 'group1', 'SHOW BINARY LOGS', '');

重启ProxySQL服务:

sudo service proxysql

分享名称:mysql分布式集群怎么搭建
分享链接:http://www.shufengxianlan.com/qtweb/news40/55090.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联