MYSQL主从配置
系统centos7 MySQL5.5.57
主机A 主机B分别安装mysql
主机A为master
主机B为slave
关闭防火墙和selinux
# systemctl stop firewalld
# setenforce 0 (临时关闭。永久关闭修改配置文件)
这里使用rpm包安装(以下操作在两台机器都要操作)
tar -xvf MySQL-5.5.57-1.el7.x86_64.rpm-bundle.tar rpm -e mariadb-libs-5.5.41-2.el7_0.x86_64 --nodeps rpm -ivh MySQL-*rpm cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
systemctl start mysql
登陆主机A创建一个专门的用户wsl并设置权限
#mysql mysql> CREATE USER 'wsl'@'%'IDENTIFIED BY '123456';
wsl是新建的用户,可自定义;123456密码是用户wsl的密码,可自定义
mysql> GRANT ALL PRIVILEGES ON *.* TO 'wsl'@'%';
mysql> GRANT ALL PRIVILEGES on *.* to wsl@'localhost' IDENTIFIED BY '123456';
mysql> FLUSH PRIVILEGES;
mysql> select host,user from mysql.user;
有下面红框说明是ok的
修改主机A数据库配置文件
[mysqld]
log-bin=mysql-bin
server-id=2
修改主机B数据库配置文件
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=3 #该值一定要大于主机A,也就是master
查看master状态
登陆主机A的mysql
配置主机B(slave)
mysql> change master to master_host='192.168.146.154',master_user='wsl',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=318;
#参数配置
master_host:主节点mysql的IP地址
master_user:主节点mysql登陆用户的用户名
master_password:主节点mysql登陆用户的密码
master_log_file:主节点mysql的日志文件指定
master_log_pos:主节点mysql的Ppsition的ID
启动主从服务
登陆主机B数据库
mysql> start slave;
mysql> show slave status \G; ##红框的值必须是Yes
主从测试
登陆主机A数据库建立数据库wsl
mysql mysql> create database wsl;
mysql> use wsl;
mysql> create table slave_test(id int(6),name varchar(10));
mysql> insert into slave_test values(000001,'wangsl');
mysql> FLUSH PRIVILEGES; mysql> show tables;
登陆主机B数据库查看
#mysql
mysql> use wsl;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4YRwV4Yj-1614929127553)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-05abSz5a-1614929127556)
备注:
中间出现主机B 也就是查看slave状态时,出现
Slave_IO_Running: Connecting (应该是Yes)
导致slave连接master失败,数据无法同步
关闭了firewalld还是不行,
后来才发现master用户wsl授权有问题重新授权
grant ALL PRIVILEGES on *.* to wsl@'%' identified by '123456';
然后主机B(slave)重启slave
mysql> stop slave;
mysql> start slave;