环境:两台Linux虚拟机并安装mysql,一台作为主节点,一台作为从节点
在master 的配置文件(/etc/my.cnf)中,配置如下内容:
#mysql 服务ID,保证整个集群环境中唯一
server-id=1#mysql binlog 日志的存储路径和文件名
log-bin=/var/lib/mysql/mysqlbin#错误日志,默认已经开启
#log-err#mysql的安装目录
#basedir#mysql的临时目录
#tmpdir#mysql的数据存放目录
#datadir#是否只读,1 代表只读, 0 代表读写
read-only=0#忽略的数据, 指不需要同步的数据库
binlog-ignore-db=mysql#指定同步的数据库
#binlog-do-db=db01


systemctl restart mysqld

设置mysql远程访问:
grant replication slave on *.* to 'root'@'192.168.192.131' identified by 'root';
flush privileges;
进入mysql,输入命令:
show master status;
我这里的显示混乱,正常应该两行显示。

字段含义:
File : 从哪个日志文件开始推送日志文件 给从节点 Position : 从哪个位置开始推送日志 从什么位置开始同步 Binlog_Ignore_DB : 指定不需要同步的数据库
在 slave 端配置文件中,配置如下内容:
#mysql服务端ID,唯一
server-id=2#指定binlog日志
log-bin=/var/lib/mysql/mysqlbin
配置文件命令:vi /etc/my.cnf

执行完毕之后,需要重启Mysql:
systemctl restart mysqld
执行如下指令 :指定当前从库对应的主库的IP地址,用户名,密码,从哪个日志文件开始的那个位置开始同步推送日志。
change master to master_host= '192.168.92.241', master_user='root', master_password='123456', master_log_file='mysqlbin.000001', master_log_pos=154;

开启同步:
start slave;
查看同步信息:
show slave status\G;


排错:
第一种
由于我使用的两台虚拟机和mysql是克隆的,可能两台MySQL可能id一致了
查看两台id
发现并不一致

第二种 查看auto.cnf文件:
uuid完全一致,需要修改uuid

uuid是自动生成的,只需要删除,然后再次启动mysql就行了。


然后停止同步:

再次执行
change master to master_host= '192.168.92.241', master_user='root', master_password='123456', master_log_file='mysqlbin.000001', master_log_pos=154;
再次开启同步:



每重启一次虚拟机就需要重新配置从节点:否则报错;
Slave_IO_Running: Yes
Slave_SQL_Running: No

注意,重新配置前,主从数据库中的库要一致,假如主库有tbl_db从库没有,还是会报错。
进入主节点的sql:查看状态
show master status;

进入从节点sql:
先关闭同步,
stop slave

再次执行命令:
命令最后的数字修改为我们刚查询出来的数值
change master to master_host= '192.168.92.241', master_user='root', master_password='123456', master_log_file='mysqlbin.000001', master_log_pos=6493;
再开启同步
start slave;