MySQL数据库读写分离(小白的“升级打怪”成长之路)

西门子SCL出栈入栈算法(附带源码) 栈是一种数据结构,它的特点是数据后入先出(Last In First Out,LIFO)或者说是先入后出,意思是一样的。栈有三个基本动作:初始化、入栈和出栈。接下来给大家介绍下我使用SCL语言编写的栈函数,它以不定长数组作为存储区,以实数作为数据类型,实现了栈的初始化、入栈和出栈的操作。 阅读详情

目录

一、maxscale概述

MaxScale核心介绍

主要功能特性

二、读写分离

1、环境说明

2、mysql主从复制配置

3、maxscale安装

4、配置maxscale

实战案例

1、配置mysql数据库主从复制

2、配置maxscale


一、maxscale概述

MaxScale核心介绍

MaxScale是由MariaDB公司开发的一款高性能、模块化数据库代理和负载均衡工具,专门为MySQL/MariaDB数据库设计。它作为数据库集群的中间层,提供智能路由、负载均衡和故障转移功能。

主要功能特性

  1. 高级负载均衡:

    • 支持读写分离

    • 基于连接数/查询数的负载分配

    • 自定义路由规则

  2. 高可用性保障:

    • 自动故障检测和切换

    • 支持主从复制和Galera集群

    • 零停机维护能力

  3. 安全增强:

    • 连接加密(TLS/SSL)

    • 数据库防火墙

    • 审计日志记录

  4. 性能优化:

    • 查询缓存

    • 连接池管理

    • 结果集压缩

MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换。(MyCat) 官网:https://mariadb.com/kb/en/mariadb-enterprise/mariadb-maxscale-20/

下载地址:https://dlm.mariadb.com/3927179/MaxScale/24.02.3/rhel/9/x86_64/maxscale-24.02.3-1.rhel.9.x86_64.rpm

https://dlm.mariadb.com/3993858/MaxScale/24.02.4/rhel/8/x86_64/maxscale-24.02.4-1.rhel.8.x86_64.rpm

二、读写分离

1、环境说明

数据库角色IP应用与系统版本
master192.168.166.25rocky linux9.4 mysql-8.0.36
slave192.168.166.26rocky linux9.4 mysql-8.0.36
slave2192.168.166.27rocky linux9.4 mysql-8.0.36
maxscale192.168.166.9rocky linux9.4 maxscale24.02.3-GA

2、mysql主从复制配置

分别在主从三台服务器上安装mysql8,并配置主从复制。

##由于认证插件问题,需要在master服务器使用下述命令进行更改密码的验证插件。
ALTER USER'slave'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
​
###修改认证插件
##my.cnf
default-authentication-plugin=mysql_native_password

3、maxscale安装

#下载yum源
[root@maxscale ~]# curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash
​
# [info] Checking for script prerequisites.
​
# [info] MariaDB Server version 11.2 is valid
​
# [info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo
​
# [info] Adding trusted package signing keys...
​
/etc/pki/rpm-gpg ~
~
​
# [info] Successfully added trusted package signing keys
​
# [info] Cleaning package cache...
​
25 files removed
[root@maxscale ~]# ls /etc/yum.repos.d/
mariadb.repo  rocky-addons.repo  rocky-devel.repo  rocky-extras.repo  rocky.repo
#安装maxscale
[root@maxscale ~]# yum -y install maxscale

4、配置maxscale

登录到主库

[root@master ~]# mysql -uroot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.36 MySQL Community Server - GPL
​
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
​
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.
#创建maxscale用户密码是maxscale
mysql> CREATE USER 'maxscale'@'%' IDENTIFIED BY 'maxscale';
Query OK, 0 rows affected (0.00 sec)
#授权maxscale可以查询所有数据库
mysql> GRANT SELECT ON mysql.* TO 'maxscale'@'%';
Query OK, 0 rows affected (0.01 sec)
#授权可以看所有数据库
mysql> GRANT SHOW DATABASES ON *.* TO 'maxscale'@'%';
Query OK, 0 rows affected (0.00 sec)
#创建admin用户可以在maxscale上登录
mysql> CREATE USER 'admin'@'192.168.166.%' IDENTIFIED BY 'admin';
Query OK, 0 rows affected (0.01 sec)

