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中修改