— mysql主从复制与读写分离
通过配置mysql的主从复制,并基于mysql中间件Mycat实现数据库的读写分离
主从复制
1.准备工作
创建一个虚拟机后,克隆虚拟机。
并将克隆出来主机的1.MAC地址 2,hostname 3.IP地址 4.UUID 5.Mysql中的server-uuid 修改
得到:
名称 | 虚拟机名称 | ip | 内存(G) | 处理器 |
---|---|---|---|---|
Master | ubuntu master | 192.168.10.128 | 8.6 | 4 |
Slave | ubuntu slave1 | 192.168.10.130 | 2 | 2 |
Mycat中间件 | ubuntu Mycat | 192.168.10.131 | 5.3G | 4 |
其他参数:
虚拟机Ubuntu 20.04
Mysql版本:8.0.32
2.【MASTER】
在Master 虚拟机名称:ubuntu master ip :192.168.10.128中 :
修改MASTER配置文件 mysqld.cnf sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
#加入配置
#保存后重启MySQLsudo service mysql restart
3.【SLAVE】
在另一台虚拟机中 Slave 虚拟机名称:ubuntu slave1 ip:192.168.10.130中:
修改SLAVE配置文件 mysqld.cnf sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
#加入配置
#保存后重启MySQLsudo service mysql restart
4.[MASTER]创建账户并授权
CREATE USER 'slave1'@'%' IDENTIFIED BY 'shxshx111';
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'%';
ALTER USER 'slave1'@'%' IDENTIFIED WITH mysql_native_password BY 'shxshx111';
flush privileges;
随后查看MASTER状态。并记录下File和Position的值,这个可能会变化。
show master status;
5.[SLAVE]配置需要的复制主机
CHANGE MASTER TO MASTER_HOST ='192.168.10.132',MASTER_USER='slave1',MASTER_PASSWORD='shxshx111',MASTER_LOG_FILE='binlog.001153',MASTER_LOG_POS=157;
//启动从机SLAVE
start slave;
//查看SLAVE状态
show slave status\G;
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
表示同步成功。
测试:
与你设置的binlog-do-db要一致才能实现同步
create database login_master_slave;
create table test(id int,name varchar(1024));
insert into test(id,name) values(1,'Tom');
6.配置过程中出现的BUG:
1、mycat_partition size : 3 > table datanode size : 2
在autopartition-long.txt发现了问题autopartition-long.txt的文件如下三行注释掉
2、耗时一天的bug 为什么会出现 java.sql.SQLException: null, message from server: “Host xxx’ is not allowed to connect to this MySQL server异常
原因:
每台服务器都要设置 root 的权限为 % 原先是 localhost;
查看权限,在mysql登录的状态下: select user,host,plugin from mysql.user; 查看
更改权限 update user set host=’%’ where user=’root’;
刷新权限 flush privileges;
Mycat读写分离
1.修改mycat的 schema.xml
2.修改mycat的 server.xml
3.启动mycat
mycat start
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 351134995@qq.com