三台服务器
192.168.56.70 主
192.168.56.71 从
192.168.56.72 从
关闭防火墙
停止:systemctl stop firewalld
禁用:systemctl disable firewalld
配置免密
主从节点都安装启动
wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
yum localinstall mysql80-community-release-el7-5.noarch.rpm
yum clean all
yum makecache
yum install -y mysql-community-server
systemctl start mysqld
systemctl status mysqld
systemctl enable mysqld
yum list |grep mysql-community
修改MySQL密码
#查看root初始化密码
grep "password" /var/log/mysqld.log
mysql -uroot -p'取到的初始化密码'
#分别登录三台mysql
mysql -uroot -p'/=2KlUfHs>.o'
mysql -uroot -p'EiQtusd1=QL9'
mysql -uroot -p'O<E.GRsW_5ku'
--修改密码策略,三台都执行
--第一次 安装好mysql,要先修改下密码,再设置简单密码策略,否则会报错ERROR 1820 (HY000)
alter user user() identified by "Mysql=1357";
set global validate_password.policy=LOW;
set global validate_password.mixed_case_count=0;
set global validate_password.number_count=0;
set global validate_password.special_char_count=0;
set global validate_password.length=1;
set global validate_password.check_user_name='OFF';
--这里将roo密码修改为 root
alter user user() identified by 'root';
登录MySQL
mysql -uroot -p'root'
主节点添加主从同步账户(只在主节点执行)
--主节点添加主从同步账户
--只在主节点执行
CREATE USER 'copy'@'%' IDENTIFIED BY '123456';
alter user 'copy'@'%' identified with mysql_native_password by '123456';
grant all privileges on *.* to 'copy'@'%' with grant option;
开启二进制日志文件和添加server-id
#先停止MySQL
systemctl stop mysqld
vim /etc/my.cnf
--主节点添加
log-bin=mysql-bin
server-id=70
--从节点1添加,从数据库开启只读模式,避免和 主节点数据不一致
server-id=71
read_only = 1
super_read_only = 1
--从节点2添加,从数据库开启只读模式,避免和 主节点数据不一致
server-id=72
read_only = 1
super_read_only = 1
--注意,注意,注意,只有master节点有mysql-bin配置,每个节点的server-id必须不同
#启动MySQL
systemctl start mysqld
主节点mysql重置偏移量(只在主节点执行)
#只在主节点执行
mysql -uroot -proot
--重置偏移量如果不重置,从节点也会创建copy用户
reset master;
show master status;
--获取到二进制文件名字 :
--mysql-bin.000001
--Position : 157
--这里获取的信息之后会用到
注册从节点(只在从节点执行)
--只在从节点执行
--参数解析:
--master_host : 主节点主机
--master_user : 第2步创建的主从同步账户
--master_port : 主节点mysql服务的端口号,因为没有这里改过所以是 3306
--master_password : 第2步创建的主从同步账户的密码
--master_log_file : 第4步获取的二进制文件名字
--master_log_pos : 第4步获取的Position值
stop slave;
reset slave;
change master to master_host='192.168.56.70',master_user='copy',master_port=3306,master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=157;
--启动 启动所有从节点的slave
start slave;
show slave status \G;
--以下两项必须是yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
--如果出现Slave_IO_Running: Connecting
--①可能防火墙没关
--②可能创建copy用户的时候,从节点也执行创建了,从节点删除copy用户,重新执行本步骤
测试主从
主节点创建数据库,在从节点查询;
MySQL主从修复
重新执行步骤:
主节点mysql重置偏移量(只在主节点执行)
注册从节点(只在从节点执行)