MySQL主从配置与Mycat读写分离
一、主数据库配置
-
编辑配置文件
添加如下内容
server-id=1 binlog-do-db=master_db1 #备份的数据库 log-bin=mysql-bin binlog-ignore-db=mysql
-
重启mysql
-
创建一个允许从服务器来访问的用户(主服务器):
grant replication slave on *.* to 'root'@'%' identified by '123456'; GRANT FILE ON *.* TO 'root'@'%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;
grant replication slave on . to ‘root’@’%’ identified by ‘123456’;
说明:
-
root:Slave使用的账号
-
IDENTIFIED BY 123456:Slave使用的密码
-
%:Slave数据库IP
-
-
查看配置的信息
show master status \G;
如图:
记住 File和Position的值,后面会用到
二、从数据库配置
- 编辑配置文件my.cnf,在[mysqld]下面添加这段内容
log-bin=mysql-bin
server-id=2
# 忽略日志的db
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
# 需要备份的db
replicate-do-db=master_db1
# 忽略备份的db
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60
- 关联Master信息
stop slave;
CHANGE MASTER TO MASTER_HOST='192.168.1.20',MASTER_USER='root',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_CONNECT_RETRY=60,MASTER_LOG_POS=154;
start slave;
这里的MASTER_LOG_POS=154的154就是配置主服务器的时候说要记住的那个,
MASTER_LOG_FILE的值就是之前的Position的值
- 查看状态
show slave status \G;
只有Slave_IO_Running与Slave_SQL_Running都为Yes才配置成功。
三、主从复制测试
- 在从服务器中创建数据库master_db1
- 在主MySQL服务器创建test表,测试结果是从MySQL的服务器会自动复制主MySQL服务器的test表。
- 添加500w条数据进行测试,可以使用jdbc插入,也可以使用dataFactory。(可以先手动插入一条数据查看效果)
四、启用Mycat读写分离
主机名 | IP和端口 | 操作 | 引擎 | |
---|---|---|---|---|
主MySQL服务器 | master | 192.168.1.20:3306 | 写 | InnoDB |
从MySQL服务器 | node-1 | 192.168.1.21:3306 | 读 | MyISAM |
-
修改从数据库的表
将表的引擎改为
MyISAM
-
配置mycat读写分离
编辑schema.xml文件<