加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

proxysql+mysql实现主从备份读写分离

发布时间:2023-10-03 15:22:01 所属栏目:MySql教程 来源:
导读:本文主要给大家介绍proxysql+mysql实现主从复制读写分离,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下proxysql+mysql实现主从复制读写分离吧。

本文主要给大家介绍proxysql+mysql实现主从复制读写分离,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下proxysql+mysql实现主从复制读写分离吧。
 
一、说明
 
ProxySQL是一个开源的MySQL代理云服务器,这意味着它充当MySQL云服务器和访问其数据库的应用程序之间的中介。ProxySQL可以通过在多个数据库云服务器池之间分配流量来提高性能,并且如果一个或多个数据库云服务器发生故障,还可以通过自动故障切换到备用数据库来提高可用性。
 
系统环境:master1:ubuntu16.04   mysql5.6    192.168.1.10   3307
 
master2:ubuntu16.04   mysql5.6    192.168.1.20   3307
 
slave1:   ubuntu16.04   mysql5.6    192.168.1.10   3308
 
slave2:   ubuntu16.04   mysql5.6    192.168.1.10   3309
 
slave3:   ubuntu16.04   mysql5.6    192.168.1.20   3308
 
slave4:   ubuntu16.04   mysql5.6    192.168.1.20   3309
 
【proxysql】:ubuntu16.04  mysql     192.168.1.30   3306
 
master1与master2为双主双从模式。
 
主从复制前边文章和网上文章都特别详细。这里不做介绍。请参考https://blog.51cto.com/13120271/2140400。
 
第一步 - 安装ProxySQL
 
ProxySQL的开发人员在他们的GitHub版本页面上为所有ProxySQL版本提供官方Ubuntu软件包,因此我们将从那里下载最新的软件包版本并进行安装。
 
您可以在发布列表中找到最新的软件包。命名约定是proxysql_version-distribution.deb,其中version类似于版本1.4.4的1.4.4字符串,并且distribution是一个类似于64位Ubuntu 16.04的ubuntu16_amd64字符串。
 
将最新的官方软件包(编写本文时为1.4.4)下载到/tmp目录中。
 
cd /tmp
 
curl -OL https://github.com/sysown/proxysql/releases/download/v1.4.4/proxysql_1.4.4-ubuntu16_amd64.deb
 
用dpkg安装包,用于管理.deb软件包。-i标志表示我们要从指定的文件安装。
 
sudo dpkg -i proxysql_*
 
此时,您不再需要.deb文件,因此您可以将其删除。
 
rm proxysql_*
 
接下来,我们需要一个MySQL客户端应用程序来连接到ProxySQL实例。这是因为ProxySQL内部使用一个MySQL兼容的接口来执行管理任务。我们将使用mysql命令行工具,它是mysql-client Ubuntu存储库中可用包的一部分。
 
更新软件包存储库以确保获得最新的预捆绑版本,然后安装mysql-client软件包。
 
sudo apt-get update
 
sudo apt-get install mysql-client
 
您现在满足运行ProxySQL的所有要求,但该服务在安装后不会自动启动,因此请立即手动启动。
 
sudo systemctl start proxysql
 
现在,ProxySQL应该以其默认配置运行。你可以使用systemctl查看。
 
systemctl status proxysql
 
输出看起来像这样:
 
● proxysql.service - LSB: High Performance Advanced Proxy for MySQL
 
Loaded: loaded (/etc/init.d/proxysql; bad; vendor preset: enabled)
 
Active: active (running) since Thu 2017-12-21 19:19:20 UTC; 5s ago
 
Docs: man:systemd-sysv-generator(8)
 
Process: 12350 ExecStart=/etc/init.d/proxysql start (code=exited, status=0/SUCCESS)
 
Tasks: 23
 
Memory: 30.9M
 
CPU: 86ms
 
CGroup: /system.slice/proxysql.service
 
├─12355 proxysql -c /etc/proxysql.cnf -D /var/lib/proxysql
 
└─12356 proxysql -c /etc/proxysql.cnf -D /var/lib/proxysql
 
Active (running)行表示ProxySQL已安装并正在运行。
 
接下来,我们将通过设置用于访问ProxySQL管理界面的密码来提高安全性。
 
第二步 - 设置ProxySQL管理员密码
 
第一次启动新的ProxySQL安装时,它使用程序包提供的配置文件来初始化其所有配置变量的默认值。初始化后,ProxySQL将其配置存储在数据库中,您可以通过命令行进行管理和修改。
 
要在ProxySQL中设置管理员密码,我们将连接到该配置数据库并更新相应的变量。
 
首先,访问管理界面。系统将提示您输入密码,在默认安装时,密码为admin。
 
mysql -u admin -p -h 127.0.0.1 -P 6032 --prompt='ProxySQLAdmin> '
 
-u指定我们要连接的用户,这里是admin,管理任务的默认用户,例如更改配置设置。
 
-h 127.0.0.1告诉mysql连接到本地ProxySQL实例。我们需要明确定义它,因为ProxySQL不会监听默认情况下mysql假定的socket文件。
 
-P指定要连接的端口。ProxySQL的管理界面监听6032。
 
--prompt是一个可选标志,用于更改默认提示,通常是mysql>。在这里,我们将其更改为ProxySQLAdmin>显示我们已连接到ProxySQL管理界面。这将有助于避免以后在我们也将连接到复制数据库云服务器上的MySQL接口时出现混淆。*
 
连接后,您将看到ProxySQLAdmin>提示:
 
Welcome to the MySQL monitor.  Commands end with ; or \g.
 
Your MySQL connection id is 2
 
