主节点配置
vim /etc/my.cnf
[mysqld]
server-id = 2
log_bin = master-bin
log-slave-updates = true
systemctl restart mysqld
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
从服务器1 、2的配置:是一样的 server-id不要重复就行
vim /etc/my.cnf
server-id = 3
#server-id = 3 mysql3则为4,三台服务器 server-id 不能一样
log_bin = master-bin
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.index
systemctl restart mysqld
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
在主服务器上创建并授权从服务器使用的mysql同步数据使用的mysql账户
# 创建从服务器同步用的mysql用户
create user 'rep'@'%' identified by '123456';
ALTER USER 'rep'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 授权创建的用户权限
grant replication slave,replication client on *.* to 'rep'@'%';
从服务器测试能否使用rep账户登录到主服务器
在主服务器查看二进制文件和偏移量
show master status;
这两个值记下来,一会要用
从服务器1、2 同步执行操作:
change master to master_host='1.92.122.182',master_port=13306,master_user='rep',master_password='123456',master_log_file='localhost-bin.000001',master_log_pos=699;
start slave;
show slave status\G;
如果复制状态显示错误,并且你确定需要重置复制,可以执行以下步骤:
停止复制:
STOP SLAVE;
重置复制状态:
RESET SLAVE;
(注意:这将删除所有复制相关的元数据,意味着你需要重新设置主从复制关系)重新配置复制:使用
CHANGE MASTER TO
命令设置主服务器的连接参数。启动复制:
START SLAVE;
如果主服务器的MySQL修改了了端口(即服务端口不是默认的3306),在CHANGE MASTER 时 加一个 master_port=,注意该值需要为整数而非字符串,
从服务器1、2同步执行设置为只读模式:
set global read_only=1;
测试
在主服务器创建一个数据库test
create database test;
然后再从服务器查看
show databases;
在从服务器能看到test库,到这一步主从同步搭建完成。
评论区