MySQL数据库(七)数据读写分离,MySQL多实例


一、数据读写分离

    主机名       角色                       数据库         IP地址
    mysql57    代理服务器                 无       192.168.4.57/24
    mysql51    数据库服务器(主)   有       192.168.4.57/24
    mysql52    数据库服务器(从)   有       192.168.4.57/24

1.安装软件maxscale
[root@mysql57 ~]# systemctl stop mysqld
[root@mysql57 ~]# systemctl disable mysqld
    [root@mysql57 ~]# systemctl stop firewalld
    [root@mysql57 ~]# systemctl disable firewalld
[root@mysql57 ~]# rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm 

2.修改配置文件
[root@mysql57 ~]# cp /etc/maxscale.cnf /etc/maxscale.cnf.bak
[root@mysql57 ~]# vim /etc/maxscale.cnf
  9 [maxscale]
 10 threads=auto

 18 [server1]
 19 type=server
 20 address=192.168.4.51
 21 port=3306
 22 protocol=MySQLBackend
 23 
 24 [server2]
 25 type=server
 26 address=192.168.4.52
 27 port=3306
 28 protocol=MySQLBackend

 35 [MySQL Monitor]
 36 type=monitor
 37 module=mysqlmon
 38 servers=server1,server2
 39 user=mon
 40 passwd=123qqq...A
 41 monitor_interval=10000

 52 #[Read-Only Service]
 53 #type=service
 54 #router=readconnroute
 55 #servers=server1
 56 #user=myuser
 57 #passwd=mypwd
 58 #router_options=slave

 63 [Read-Write Service]
 64 type=service
 65 router=readwritesplit
 66 servers=server1,server2
 67 user=mon2
 68 passwd=123qqq...A
 69 max_slave_connections=100%

 75 [MaxAdmin Service]
 76 type=service
 77 router=cli

 85 #[Read-Only Listener]
 86 #type=listener
 87 #service=Read-Only Service
 88 #protocol=MySQLClient
 89 #port=4008

 91 [Read-Write Listener]
 92 type=listener
 93 service=Read-Write Service
 94 protocol=MySQLClient
 95 port=4006
 96 
 97 [MaxAdmin Listener]
 98 type=listener
 99 service=MaxAdmin Service
100 protocol=maxscaled
101 socket=default
102 port=4016

3.配置数据库服务
    授权监控用户和路由用户
[root@mysql51 ~]# mysql -uroot -ptarena
mysql> grant replication slave,replication client on *.* to mon@"%" identified by "123qqq...A";
mysql>  grant select on mysql.* to mon2@"%" identified by "123qqq...A";
[root@mysql52 ~]# mysql -uroot -ptarena
mysql> select host,user from mysql.user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | mon           |
| %         | mon2          |
| %         | yaya99        |
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+

4.启动代理服务
[root@mysql57 ~]# maxscale -f /etc/maxscale.cnf -U maxscale
[root@mysql57 ~]# ls /var/log/maxscale
maxscale.log

5.查看服务状态
[root@mysql57 ~]# ps -C maxscale
   PID TTY          TIME CMD
  9683 ?        00:00:00 maxscale
[root@mysql57 ~]# netstat -utlnp|grep maxscale
tcp6       0      0 :::4006                 :::*                    LISTEN      9683/maxscale       
tcp6       0      0 :::4016                 :::*                    LISTEN      9683/maxscale   

6.客户端测试配置
[root@mysql57 ~]# maxadmin -uadmin -pmariadb -P4016
MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status              
-------------------+-----------------+-------+-------------+--------------------
server1            | 192.168.4.51    |  3306 |           0 | Master, Running
server2            | 192.168.4.52    |  3306 |           0 | Slave, Running
-------------------+-----------------+-------+-------------+--------------------

二、MySQL多实例
    多实例,在一台物理机上运行多个数据库服务
1.配置多实例
    数据库目录
    服务使用的端口号
    错误日志文件
    进程pid号文件
    sock文件
[root@mysql58 ~]# yum -y install libaio
[root@mysql58 ~]# useradd -s /sbin/nologin mysql
[root@mysql58 ~]# tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz 
[root@mysql58 ~]# mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/mysql
[root@mysql58 ~]# echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/bashrc 
[root@mysql58 ~]# vim /etc/my.cnf
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = root

[mysqld1]
datadir=/dir1
port=3307
log-error=/dir1/mysqld1.err
pid-file=/dir1/mysqld1.pid
socket=/dir1/mysqld1.sock

[mysqld2]
datadir=/dir2
port=3308
log-error=/dir2/mysqld2.err
pid-file=/dir2/mysqld2.pid
socket=/dir2/mysqld2.sock

[root@mysql58 ~]# mkdir /dir1 /dir2

2.管理多实例
启动服务
    mysqld_multi start 实例编号
[root@mysql58 ~]# mysqld_multi start 1
......
2020-07-10T05:33:31.430242Z 1 [Note] A temporary password is generated for root@localhost: c-MQlA9lj2j4
    第一次启动服务强制修改密码
    [root@mysql58 ~]# mysql -uroot -p'c-MQlA9lj2j4' -S /dir1/mysqld1.sock
    mysql> alter user root@"localhost" identified by "123456";
    
查看服务
[root@mysql58 ~]# netstat -ntlup|grep :3307
tcp6       0      0 :::3307                 :::*                    LISTEN      27813/mysqld   
连接服务
    mysql -uroot -p'123456' -S sock文件
[root@mysql58 ~]# mysql -uroot -p'123456' -S /dir1/mysqld1.sock

停止服务
    mysqld_multi --user=root --password=密码 stop 实例编号
[root@mysql58 ~]# mysqld_multi --user=root --password=123456 stop 1

3.使用多实例
    在主机mysql58上运行编号为3的多实例服务
    启用实例3的binlog日志
    允许mysql50主机使用admin用户连接密码tarena对gamedb库有完全权限
    在mysql50主机连接58主机的实例3
[root@mysql58 ~]# vim /etc/my.cnf
[mysqld3]
datadir=/dir3
port=3309
log_bin=binlog3
server_id=3
log-error=/dir3/mysqld3.err
pid-file=/dir3/mysqld3.pid
socket=/dir3/mysqld3.sock
[root@mysql58 ~]# mysql -uroot -p'123456' -S /dir3/mysqld3.sock
mysql> grant all on gamedb.* to admin@"192.168.4.50" identified by "tarena";
[root@mysql50 ~]# mysql -h192.168.4.58 -P3309 -uadmin -ptarena

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值