Mysql主从复制

主从机制实现原理

(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 statusG;

检查Slave_IO_Running和Slave_SQL_Running两个参数, 都是yes说明可以了

错误排查

按照顺序一般是遇不到问题的, 我自己在测试中遇到了一个问题是主库防火墙没有关, Slave_IO_Running总显示Connecting

原文地址:https://www.cnblogs.com/wwg945/p/10076376.html