主从服务器搭建
- 准备2台centos服务器,2台服务器都安装了mysql
- 确保第2台服务器与第1台服务器的不同
① MAC地址
② hostname
③ IP 地址
④ UUID
# 修改第2台服务器的mysql的uuid
vim /var/lib/mysql/auto.cnf
# 重启mysql
systemctl restart mysqld
- 修改主机配置文件
[mysqld]
#[必须]主服务器唯一ID
server-id=1
#[必须]启用二进制日志,指名路径。比如:自己本地的路径/log/mysqlbin
log-bin=atguigu-bin
#[可选] 0(默认)表示读写(主机),1表示只读(从机)
read-only=0
#设置日志文件保留的时长,单位是秒
binlog_expire_logs_seconds=6000
#控制单个二进制日志大小。此参数的最大和默认值是1GB
max_binlog_size=200M
#[可选]设置不要复制的数据库
binlog-ignore-db=test
#[可选]设置需要复制的数据库,默认全部记录。比如:binlog-do-db=atguigu_master_slave
binlog-do-db=需要复制的主数据库名字
#[可选]设置binlog格式
binlog_format=STATEMENT
-
修改完配置后,重启mysql服务
-
当主从服务器搭建完成后,再创建数据库
-
修改从机的配置文件
# my.cnf 的 [mysqld]
#[必须]从服务器唯一ID
server-id=2
#[可选]启用中继日志
relay-log=mysql-relay
-
关闭2台服务器的防火墙
-
主机创建账户并授权
CREATE USER 'slave1'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'%';
ALTER USER 'slave1'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
- 查看主机状态
show master status;
从机上配置将要复制的主机
# 切换到从机并登录mysql
# 配置要复制的主机
CHANGE MASTER TO
MASTER_HOST='主机的IP地址',
MASTER_USER='主机用户名',
MASTER_PASSWORD='主机用户名的密码',
MASTER_LOG_FILE='mysql-bin.具体数字',
MASTER_LOG_POS=具体值;
# 案例:第1步
CHANGE MASTER TO
MASTER_HOST='192.168.1.150',MASTER_USER='slave1',MASTER_PASSWORD='123456',MASTER_LOG_F
ILE='atguigu-bin.000007',MASTER_LOG_POS=154;
# 如果报错,是否之前做过同步,如果做过同步,先停止,再执行上面的命令
stop slave;
# 第1步执行成功后,启动同步
# 第2步
start slave;
# 如果第2步报错
# 删除SLAVE数据库的relaylog日志文件,并重新启用新的relaylog文件
reset slave;
# 查看同步状态
SHOW SLAVE STATUS\G;
# 同步配置成功后,在主机上增删改查,从机上自动复制
- 停止主从复制
# 从服务器执行
stop slave;
- 重新配置主从复制
# 当停止主从复制后,需要重新配置
# 在从机上执行如下
stop slave;
# 删除Master中所有的binglog文件,并将日志索引文件清空,重新开始所有新的日志文件(慎用)
reset master;