在maxscale上安装mysql

[root@maxscale ~]# yum -y install mysql
[root@maxscale ~]# which mysql
/usr/bin/mysql
#登录到master
[root@maxscale ~]# mysql -uadmin -padmin -h192.168.166.25
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.36 MySQL Community Server - GPL
​
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
​
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.
####因为没有权限所以只能看到两个数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
+--------------------+
2 rows in set (0.00 sec)
​
mysql> exit
Bye

回到master主库设置增删改查权限

mysql> GRANT CREATE, SELECT, INSERT, UPDATE, DELETE ON *.* TO 'admin'@'192.168.166.%';
Query OK, 0 rows affected (0.00 sec)

在maxscale上修改配置文件

[root@maxscale ~]# vim /etc/maxscale.cnf
#先看有无这个
[maxscale]
threads=auto
​
#修改后端服务器地址
[server1]
type=server
address=192.168.166.25
port=3306
protocol=MySQLBackend
​
[server2]
type=server
address=192.168.166.26
port=3306
protocol=MySQLBackend
​
[server3]
type=server
address=192.168.166.27
port=3306
protocol=MySQLBackend
​
#配置监控
[MySQL-Monitor]
type=monitor
module=mariadbmon
servers=server1,server2,server3
user=monitor
password=monitor
monitor_interval=2s
​
#注释掉只读配置
#[Read-Only-Service]
#type=service
#router=readconnroute
#servers=server2
#user=maxscale
#password=maxscale
#router_options=slave
​
#修改读写分离服务
[Read-Write-Service]
type=service
router=readwritesplit
servers=server1,server2,server3
user=maxscale
password=maxscale
version_string = 8.0
#配置listener
#注释掉只读
#[Read-Only-Listener]
#type=listener
#service=Read-Only-Service
#protocol=mariadbprotocol
#port=4008
#修改读写分离
[Read-Write-Listener]
type=listener
service=Read-Write-Service
protocol=mariadbprotocol
port=3306 #(伪装成数据库端口3306)

切换到主库创建monitor用户

mysql> CREATE USER 'monitor'@'%' IDENTIFIED BY 'monitor';
Query OK, 0 rows affected (0.01 sec)
#再添加授权
mysql> GRANT REPLICATION CLIENT on *.* to 'monitor'@'%';
Query OK, 0 rows affected (0.00 sec)
​
mysql> GRANT REPLICATION SLAVE on *.* to 'monitor'@'%';
Query OK, 0 rows affected (0.01 sec)
​
mysql> GRANT SUPER,RELOAD on *.* to 'monitor'@'%';
Query OK, 0 rows affected, 1 warning (0.01 sec)

启动服务

[root@maxscale ~]# systemctl start maxscale

查看端口

[root@maxscale ~]# ss -antl
State     Recv-Q    Send-Q       Local Address:Port       Peer Address:Port   Process    
LISTEN    0         4096             127.0.0.1:8989            0.0.0.0:*                 
LISTEN    0         128                0.0.0.0:22              0.0.0.0:*                 
LISTEN    0         4096                     *:3306                  *:*                 
LISTEN    0         128                   [::]:22                 [::]:*                 
[root@maxscale ~]# ss -antlp
State      Recv-Q     Send-Q          Local Address:Port           Peer Address:Port     Process                                                                                  
LISTEN     0          4096                127.0.0.1:8989                0.0.0.0:*         users:(("maxscale",pid=15450,fd=19))                                                    
LISTEN     0          128                   0.0.0.0:22                  0.0.0.0:*         users:(("sshd",pid=792,fd=3))                                                           
LISTEN     0          4096                        *:3306                      *:*         users:(("maxscale",pid=15450,fd=27))                                                    
LISTEN     0          128                      [::]:22                     [::]:*         users:(("sshd",pid=792,fd=4))                                                           

查看有哪些服务

