Linux数据库管理——day7——读写分离

读写分离

    原理: 两个服务器,进行主从同步,然后客户端访问调度服务器,写操作交给主库处理,读操作交给从库操作
    构建思路: 搭建好MySQL主从配置,添加一个MySQL代理服务器,客户端通过代理主句访问MySQL数据库    配置:三个服务器
     主从同步数据库(配置如上)
     调度服务器:
        1. 装包  maxscale 
        2. 配置
        我们开启读写分离,一般是注释掉所有的只读配置,只做读写操作的配置,因为软件会自动根据后台服务器的主从关系,确定读写分离给哪个服务器 (修改配置文件/etc/maxscale.cnf)

[maxscale]            # 定义线程个数
threads=auto

[server1]            # 定义一个数据库服务器(按照需求,创建多个)
type=server
address=后台数据库的IP    # 后台数据库服务器的IP地址
port=3306            # 定义端口一般是(3306)
protocol=MySQLBackend


[MySQL Monitor]        # 定义监控服务(检查主从多个服务器的服务情况,以及主从架构是否正常运行)
type=monitor
module=mysqlmon
servers=server1, server2    # 添加监控的服务器
user=监控用户            # 监控时候用于连接后端数据库的用户
passwd=密码            # 用户登陆时候的密码
monitor_interval=10000


[Read-Only Service]    # 定义只读数据库服务器
type=service
router=readconnroute
servers=server3, server4    # 添加只读的数据库服务器 
user=连接用户            # 添加用于验证客户端输入用户能否登陆的连接用户名
passwd=密码
router_options=slave


[Read-Write Service]    # 定义读写数据库服务器
type=service
router=readwritesplit
servers=server1, server2    # 添加读写的数据库服务器 
user=连接用户            # 添加用于验证客户端输入用户能否登陆的连接用户名
passwd=密码
max_slave_connections=100%

[MaxAdmin Service]
type=service
router=cli

[Read-Only Listener]
type=listener
service=Read-Only Service
protocol=MySQLClient
port=4008            # 只读服务器的端口号

[Read-Write Listener]
type=listener
service=Read-Write Service
protocol=MySQLClient
port=4006            # 读写服务器的端口号

[MaxAdmin Listener]    # 定义管理服务
type=listener
service=MaxAdmin Service
protocol=maxscaled
socket=default
port=自定义一个端口        # 管理服务器的端口号

        3. 授权

grant replication slave, replication client on *.* to 监控用户@'%' identified by '密码';
grant select on mysql.* to 连接用户@'%' identified by '密码';
grant all on db2.t1 to 客户端访问用户@'%' identified by '密码';

        4. 启服务(不用systemctl启动,软件命令)

maxscale -f /etc/maxscale.cnf
# 停止服务,只能杀死进程
pkill -9 maxscale

        5. 测试

# 测试调度服务器的管理服务(查看能否显示出主从服务器的状态,账号密码是默认的)
[root@maxamin ~]# maxadmin -uadmin -pmariadb -P管理服务的端口号
MaxScale> list servers
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status              
-------------------+-----------------+-------+-------------+--------------------
server1            | 172.100.10.1    |  3306 |           1 | Slave, Running
server2            | 172.100.10.2    |  3306 |           2 | Master, Running
-------------------+-----------------+-------+-------------+--------------------
# 测试读写分离是否成功
[root@client ~]# mysql -h调度服务器IP  -u 访问用户 -p密码  -P读写服务器端口(如果配置没有修改默认4006)
# 检查读(如果显示从库主机命,那说明读操作没有问题,读的是从库)
mysql> select @@hostname;
# 检查写(添加一个数据,如果读没有问题,添加后,前往主库和从库,都能查看到数据,就说明 读写分离成功)
mysql> insert into 库.表 vlaues(数据)

MySQL多实例

    多实例: 让一台物理机可以运行多个数据库服务
    多实例的作用: 节约成本 、 提高硬件利用率
    配置:
      1. 装包 安装一个支持多实例的mysql软件版本
      2. 修改主配置文件(完整修改/etc/my.cnf)

[mysqld_multi]
mysqld = /软件包存储的位置/mysql_safe
mysqladmin = /软件包存储的位置/mysqladmin
user = root

[mysqld编号]            # 创建一个mysql实例
port = 3307
datadir = /用于存储mysql的目录(需要自己创建)
socket = /用于存储mysql的目录/mysql.sorck(自定义存储socket文件名)
pid-file = /用于存储mysql的目录/mysql.pid(自定义存储pid号的文件)
log-error = /用于存储mysql的目录/mysqld.err(自定义存储日志错误信息的文件)

     3. 初始化 、 启动服务
        3.1 创建存储各个实例的目录
        3.2 创建mysql用户
        3.3 启动

/软件安装/mysqld_multi start  启动数据库编号

     4. 检查服务状态

netstat -utnlp  | grep mysqld

     执行:

/软件安装位置/mysql  -uroot -p密码  -S sorck文件位置

     注意:

        1. 启动服务前要确认创建量用户mysql
        2. 主库挂了就全部挂了,从库挂了就还可以使用,只不过读写都是给主库了

猜你喜欢

转载自blog.csdn.net/Yu1543376365/article/details/83316868