主从机制实现原理
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重做中继日志中的事件,将改变反映它自己的数据。
主库配置
修改[mysqld]
[mysqld]
server-id=1 -- 给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号
log-bin=mysql-bin -- 启动二进制日志名称
查看日志,File是二进制日志文件名,Position 是日志开始的位置。这两个参数后面要用的到
SHOW MASTER STATUS;
show master status;
重启mysql服务
主库中添加账号使从库使用
-- 设置赋值权限
grant replication slave on *.* to 'chaoge'@'192.168.178.130';
--检查授权账号的权限
show grants for chaoge@'192.168.178.130';
从库配置
[mysqld]
server-id=3
重启数据库
systemctl restart mariadb
或者
systemctl restart mysql
检查Slava从数据库中的参数
show variables like 'log_bin'; --OFF
show variables like 'server_id';
配置赋值参数, Slave从数据库连接Master主库的配置
change master to master_host='192.168.178.129', -- 主库ip
master_user='chaoge', -- 主库用户
master_password='redhat', -- 主库密码
master_log_file='mysql-bin.000001', -- 上面主库查出来的那个File
master_log_pos=575; -- -- 上面主库查出来的那个Position
启动从库同步开关
start slave;
查看复制状态
show slave status\G;
检查Slave_IO_Running和Slave_SQL_Running两个参数, 都是yes说明可以了
错误排查
按照顺序一般是遇不到问题的, 我自己在测试中遇到了一个问题是主库防火墙没有关, Slave_IO_Running总显示Connecting