异步复制(主从复制)master节点不会关心slave节点的状态,只需要写自己的数据即可
能不能完成复制看slave节点的io线程和sql线程是否开启
(1)主库开启binlog日志(设置log-bin参数)
(2)主从server-id不同
(3)从库服务器能连同主库
mysql的主从配置又叫replication,AB复制,基于binlog二进制日志,主数据库必须开启binlog二进制日志才能进行复制
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2)从库生成两个线程,一个i/o线程,一个SQL线程,i/o线程去请求主库的binlog,sql线程进行日志回放来复制
(3) slave将master的binary log events拷贝到它的中继日志(relay log);
(4)slave重做中继日志中的事件,将更改应用到自己的数据上。
mysql的主从复制(异步复制)(基于position)把一个事件拆开来复制,并不是以一个完整的事件为单位来进行复制
- 一开始两个mysql必须一模一样,否则会报错 master自己做自己的,写在自己的日志里
slave能否同步成功取决于IO线程,和SQL线程回放日志 IO通过联系master拿到master的二进制日志,SQL回放日志
slave节点的数据总比master节点的数据慢
环境:
server1 172.25.254.1 master节点
server2 172.25.254.2 slave节点
真机 172.25.254.38 测试
两台新的虚拟机
在官网或网盘下载mysql的rpm包
server1上:
1
tar xf mysql–xxxx ,把其它没用的删掉
2
vim /etc/my.cnf
在文件末尾写入
log-bin=mysql-bin
server-id=1
3
systemctl start mysqld
cat /var/log/mysqld.log | grep password
开启服务之后生成了一个临时密码,使用临时密码进行数据库安全初始化
mysql_secure_installation 对mysql进行安全初始化
利用初始密码登录
密码必须由字母大小写 特殊符号 数字组成
其它都选y
初始化完成
4
CREATE USER 'repl'@'172.25.254.%' IDENTIFIED BY 'APLOX111fox.';
创建用户,可以使用此用户远程登录数据库
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.25.254.%';授权为可以复制master节点数据的slave节点
flush privileges;刷新
show master status;查看master节点的状态
REPLICATION表示复制的权限
*.* 表示对所有库的所有表都授权
repl 用户名
‘172.25.12.%’ 授权172.25.12网段的所有数据库节点都可以同步(复制)
在主机上测试主节点是否设置好:
server2上:
1
yum install *.rpm
vim /etc/my.cnf
在最后面写入:
server-id=2(每个节点的序号是唯一的)
systemctl start mysqld
cat /var/log/mysqld.log | grep password
mysql_secure_installation 对mysql进行安全初始化
利用初始密码登录
密码必须由字母大小写 特殊符号 数字组成
其它都选y
##配置主库的信息
mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.1', ##主库的ip地址
MASTER_USER='repl', ##主库的用户
MASTER_PASSWORD='APLOX111fox.', ##主库用户的密码
MASTER_LOG_FILE='mysql-bin.000002', ##主库的日志文件
MASTER_LOG_POS=1569; ##主库的状态码
mysql>
mysql> START SLAVE; ##开启从库
查看从库状态
mysql> SHOW SLAVE STATUS\G ##可以看到的当前两个进程都是yes,表示主库和从库的数据一致
开启成功
IQ SQL线程都开启才能正常复制
在server1上有刚刚的日志文件
在server2上看有没有复制
来源:CSDN
作者:Aplox
链接:https://blog.csdn.net/Aplox/article/details/104669014