1.主从复制,在本质上就是通过与从数据库复制与主数据库的binlog日志文件,通过重做实现的同步; 但是一定要注意尽量保证主从服务器上安装了相同的版本的数据库,在主服务器上设置一个复制使用的账号,并授予replication slave权限。我们可以根据ip创建账号为slave
创建账号:CREATE USER 'slave'@'192.168.44.%' IDENTIFIED WITH mysql_native_password BY 'slave';
赋予权限:GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.44.%';
2.主服务器设置mysql配置文件
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1
3.从服务器配置
注:如果是虚拟主机克隆需要改一下ip
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改ip:GATEWAY=192.168.44.12
重启网络:systemctl restart network
需要改一下mysql的uuid:find / -name auto.cnf
开始配置从节点:
server-id =2
relay_log = /usr/local/mysql/data/mysql-relay-bin
relay_log-index = /usr/local/mysql/data/mysql-relay-bin.index
log_slave_updates =1
read_only =1
flush privileges;
先查看主服务器的节点:show master status;
关闭主节点服务器防火墙:systemctl stop firewalld.service;
从服务器指定主节点ip:
change master to master_host='192.168.44.11',master_port=3306,master_user='slave', master_password='slave',master_log_file='mysql-bin.000002',master_log_pos=156;
4.启动节点并且查看是否配置成功:
start slave;
show slave status \G;
5.如果看到以下两个配置均为yes,则配置成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
常见错误如下:
注:报retry-time可能是防火墙没关

注:Got fatal error 1236 from master when reading data from binary log........
刷新日志:flush logs;
因为刷新日志file的位置会+1
slave执行: CHANGE MASTER TO MASTER_LOG_FILE='mysqld-bin.000015',MASTER_LOG_POS=156;
mysql> slave start;
mysql> show slave status\G;