参考视频教程:    **中高级开发晋升利器 MySQL面试指南  ** 案例1、二进制安装MYSQL5.7






<br />

案例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;

<br />

案例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上配置监控

<br />

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;

<br />

(5)设置分组信息需要修改的是main库中的mysql_replication_hostgroups表,该表有3个字段:writer_hostgroup,reader_hostgroup,comment, 指定写组的id为10,读组的id为20

<br />

(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)'

<br />

(7)在proxysql上配置路由规则,实现读写分离