mysql主从复制,读写分离(基于mycat)

环境:CentOS7.9,mysql-5.7,mycat-1.6

主库上设置

1.设置server-id值并开启binlog参数

[mysqld]

log_bin = mysql-bin

server_id = 1

2.建立同步账号

mysql> grant replication slave on *.* to 'rep'@'192.168.111.%' identified by '123456';

mysql> show grants for 'rep'@'192.168.111.%';

 

 3.锁表设置只读

为后面备份准备,注意生产环境要提前申请停机时间;

mysql> flush tables with read lock;

测试锁表后是否还能创建数据库

 

 提示:如果超过设置时间不操作会自动解锁。

mysql> show variables like '%timeout%';

4.查看主库状态

查看主库状态,即当前日志文件名和二进制日志偏移量

mysql> show master status;

 

 5.备份数据库数据

mysqldump -uroot -p -A -B |gzip > /server/backup/mysql_bak.$(date +%F).sql.gz

6.解锁

mysql> unlock tables;

7.主库备份数据上传到从库

scp /server/backup/mysql_bak.2015-11-18.sql.gz 192.168.111.16:/server/backup/

从库上设置

1.设置server-id值并关闭binlog参数

#log_bin = /data/mysql/data/mysql-bin

server_id = 2

2.还原从主库备份的数据

gunzip < filename | mysql -uusername -ppassword databasename

3.设定从主库同步

mysql> change master to

MASTER_HOST='192.168.111.15',

MASTER_PORT=3306,

MASTER_USER='rep',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000008',

MASTER_LOG_POS=194;

4.启动从库同步开关

mysql > start slave;

mysql > show slave status \G

 

 测试

主库创建数据库prac

 

 从库查看数据库

 读写分离(mycat)

MyCAT用Java开发,需要有JAVA运行环境,mycat依赖jdk1.7的环境

安装mycat

tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

修改配置文件

 

user需要在对应的mysql数据服务器中创建,生产环境一般不使用root作为user,测试环境为了简便直接grant all on *.* to 'root'@'192.168.111.%' identified by 'root123';

客户端链接测试 

mysql -uroot  -p123456 -h192.168.111.18 -P8066 -DTESTDB

 

 插入数据

 

 使用只读用户登录

尝试插入数据

 

 插入失败,提示只读

用户权限在server.conf中修改

 

posted @ 2023-03-31 16:57  Nekopunch  阅读(42)  评论(0编辑  收藏  举报