[root@maxscale ~]# maxctrl list services
┌────────────────────┬────────────────┬─────────────┬───────────────────┬───────────────────────────┐
│ Service            │ Router         │ Connections │ Total Connections │ Targets                   │
├────────────────────┼────────────────┼─────────────┼───────────────────┼───────────────────────────┤
│ Read-Write-Service │ readwritesplit │ 0           │ 0                 │ server1, server2, server3 │
└────────────────────┴────────────────┴─────────────┴───────────────────┴───────────────────────────┘

查看后台服务器有哪些

[root@maxscale ~]# maxctrl list servers
┌─────────┬─────────────────┬──────┬─────────────┬─────────────────┬──────┬───────────────┐
│ Server  │ Address         │ Port │ Connections │ State           │ GTID │ Monitor       │
├─────────┼─────────────────┼──────┼─────────────┼─────────────────┼──────┼───────────────┤
│ server1 │ 192.168.166.25 │ 3306 │ 0           │ Master, Running │      │ MySQL-Monitor │
├─────────┼─────────────────┼──────┼─────────────┼─────────────────┼──────┼───────────────┤
│ server2 │ 192.168.166.27 │ 3306 │ 0           │ Slave, Running  │      │ MySQL-Monitor │
├─────────┼─────────────────┼──────┼─────────────┼─────────────────┼──────┼───────────────┤
│ server3 │ 192.168.166.26 │ 3306 │ 0           │ Slave, Running  │      │ MySQL-Monitor │
└─────────┴─────────────────┴──────┴─────────────┴─────────────────┴──────┴───────────────┘

测试

用客户机连接maxscale

username:admin
password:admin

会发现进行读操作时,是在slave的从数据库上执行;在进行写操作时,是在master主数据库上执行

实战案例

1、配置mysql数据库主从复制

两台设备(ip分别为192.168.58.160和192.168.58.161)都安装mysql服务

[root@mysql-slave ~]# yum install -y mysql-server
[root@mysql-slave ~]# systemctl start mysqld

主服务配置

对时

