安装好mysql后进行如下设置:

主节点:

编辑配置文件:

vim /etc/my.cnf
log-bin=master-bin   #开启bin-log
server-id=1    #主节点id,每台mysql都要不同

重启mysql:

systemctl restart mysqld

创建复制账号并赋予权限:

grant replication slave, replication client on *.* to 'replication'@'192.168.1.%' identified by 'replication';

这两个权限的作用:

        replication client:复制用户可以使用 show master status, show slave status和 show binary logs来确定复制状态。

        replication slave:复制数据

查看主节点的状态以及bin-log位置:

show master status;

从节点:

编辑配置文件:

vim /etc/my.cnf
relay_log=relay-log
relay_log_index=relay-log.index  #如果不设置这两项会自动生成默认的
server_id=2
read-only

重启mysql:

systemctl restart mysqld

查看relay-log:

show variables like 'relay_log';

配置账号等信息:

change master to MASTER_HOST='192.168.1.111', MASTER_USER='replication', MASTER_PASSWORD='replication', MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=154;

开启复制:

start slave;

查看从服务器状态:

show slave status\G;

Slave_IO_State            从库的当前状态 

Slave_IO_Running: Yes       读取主程序二进制日志的I/O线程是否正在运行 

Slave_SQL_Running: Yes    执行读取主服务器中二进制日志事件的SQL线程是否正在运行。与I/O线程一样 

Seconds_Behind_Master      0就是已经同步了


错误解决:

ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

如果之前没有配置relay-log然后又配置上了就会出现路上报错。

解决方法:

stop slave;
reset slave;
change master ...
start slave