Server version: 5.5.30 (ProxySQL Admin Module)
 
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
 
affiliates. Other names may be trademarks of their respective
 
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
ProxySQLAdmin>
 
通过更新(UPDATE)global_variables数据库中的admin-admin_credentials配置变量来更改管理帐户密码。请住将以下命令的password更改为您选择的强密码。
 
UPDATE global_variables SET variable_value='admin:password' WHERE variable_name='admin-admin_credentials';
 
Query OK, 1 row affected (0.00 sec)
 
由于ProxySQL的配置系统的工作方式,此更改不会立即生效。它由三个独立的层组成:
 
内存,在从命令行界面进行修改时会被更改。
 
运行时,ProxySQL使用它作为有效配置。
 
磁盘,用于使配置在重新启动时保持不变。
 
现在,你所做的改变是在内存中。要使更改生效,您必须将内存设置复制到运行时领域,然后将它们保存到磁盘以使其保持不变。
 
ProxySQLAdmin> LOAD ADMIN VARIABLES TO RUNTIME;
 
ProxySQLAdmin> SAVE ADMIN VARIABLES TO DISK;
 
第三步-修改配置文件
 
egrep -v '(^$|^#)' /etc/proxysql.cnf
 
admin_credentials="admin:admin"
 
mysql_ifaces="127.0.0.1:6032;/tmp/proxysql_admin.sock"
 
}
 
mysql_variables=
 
{
 
threads=4
 
max_connections=2048
 
default_query_delay=0
 
default_query_timeout=36000000
 
have_compress=true
 
poll_timeout=2000
 
interfaces="0.0.0.0:6033;/tmp/proxysql.sock"
 
default_schema="information_schema"
 
stacksize=1048576
 
server_version="5.5.30"
 
connect_timeout_server=3000
 
monitor_username="monitor"
 
monitor_password="monitor"
 
monitor_history=600000
 
monitor_connect_interval=60000
 
monitor_ping_interval=10000
 
monitor_read_only_interval=1500
 
monitor_read_only_timeout=500
 
ping_interval_server_msec=120000
 
ping_timeout_server=500
 
commands_stats=true
 
sessions_sort=true
 
connect_retries_on_failure=10
 
}
 
mysql_servers =
 
(
 
{
 
address = "192.168.1.20" # no default, required . If port is 0 , address is interpred as a Unix Socket Domain
 
port = 3307           # no default, required . If port is 0 , address is interpred as a Unix Socket Domain
 
hostgroup = 1           # no default, required
 
status = "ONLINE"     # default: ONLINE
 
weight = 1            # default: 1
 
compression = 0       # default: 0
 
max_connections = 200
 
},
 
{
 
address = "192.168.1.10" # no default, required . If port is 0 , address is interpred as a Unix Socket Domain
 
port = 3307           # no default, required . If port is 0 , address is interpred as a Unix Socket Domain
 
hostgroup = 1           # no default, required
 
status = "ONLINE"     # default: ONLINE
 
weight = 1            # default: 1
 
compression = 0       # default: 0
 
max_connections = 200
 
},
 
{
 
address = "192.168.1.20" # no default, required . If port is 0 , address is interpred as a Unix Socket Domain
 
port = 3308           # no default, required . If port is 0 , address is interpred as a Unix Socket Domain
 
hostgroup = 2           # no default, required
 
status = "ONLINE"     # default: ONLINE
 
weight = 1            # default: 1
 
compression = 0       # default: 0
 
max_connections = 1000
 
},
 
{
 
address = "192.168.1.20" # no default, required . If port is 0 , address is interpred as a Unix Socket Domain
 
port = 3309           # no default, required . If port is 0 , address is interpred as a Unix Socket Domain
 
hostgroup = 2           # no default, required
 
status = "ONLINE"     # default: ONLINE
 
weight = 1            # default: 1
 
compression = 0       # default: 0
 
max_connections = 1000
 
},
 
{
 
address = "192.168.1.10" # no default, required . If port is 0 , address is interpred as a Unix Socket Domain
 
port = 3308           # no default, required . If port is 0 , address is interpred as a Unix Socket Domain
 
hostgroup = 2           # no default, required
 
status = "ONLINE"     # default: ONLINE
 
weight = 1            # default: 1
 
compression = 0       # default: 0
 
max_connections = 1000
 
},
 
{
 
address = "192.168.1.10" # no default, required . If port is 0 , address is interpred as a Unix Socket Domain
 
port = 3309           # no default, required . If port is 0 , address is interpred as a Unix Socket Domain
 
hostgroup = 2           # no default, required
 
status = "ONLINE"     # default: ONLINE
 
weight = 1            # default: 1
 
compression = 0       # default: 0
 
max_connections = 1000
 
}
 
)
 
mysql_users:
 
(
 
{
 
username = "admin" # no default , required
 
password = "password" # default: ''
 
default_hostgroup = 1 # default: 0
 
max_connections=1000
 
default_schema="test"
 
active = 1            # default: 1
 
}
 
)
 
mysql_query_rules:
 
(
 
)
 
scheduler=
 
(
 
)
 
mysql_replication_hostgroups=
 
(
 
{
 
writer_hostgroup=1
 
reader_hostgroup=2
 
comment="test repl 1"
 
}
 
)
 
从新启动proxysql。
 
sudo systemctl restart proxysql
 
然后我们登录上去验证一下。
 
mysql -u admin -p -h 127.0.0.1 -P 6032 --prompt='ProxySQLAdmin> '
 
mysql > show databases;
 
mysql> show databases;
 
+--------------------+| Database           |
 
+--------------------+| information_schema || mysql              || performance_schema || study              || sys                |
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章