主从同步
两种角色
master(主)
slave(从)
原理
master的binlog日志
slave的relay log日志(中继日志)
IO线程:复制master主机binlog日志文件里的sql命令保存到中继日志文件里
SQL线程:执行中继日志文件里的sql语句实现与master数据一致
主服务器
启用binlog日志、授权用户、查看binlog日志信息
从服务器
设置server_id 并重启服务
指定主服务器信息
启动slave进程
查看状态信息
配置
主
echo log_bin=日志名 >> /etc/my.cnf
echo server_id=xx(数字) >> /etc/my.cnf
systemctl restart mysqld
grant replication slave on *.* to 用户名@'%' identified by "123qqq...A";
show master status;
从
server_id 不允许与主服务器server_id相同
echo server_id=xx >> /etc/my.cnf
systemctl restart mysqld
mysql>change master to
master_host="",主服务器ID
master_user="",主服务器用户名
master_password="",用户密码
master_log_file="",主服务器日志文件名
master_log_pos=;主服务器日志偏移量
start slave
show slave status \G;
看到IO SQL都是yes ok
相关的文件
master.info 主库信息
relay-log.info 中继日志信息
主机名-relay-bin.000001 中继文件
主机名-relay-bin.index 索引文件
删除/var/lib/mysql/里的这些文件可以把主机恢复为独立的数据库服务器
也是一个你看不懂报错的终极解决办法
主从从(链式复制)
配置与主从结构的差不多
master
1改配置文件
2.授权用户
重启mysqld
slave
1.修改配置文件
需要多加一条 级联复制
log_slave_updates
2.启动服务mysqld
3.配置主信息
4.启动slave
5.查看状态看到两个yes
主主(互相为主从)
两个服务器都配置对端的主信息
工作模式
异步复制(默认)
主执行完事务后,立即将结果返回客户端,不关心从服务器是否已经同步数据
半同步复制
主服务器在执行完一次事务后 等待至少一台从服务器同步数据完成 才将结果返回给客户端
配置半同步需要安装两个模块
master
slave
命令行配置(mysql里)
install plugin rpl_semi_sync_master soname "semisync_master.so"
install plugin rpl_semi_sync_slave soname "semisync_master.so"
set global rpl_semi_sync_master_enabled=1
set global rpl_semi_sync_slave_enabled=1
查看是否启用
show variables like "rpl_semi_sync_%_%enabled"
查看是否安装模块
select plugin_name,plugin_status from information_schema.plugins where plugin_name like "%seni%";
永久配置 /etc/my.cnf
安装 plugin-load=“rpl_semi_sync_slave;rpl_semi_sync_master”
启用rpl_semi_sync_slave_enabled=1
rpl_semi_sync_master_enabled=1
重启MySQL
你需要知道
1 简述MySQL 主从同步中,主数据库服务器要做哪些配置?
启用binlog日志
用户授权
查看状态
2 简述在主从同步结构中,slave服务器IO线程和SQL线程各自的作用。
IO负责拷贝主服务器binlog里的sql命令拷贝到中继日志里
SQL线程负责执行本机中继日志中的sql命令 把数据写入本机的数据库里
3 简述MySQL 主从同步结构模式种类。
主从、主多从、主从从、主主
4 简述MySQL 主从同步复制模式。
异步复制
半同步复制