搭建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;
记下File
和Position
的值,稍后在从服务器上配置时需要用到。
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。内容未经允许不得转载,或转载时需注明来源: 创新互联