linux--mysql(主从复制position)

試著忘記壹切 提交于 2020-03-06 09:03:47

异步复制(主从复制)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上看有没有复制

在这里插入图片描述在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!