#192.168.58.160
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
[root@mysql ~]# vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool 2.rocky.pool.ntp.org iburst
​
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
##添加修改此字段
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#pool 2.rocky.pool.ntp.org iburst
server ntp.aliyun.com iburst
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
​
​
[root@mysql ~]# systemctl restart chronyd.service 
[root@mysql ~]# hostnamectl set-hostname mysql-master
[root@mysql ~]# bash
[root@mysql-master ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 76
Server version: 8.0.41 Source distribution
​
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
​
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.
​
mysql> create user slave@'192.168.58.%' identified by '123.com';    #创建从主机可以进行访问的用户slave
Query OK, 0 rows affected (0.02 sec)
​
mysql> grant all on *.* to slave@'192.168.58.%';    #给slave用户赋权
Query OK, 0 rows affected (0.02 sec)
​
mysql> exit
Bye
[root@mysql-master ~]# vim /etc/my.cnf.d/mysql-server.cnf 
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
#添加命令,启用二进制日志记录功能
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
log-bin=mysql-bin
binlog_format="statement"
[root@mysql-master ~]# systemctl restart mysqld
#关闭防火墙和SELinux
[root@mysql-master ~]# systemctl stop firewalld
[root@mysql-master ~]# setenforce 0
[root@mysql-master ~]# cd /var/lib/mysql
#验证配置
[root@mysql-master mysql]# ls
 auto.cnf          db1                  mysql-bin.000001     private_key.pem
 binlog.000001    '#ib_16384_0.dblwr'   mysql-bin.index      public_key.pem
 binlog.000002    '#ib_16384_1.dblwr'   mysql.ibd            server-cert.pem
 binlog.000003     ib_buffer_pool       mysql.sock           server-key.pem
 binlog.index      ibdata1              mysql.sock.lock      sys
 ca-key.pem        ibtmp1               mysql_upgrade_info   test
 ca.pem           '#innodb_redo'        mysqlx.sock          test2
 client-cert.pem  '#innodb_temp'        mysqlx.sock.lock     undo_001
 client-key.pem    mysql                performance_schema   undo_002
​
[root@mysql-master mysql]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.41 Source distribution
​
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
​
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.
​
#查看master正在使用的日志文件及日志书写位置
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      157 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
#注意:查看位置完毕后,不要对master做任何操作,等配置完从服务再进行其余操作

从服务器配置

对时

#192.168.58.161
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
[root@mysql ~]# vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool 2.rocky.pool.ntp.org iburst
​
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
​
##添加修改此字段
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#pool 2.rocky.pool.ntp.org iburst
server ntp.aliyun.com iburst
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
​
[root@mysql ~]# systemctl restart chronyd.service 
[root@localhost ~]# hostnamectl set-hostname mysql-slave
[root@localhost ~]# bash
[root@mysql-slave ~]# vim /etc/my.cnf.d/mysql-server.cnf 
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
#添加命令,启用二进制日志中继日志
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
binlog_format="statement"
relay-log-index=slave-bin.index
server-id=22
​
[root@mysql-slave ~]# systemctl restart mysqld
#关闭防火墙和SELinux
[root@mysql-slave ~]# systemctl stop firewalld
[root@mysql-slave ~]# setenforce 0
[root@mysql-slave ~]# cd /var/lib/mysql
#配置验证,此时没有与主服务器进行连接,所以没有产生对应的relay log
[root@mysql-slave mysql]# ls
 auto.cnf         '#ib_16384_0.dblwr'   mysql.ibd            public_key.pem
 binlog.000001    '#ib_16384_1.dblwr'   mysql.sock           server-cert.pem
 binlog.000002     ib_buffer_pool       mysql.sock.lock      server-key.pem
 binlog.index      ibdata1              mysql_upgrade_info   sys
 ca-key.pem        ibtmp1               mysqlx.sock          undo_001
 ca.pem           '#innodb_redo'        mysqlx.sock.lock     undo_002
 client-cert.pem  '#innodb_temp'        performance_schema
 client-key.pem    mysql                private_key.pem
[root@mysql-slave mysql]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.41 Source distribution
​
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
​
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.
​
##配置从服务器的所属主服务器
mysql> change master to master_host='192.168.58.160',master_user='slave',master_password='123.com',master_log_file='mysql-bin.000001',master_log_pos=157;
Query OK, 0 rows affected, 8 warnings (0.02 sec)
​
##启动slave角色,默认没有配置主从时,所有的mysql节点都是master
mysql> start slave;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
​
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

验证结果

#192.168.58.160
#创建新库c2505
mysql> create database c2505;
Query OK, 1 row affected (0.00 sec)
​
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| c2505              |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
8 rows in set (0.01 sec)
​
#192.168.58.161
#验证,查看到这里也创建了一个新库c2505
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| c2505              |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
2、配置maxscale
#192.168.58.170
[root@bogon ~]# hostnamectl set-hostname maxscale
[root@bogon ~]# bash
#安装maxscale
[root@maxscale ~]# yum -y install maxscale
[root@maxscale ~]# yum -y install mariadb

修改主从服务器数据库配置文件

#192.168.58.160
#登录到主库
root@mysql-master mysql]# vim /etc/my.cnf.d/mysql-server.cnf 
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
log-bin=mysql-bin
binlog_format="statement"   
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
log-bin=mysql-bin
binlog_format="statement"
server-id=11    #添加此id,注意此id不能与其他服务器id相同
default-authentication-plugin=mysql_native_password     #修改认证插件
​
[root@mysql-master mysql]# systemctl restart mysqld
[root@mysql-master mysql]# mysql 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.41 Source distribution
​
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
​
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.
​
#创建maxscale用户密码是maxscale
mysql> create user maxscale@'%' identified by 'maxscale';
Query OK, 0 rows affected (0.02 sec)
#授权maxscale用户
mysql> grant all on *.* to maxscale@'%';
Query OK, 0 rows affected (0.01 sec)
#创建admin用户可以在maxscale上登录
mysql> create user 'admin'@'192.168.58.%' identified by 'admin';
Query OK, 0 rows affected (0.01 sec)
mysql> grant create,select,insert,update,delete on *.* to 'admin'@'192.168.58.%';
Query OK, 0 rows affected (0.00 sec)
​
创建monitor用户
mysql> create user 'monitor'@'%' identified by 'monitor';
Query OK, 0 rows affected (0.01 sec)
​
mysql> grant replication client on *.* to 'monitor'@'%';
Query OK, 0 rows affected (0.00 sec)
​
mysql> grant replication slave on *.* to 'monitor'@'%';
Query OK, 0 rows affected (0.01 sec)
​
mysql> grant super,reload on *.* to 'monitor'@'%';
Query OK, 0 rows affected, 1 warning (0.00 sec)
#192.168.58.161
[root@mysql-slave mysql]# vim /etc/my.cnf.d/mysql-server.cnf
mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
binlog_format="statement"
relay-log-index=slave-bin.index
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
binlog_format="statement"
relay-log-index=slave-bin.index
server-id=22    #添加此id,注意此id不能与其他服务器id相同
default-authentication-plugin=mysql_native_password     #修改认证插件
​
[root@mysql-slave mysql]# systemctl restart mysqld

