搭建一主一从
之前记得修改MySQL的UUID,我忘记了,主从复制的时候报错,具体问题看后面
一、搭建读写分离
我们通过Mycat.和MySQL 的主从复制配合搭建数据库的读写分离,实现MySQL 的高可用性。
我们将搭建:一主一从、双主双从两种读写分离模式。
一个主机用于处理所有写请求,一台从机负责所有读请求,架构图如下
binlog 日志三种格式
主机配置
修改配置文件:vim /etc/my.cnf
#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
#设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schemae
#设置需要复制的数据库。先配置完环境再去创建数据库
binlog-do-db=需要复制的主数据库名字
#设置logbin格式
binlog_format=STATEMENT
从机配置
修改配置文件:vim /etc/my.cnf
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay
因修改过配置文件,请主机+从机都重启后台mysql服务
主机从机都关闭防火墙
#重启mysql服务器
systemctl restart mysqld
#查看mysql的状态
systemctl status mysqld
#关闭防火墙
service firewalld stop
或者systemctl stop firewalld
#开启防火墙
service firewalld start
或者systemctl start firewalld
#查看防火墙的状态
systemctl status firewalld
在Master数据库创建数据同步用户,授予用户权限
#在主机MySQL里执行授权命令
CREATE USER 'slave1'@'%’ IDENTIFIED BY '123123’;
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'%';
#此语句必须执行。否则见下面。
ALTER USER 'slave1'@'%’ IDENTIFIED WITH mysql native password BY ’123123';
flush privileges;
#查询master的状态
show master status;
不要在master再改动position!!!!
mysql> show master status;
±-----------------±---------±-------------±--------------------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±-----------------±---------±-------------±--------------------------±------------------+
| mysql-bin.000001 | 686 | mycat1 | mysql,information_schemae | |
±-----------------±---------±-------------±--------------------------±------------------+
1 row in set (0.00 sec)
在从机上配置需要复制的主机
#复制主机的命令 具体数字与具体值和查询master的状态有关
CHANGE MASTER TO MASTER_HOST='主机的IP地址',
MASTER_USER='slave' ,
MASTER_PASSWORD='123123' ,
MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS='具体值';
#填写上图中的file、position字段
#启动从服务器复制功能
start slave;
#查看从服务器状态
show slave status\G;
两个参数都是Yes,则说明主从配置成功!
change master to master_host=‘10.21.71.203’, master_user=‘slave1’, master_password=‘123456’, master_port=3306, master_log_file=‘mysql-bin.000001’, master_log_pos=686, master_connect_retry=30;
#启动从服务器复制功能
start slave;
#查看从服务器状态
show slave status\G;
报错
ERROR:
No query specified
修改
\G后不用加分号,否则就会出现此类错误。
show slave status\G
报错
Slave_IO_Running: No
修改
https://blog.csdn.net/qq_54217349/article/details/126501053
⑨测试
1.主机创建配置的复制的库(create database mystudent)
2.创建表(ctreate table student…)
3.插入数据(insert into student values(…)…)
4.从机中查看库和表能有主机创建的数据。
⑩停止从机,重启主机
从机:stop slave;
主机:reset master;