首先mysql的主从配置非常简单,不要怕错,勇敢尝试。
一、准备环境
搭建虚拟机环境,我在这里搭建了两个虚拟机centos7.6和centos7.6s,如何搭建虚拟机看这里:(3条消息) Oracle VM VirtualBox虚拟机运行LockyLinux_lockylinuc_CV猿码人的博客-CSDN博客
下载mysql,我这里用的是mysql8,下面是下载安装指令
yum install -y wget #如果没有wget需要下载
wget http://repo.mysql.com/mysql80-community-release-el7.rpm
yum -y install mysql80-community-release-el7.rpm
yum -y install mysql-community-server
systemctl start mysqld #看看mysql能不能启动
grep "password" /var/log/mysqld.log # 8以后需要获取临时密码登录
grep "password" /var/log/mysql/error.log // 也有可能出现在这个目录,实例化后密码会出现在这
二、添加配置文件
主数据库配置
vi /etc/my.cnf
server-id=10 #服务器id (主从必须不一样)
log-bin=/var/lib/mysql/master10-bin #打开日志(主机需要打开)
expire_logs_days=30
binlog-ignore-db=mysql #不给从机同步的库(多个写多行)
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
从数据库配置
vi /etc/my.cnf
server-id=11
relay-log=relay-bin
read-only=1
replicate-ignore-db=mysql # 不复制的库
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
添加完配置文件,记得重启数据库
systemctl restart mysqld
三、添加mysql从账号
# 修改账号
update user set host = '%' where user = 'root';
# 刷新权限
flush privileges;
# 添加从数据库
create user 'slave'@'%' identified by '密码';
# 配权限
GRANT ALL REPLICATION SLAVE ON *.* TO 'slave'@'%';
# 查看添加的账户
select user,host from mysql.user;
看到从主机这样就配置好了
四、配置主从节点信息
先把表锁了,要不然 Position会一直变。
flush table with read lock;
获取主数据库节点信息
show master status \G
注意别这两行信息非常关键
切换到从数据库,登录后(不需要登录slave,就默认用户就行),以防万一先把从节点暂停
mysql> stop slave
配置从节点信息
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.0.121', #主数据库地址
MASTER_USER='slave', #配置的从账户
MASTER_PASSWORD='密码', #从账户密码
MASTER_LOG_FILE='master10-bin.000005', #刚才的日志名
MASTER_LOG_POS=157; #刚才的position
运行从节点
mysql> start slave
查看从节点信息
mysql> show slave status \G
Slave_IO_Running: Connecting 必须为Yes才对,现在出现了连接问题
Slave_SQL_Running: Yes
通过下面的连接记录可以看到无法访问主数据库ip3306
将防火墙关闭
systemctl stop firewalld.service
systemctl disable firewalld.service
还有些主从无法建立连接,最直接的办法就是重启主从数据库,重新配置一遍。
最后把表解锁掉,测试是否成功 。
unlock tables;
CREATE DATABASE qq; #测试是否能同步
主
从
ok 数据库主从配置完了,在主库中添加数据库或表信息,从库都会自动同步。