更改maxscale的配置文件

#192.168.58.170
[root@maxscale ~]# mysql -uadmin -padmin -h192.168.58.160
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.41 Source distribution
​
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| c2505              |
| db1                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
| test2              |
+--------------------+
8 rows in set (0.009 sec)
 
MySQL [(none)]> exit
Bye
​
[root@maxscale ~]# vim /etc/maxscale.cnf
[maxscale]
threads=auto
​
[server1]
type=server
address=192.168.58.160
port=3306
protocol=MySQLBackend
​
[server2]
type=server
address=192.168.58.161
port=3306
protocol=MySQLBackend
​
​
[MySQL-Monitor]
type=monitor
module=mariadbmon
servers=server1,server2
user=monitor
password=monitor
monitor_interval=2s
​
#注释掉只读配置
#[Read-Only-Service]
#type=service
#router=readconnroute
#servers=server2
#user=maxscale
#password=maxscale
#router_options=slave
​
#修改读写分离服务
[Read-Write-Service]
type=service
router=readwritesplit
servers=server1,server2
user=maxscale
password=maxscale
version_string = 8.0
#配置listener
#注释掉只读
#[Read-Only-Listener]
#type=listener
#service=Read-Only-Service
#protocol=mariadbprotocol
#port=4008
#修改读写分离
[Read-Write-Listener]
type=listener
service=Read-Write-Service
protocol=mariadbprotocol
port=3306
​
[root@maxscale ~]# setenforce 0
[root@maxscale ~]# systemctl stop firewalld

启动服务

#192.168.58.170
[root@maxscale ~]# systemctl start maxscale

验证结果

看到感觉有帮助的朋友,劳烦动动发财的小手给博主点个赞

【连接器专题】 EIA-364 系列标准的完整列表 EIA-364 系列标准在电子工业中具有重要的地位,为电子连接器和互连系统的测试和验证提供了统一的、可操作的流程和方法,有助于提高电子产品的质量和可靠性,促进了电子工业的发展 阅读详情

相关推荐

SAM2与Docker的完美组合:5分钟搞定Linux环境下的图像分割部署

本文详细介绍了如何在Linux环境下通过Docker快速部署SAM2图像分割模型,解决安装过程中的常见问题。文章提供了从镜像选择、CUDA版本匹配到容器构建的全流程指南,特别针对GPU加速环境下的'cudnn_frontend: No execution plans support the graph'等报错提供了实用解决方案,帮助开发者在5分钟内完成高效部署。

fern8的博客 933

高级运维开发工程师的打怪升级之路

人生就像一场游戏,充满了挑战与机遇。作为高级运维开发工程师,我们在职业生涯中不断面对各种困难,为了梦想、为了家人、为了自己,我们不懈奋斗。今天,让我们一起回顾这段充满挑战的“打怪升级”之旅,看看如何从一名初出茅庐的新人成长为行业内的佼佼者。在初级阶段,运维开发工程师的工作可能显得琐碎且缺乏成就感,但这些基础工作为后续的发展奠定了坚实的基础。每年的“金三银四”是跳槽的高峰期,但并不是每个人都能顺利找到理想的工作。掌握80%互联网公司会用到的技术,才能在职场中具备更强的竞争力。

软件架构师笔记 1432

