MySQL中间件之ProxySQL(2):初试读写分离

1.实现一个简单的读写分离

这里通过ProxySQL实现一个简单的读写分离功能示例,以便快速入门。即使是快速入门,需要配置的内容也很多,包括:后端MySQL的配置、监控配置、发送SQL语句的用户、SQL语句的路由规则。所以,真的想要实现一个ProxySQL+MySQL,即使只实现最基本的功能,步骤也是挺多的,不过配置的逻辑都很简单。

实验环境:

角色 主机IP server_id 数据状态
Proxysql   192.168.100.21   null    
Master   192.168.100.22   110   刚安装的全新MySQL实例  
Slave1   192.168.100.23   120   刚安装的全新MySQL实例  
Slave2   192.168.100.24   130   刚安装的全新MySQL实例  

MySQL中间件之ProxySQL(2):初试读写分离

为了演示完整的过程,这里把后端MySQL主从复制的基本配置步骤也列出来了。如了解配置过程,可跳过主从配置的部分。

注意点:slave节点需要设置read_only=1。如果后端是PXC/MGR/MariaDB Galera,则无需手动设置,因为会自动设置。

1.1 配置后端的主从复制

提供3个MySQL节点的配置文件。

# 以下是Master的配置文件 [mysqld] datadir=http://www.likecs.com/data socket=http://www.likecs.com/data/mysql.sock server-id=110 log-bin=http://www.likecs.com/data/master-bin sync-binlog=1 log-error=http://www.likecs.com/data/error.log pid-file=http://www.likecs.com/data/mysqld.pid # 以下是slave1的配置文件 [mysqld] datadir=http://www.likecs.com/data socket=http://www.likecs.com/data/mysql.sock server-id=120 relay_log=http://www.likecs.com/data/relay-log log-error=http://www.likecs.com/data/error.log pid-file=http://www.likecs.com/data/mysqld.pid read_only=1 # 以下是slave2的配置文件 [mysqld] datadir=http://www.likecs.com/data socket=http://www.likecs.com/data/mysql.sock server-id=130 relay_log=http://www.likecs.com/data/relay-log log-error=http://www.likecs.com/data/error.log pid-file=http://www.likecs.com/data/mysqld.pid read_only=1

为3个MySQL节点提供数据目录/data

mkdir /data chown -R mysql.mysql /data

初始化三个MySQL节点。

mysqld --initialize-insecure --user=mysql --datadir=http://www.likecs.com/data

启动3个MySQL节点的mysqld服务。

systemctl start mysqld

连上master,修改root密码,创建用于复制的用户repl。

# 以下在master上执行 mysql> alter user root@localhost identified by 'P@ssword1!'; mysql> create user repl@'192.168.100.%' identified by 'P@ssword1!'; mysql> grant replication slave on *.* to repl@'192.168.100.%';

连上两个slave,开启复制线程。

# 以下在两个slave节点上都执行 change master to master_host='192.168.100.22', master_user='repl', master_password='P@ssword1!', master_port=3306, master_log_file='master-bin.000001', master_log_pos=4; start slave;

如此配置之后,3个MySQL节点就保持了同步。

1.2 向ProxySQL中添加MySQL节点

首先启动ProxySQL。

service proxysql start

启动后会监听两个端口,默认为6032和6033。6032端口是ProxySQL的管理端口,6033是ProxySQL对外提供服务的端口。

[root@s1 ~]# netstat -tnlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:6032 0.0.0.0:* LISTEN 1231/proxysql tcp 0 0 0.0.0.0:6033 0.0.0.0:* LISTEN 1231/proxysql tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1152/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2151/master tcp6 0 0 :::22 :::* LISTEN 1152/sshd tcp6 0 0 ::1:25 :::* LISTEN 2151/master

然后使用mysql客户端连接到ProxySQL的管理接口(admin interface),该接口的默认管理员用户和密码都是admin。

[root@s1 ~]# mysql -uadmin -padmin -P6032 -h127.0.0.1 --prompt 'admin> '

我这里重新设置了提示符。

admin> show databases; +-----+---------------+-------------------------------------+ | seq | name | file | +-----+---------------+-------------------------------------+ | 0 | main | | | 2 | disk | /var/lib/proxysql/proxysql.db | | 3 | stats | | | 4 | monitor | | | 5 | stats_history | /var/lib/proxysql/proxysql_stats.db | +-----+---------------+-------------------------------------+ 5 rows in set (0.00 sec)

ProxySQL提供了几个库,每个库都有各自的意义。本文只是快速入门文章,不会详细介绍每个库中的每个表以及每个字段,不过在接下来的文章中,我会详细介绍到每个字段,因为每个字段都重要。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzsygy.html