基于MYSQL5.7的GTID复制、MYSQL的读写分离
案例1、二进制安装MYSQL5.7
案例2、基于MYSQL5.7的GTID(两台主机)
1、 主服务器上
(1)vim /etc/my.cnf
[mysqld]
server-id=17
log-bin
gtid_mode=ON
enforce_gtid_consistency
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
(2)service mysqld restart
(3)mysql> grant replication slave on *.* to repluser@'192.168.37.%' identified by 'centos';
2、从服务器上
(1)vim /etc/my.cnf
[mysqld]
server-id=27
gtid_mode=ON
enforce_gtid_consistency
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
(2)service mysqld restart
(3)mysql>CHANGE MASTER TO MASTER_HOST='主服务器',
MASTER_USER='repluser',
MASTER_PASSWORD='centos',
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;
(4)mysql>start slave;
案例3、MYSQL读写分离(三台主机)
读写分离服务器:192.168.43.101 主服务器:192.168.43.102 从服务器:192.168.43.103
(1)首先实现主从服务器之间的主从复制,从服务器必须加read-only 选项
(2)配置yum安装路径,安装PROXYSQL数据库,检验数据库连接是否正常
(3)向ProxySQL中添加MySQL节点,并加载和保存到磁盘中,以下操作不需要use main也可成功
(4)添加监控后端节点的用户。ProxySQL通过每个节点的read_only值来自动调整它们是属于读组还是写组
在master上执行
ProxySQL上配置监控
1、监控模块的指标保存在monitor库的log表中
2、查看监控连接是否正常的 (对connect指标的监控):(如果connect_error的结果为NULL则表示正常)
3、查看监控心跳信息 (对ping指标的监控):
MySQL> select * from mysql_server_ping_log;
4、查看read_only和replication_lag的监控日志
MySQL> select * from mysql_server_read_only_log;
MySQL> select * from mysql_server_replication_lag_log;
(5)设置分组信息需要修改的是main库中的mysql_replication_hostgroups表,该表有3个字段:writer_hostgroup,reader_hostgroup,comment, 指定写组的id为10,读组的id为20
(6)配置发送SQL语句的用户
在master节点上创建访问用户
在ProxySQL配置,将用户sqluser添加到mysql_users表中, default_hostgroup默认组设置为写组10,当读写分离的路由规则不符合时,会访问默认组的数据库
使用sqluser用户测试是否能路由到默认的10写组实现读、写数据
mysql -usqluser -pmagedu -P6033 -h127.0.0.1 -e 'select @@server_id'
mysql -usqluser -pmagedu -P6033 -h127.0.0.1 -e 'create database testdb'
mysql -usqluser -pmagedu testdb -P6033 -h127.0.0.1 -e 'create table t(id int)'
(7)在proxysql上配置路由规则,实现读写分离
作者:醉斜阳_3ee6
链接:https://www.jianshu.com/p/7ea7262036a1
来源:简书