FPGA开发者必看:Xilinx PCIe IP核BAR地址配置避坑指南(附实例解析)

本文为FPGA开发者提供了Xilinx PCIe IP核中BAR地址配置的详细避坑指南。文章深入解析了32位与64位地址空间的选择逻辑、Pcie to AXI Translation参数的核心作用,并通过实例说明如何正确配置以避免地址映射错乱和数据访问失败。重点探讨了BAR空间类型、大小设定以及地址转换机制,帮助开发者构建清晰可靠的PCIe系统,是调试与优化PCIe设计的关键参考。

weixin_29252171的博客 424

MySQL Galera Cluster部署(小白的“升级打怪”成长之路)

MySQL Galera Cluster 是一个高可用、同步复制的数据库解决方案,基于 Galera Library 和 MySQL 数据库。它设计用于提供高可用性、负载均衡和数据一致性,特别适合需要高写入负载和多主节点支持的场景。

deeper_wind的博客 1049

liquibase介绍

1、Liquibase还是Flyway Flyway和Liquibase都支持专业数据库重构和版本控制所需的所有功能,因此您将始终知道要处理的数据库模式的版本以及它是否与软件版本匹配。两种工具都集成在Maven或Gradle构建脚本中以及Spring Boot生态系统中,因此您可以完全自动化数据库重构。 Flyway使用SQL定义数据库更改,因此您可以定制SQL脚本,使其与基础数据库技术(例如Oracle或PostgreSQL)良好地配合使用。另一方面,使用Liquibase,您可以通过使用XML,YA

赶路人儿 7533

ROS2实战:构建模块化启动文件(launch file)以驱动复杂机器人系统

本文详细介绍了ROS2中构建模块化启动文件(launch file)的最佳实践,帮助开发者高效管理复杂机器人系统的节点启动。通过功能分解、参数化设计和嵌套启动等技术,实现批量管理、依赖控制和配置统一,显著提升系统稳定性和调试效率。文章包含实战代码示例和工程化建议,特别适合自动驾驶、物流机器人等场景应用。

weixin_28744613的博客 214

MySQL数据库基础(小白的“升级打怪”成长之路)

数据库(Database)简称DB,按照一定格式存储数据的一些文件的组合,顾名思义就是存储数据的仓库,实际上就是一堆文件。这些文件中存储了具有特定格式的数据。数据库管理数据有诸多优点,如降低存储数据的冗余度,存储的数据可以共享,便于维护数据完整性,能够实现数据的安全性等。数据库的发展经历了萌芽、初级、中级、和高级阶段。数据库管理系统(DateBase Management System)

deeper_wind的博客 1026

PaddleOCR训练自己的数据

一 、数据准备 采用PPOCRLabel标注自己的数据 PPOCRLabel是一款适用于OCR领域的半自动化图形标注工具,内置PP-OCR模型对数据自动标注和重新识别。使用Python3和PyQT5编写,支持矩形框标注和四点标注模式,导出格式可直接用于PaddleOCR检测和识别模型的训练。 1.1 安装PaddlePaddle pip3 install --upgrade pip # 如果您的机器安装的是CUDA9或CUDA10,请运行以下命令安装 python3 -m pip in.

zyb的博客 1万+

从零到英雄:体育数据API的“打怪升级”之路

欢迎来到“体育数据API打怪升级”的世界!在这里,你将从一个“菜鸟”程序员,逐步成长为“数据大神”,甚至还能在朋友圈里秀一把“未卜先知”的技能。准备好了吗?带上你的键盘和咖啡,我们开始这段“打怪升级”的冒险吧!

Tina0898的博客 898

汇川Easy系列PLC系统PID指令编程应用(增量型)

增量式PIDS7-1200/1500增量式PID(输出归一化、支持PWM输出)_西门子1200pid算法公式-优快云博客文章浏览阅读1k次。本文介绍了S7-1200/1500 PLC中增量式PID算法的应用,包括输出归一化和PWM输出。通过详细解析,阐述了PID输出如何限制在0.0-1.0之间,并且如何将PID输出与PWM占空比关联,适用于温度等控制场景。

RXXW_Dor的博客 1422

ArcGIS JS 态势标绘教程:直箭头(Straight Arrow)

ArcGIS JS 态势标绘教程:直箭头(Straight Arrow)。

非科班Java出身GISer的博客 701

MySQL数据库主从复制(小白的“升级打怪”成长之路)

目录概述基础环境设置网络对时防火墙与SELinux配置主从复制主服务配置从服务器配置主从复制常见问题实战案例 1、master开启二进制日志记录2、slave开启IO进程,从master中读取二进制日志并写入slave的中继日志3、slave开启SQL进程,从中继日志中读取二进制日志并进行重放4、最终,达到slave与master中数据一致的状态,我们称作为主从复制的过程。主与从主机都需要操作 [root@localhost ~]# cat /etc/chrony.conf | grep -Ev '

deeper_wind的博客 1023

20、七鳃鳗繁殖与早期生活史:从水质到养殖的全面解析

本文全面解析了七鳃鳗的繁殖与早期生活史,重点探讨了水质对幼体生存的影响、养殖密度与生长关系、变态过程的时间与大小特征,以及人工繁殖在濒危物种恢复和入侵物种控制中的应用。同时,文章分析了大规模养殖面临的挖掘基质需求、空间限制、清洁管理、疾病防控及微生物环境等挑战,并强调实验室养殖对科学研究和种群管理的重要意义。随着技术进步,未来有望扩展更多物种的繁殖研究,揭示七鳃鳗生物学的进化奥秘,实现资源的可持续利用。

l6m7n8的博客 115

高级运维工程师打怪升级之路

人生就像一场游戏,这场游戏给我们带来了的许多困难,但是我们为了梦想,为了家人,为了自己不断奋斗着,努力工作。 今天就让我带着大家一起回顾高级运维工程师打怪升级之路。 运维工程师在刚入行阶段是一很苦逼的,可能干着修电脑、掐网线、搬机器的活,显得没地位!时间也很碎片化,各种零碎的琐事围绕着你,也很难体现个人价值,渐渐的对行业很迷茫,觉得没什么发展前途。 这些枯燥无味工作的确会使人匮乏!技术是枯燥无味的...

李振良的技术博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

重镑更新!Linux 运维工程师打怪升级进阶成神之路 4.0

戳下方名片,关注并星标!回复“1024”获取2TB学习资源!大家好,我是民工哥。经过近三年的打磨与总结,今天《 Linux 运维工程师打怪升级进阶成神之路》V4.0版本发布了。V 4.0版本是在前面几个版本的基础上更加精细化了运维岗位所需的技能知识点,更详细、更全面,几乎囊括了 Linux系统运维岗所需的所有技能体系(如:TCP/IP 网络协议栈、Linux 常用命令、企业常用服务与应用软件...

民工哥的博客 1390

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

运维工程师的打怪升级之路

人生就像一场游戏,这场游戏给我们带来了的许多困难,但是我们为了梦想,为了家人,为了自己不断奋斗着,努力工作。 今天就让我带着大家一起回顾高级运维工程师打怪升级之路。 运维工程师在刚入行阶段是一很苦逼的,可能干着修电脑、掐网线、搬机器的活,显得没地位!时间也很碎片化,各种零碎的琐事围绕着你,也很难体现个人价值,渐渐的对行业很迷茫,觉得没什么发展前途。 这些枯燥无味工作的确会使人匮乏!技术是枯燥...

yaodunlin的博客 6016

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MySQL-Ansible-Redis打怪升级之路二

1.MyCAT中间件服务实现读写分离 思路:1.安装部署MyCat(java\mycat) 2.配置主从,开启general_log 3.修改mycat的server.xml连接信息 4.修改mycat的schema.xml实现读写分离 5.测试写连接,测试读连接 1.mycat服务器 [root@node25 conf]# yum -y install java mariadb [root@node25 ~]# java -version openjdk version "1.8.0_302

Pespi_Co1a的博客 323

Rocky9部署Zabbix7(小白的“升级打怪”成长之路)

rw-r--r--. 1 root root 9756 6月 27 15:08 zabbix-icons.woff2。-rw-r--r--. 1 root root 11716 6月 27 15:08 zabbix-icons.woff。-rw-r--r--. 1 root root 149851 6月 27 15:08 zabbix-icons.svg。-rw-r--r--. 1 root root 22072 6月 27 15:08 zabbix-icons.ttf。

deeper_wind的博客 1175

Java打怪升级成长学习路线图,大佬是这样炼成的!一定要收藏

如果你想要学习Java的话,我给你分享一些Java的学习资料,你不用浪费时间到处搜了,从Java入门到精通的资料我都给你整理好了,这些资料都是我做Java这几年整理的Java最新学习路线,Java笔试题,Java面试题,Java零基础到精通视频课程,Java开发工具,Java练手项目,Java电子书,Java学习笔记,PDF文档教程,Java程序员面经,Java求职简历模板等,这些资料对你接下来学习Java一定会带来非常大的帮助,每个Java初学者都必备,请你进我的**Java技术qq交流群。

2401_87252899的博客 1334

程序员升级打怪之路

程序员升级打怪之路新手阶段中级阶段高级阶段 写这篇文章的目的是为了让自己在迷茫的时候 看看,自己有哪些不足之处。最重要的是在目前这个时间2020年11月3日 我还是处在中级阶段。 新手阶段 那么 入门的新手 要达到一个什么水平才能找到工作养活自己呢? 首先 JAVA基础语法 集合类 线程 IO操作, 这些掌握了 基础算是过关了, IO操作有点麻烦 被搞晕没关系 知道什么时候用 用到了 再去搜索就行 其次 web部分 servlet jsp session cookie mysql数据库 都要知道怎么操作怎么

qq_14919937的博客 510

从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点。 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化。如:今年大数据,人工智能比较火……(相对表示就是 Python 比较火) 之前写过运维基础篇,发现对很多人收益挺大,接下来也写下关于这 4 年多的运维实践经验,从事了...

aa021064的博客 2491

终于卷完了!MySQL 打怪升级进阶成神之路(2023 最新版)!

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

民工哥的博客 545

打怪升级之小白的大数据之旅(三十二)<第一个数据库--Mysql>

打怪升级之小白的大数据之旅(三十二) 新的开始—Mysql 上次回顾 大家好,经过Java的洗礼,相信大家已经对编程这件事很熟悉了,有了JavaSE的底子,可以让我们更好地为大数据的学习打好基础。接下来是新的旅程–Mysql,当你们从我的第一期跟到现在时,恭喜你,成功步入了程序猿的行业。 学会了怎么编写程序,接下来就要介绍数据怎么存储,还记得Java最终章的Stream么,它是通过创建集合对象的方式来对数据进行处理,但不管是Stream还是集合本身;它们的数据都是存储在内存中,大数据的数据肯定不会存储在这

不断努力的数据汪 296

MySQL打怪升级之路一

1.MySQL常见的存储引擎及特点 Innodb:现主流的mysql存储引擎。 1.支持事务特性 2.使用B+树索引的数据结构 3.具有外键特性 4.支持事务,默认事务隔离级别为第三等级的可重复读,但事务无法隔离DDL语句 5.支持热备、温备、冷备 MyISAM:mysql5.50版本前的默认存储引擎 1.适用于数据量少,读写快的场景 2.不具有外键 3.支持...

Pespi_Co1a的博客 523

数据工作者打怪升级成长学习路线,一定要收藏!

大家好!今天的内容很硬核!优质公众号「数据STUDIO」号主云朵君给大家整理了这篇数据分析师/数据挖掘工程师等数据工作者必备技能学习路线,并免费分享给大家他私藏已久的各种资料,包括电子书...

weixin_43373042的博客 798

【MySQL打怪升级之路】01基础理论&DDL

数据定义语言DDL对数据库、表、视图增删查改这个要背↑这个要背↑这个要背↑这个要背↑这个要背↑。

dd112474的博客 221
上一篇: MySQL数据库主从复制(小白的“升级打怪”成长之路)
下一篇: MySQL Galera Cluster部署(小白的“升级打怪”成长之路)
deeper_wind
博客等级 码龄2年 262粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值