资讯专栏INFORMATION COLUMN

MySQL5.7 主从复制配置

rainyang / 1793人阅读

摘要:每一个主从复制的连接,都有三个线程。上创建一个测试数据库四主从复制创建授权用户创建用户,指定该用户只能在主库上使用密码登录为用户赋予权限。

一、主从复制原理

MySQL 主从复制是一个异步复制过程,主库发送更新事件从库从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。每一个主从复制的连接,都有三个线程。拥有多个从库主库每一个连接主库从库创建一个 log dump 输出线程,每一个从库都有它自己的 I/O 线程和 SQL 线程。

步骤
1.主库会将所有更新记录保存到 Binarylog 文件。

2.每当有从库连接到主库的时候,主库都会创建一个 log dump 线程发送 Binarylog 文件到从库

3.当从库复制开始的时候,从库就会创建两个线程进行处理,一个 I/O 线程,一个 SQL 线程。

4.I/O 线程去请求主库Binarylog文件,并将得到的 Binarylog 文件写到 Relaylog 文件中。

5.SQL 线程会读取 Relaylog 文件中的日志,并解析成具体操作,来实现主从操作一致,而最终数据一致。

二、工具

VMware版本:12.0.0

CentOS版本:7.0

MySQL版本 :5.7.18

Master 服务器:192.168.78.128

Slave 服务器 :192.168.78.130

三、准备工作

1.安装 MySQL5.7 详见此处
2.如果从服务器克隆主服务器,则修改 auto.cnf 文件中 server-uuid 值,不然后面主从复制会报 1593 错误,修改完记得重启MySQL

3.关闭主、从服务器防火墙

$ firewall-cmd --state              ##查看防火墙状态
running                             ##防火墙开启

$ systemctl stop firewalld          ##关闭防火墙

$ firewall-cmd --state
not running                         ##防火墙关闭

4.修改主从配置文件(my.cnf):

## 192.168.78.128(master)
bind-address=192.168.78.128         #master 服务器地址
log_bin=mysql-bin  
server_id=128

## 192.168.78.130(slave)
bind-address=192.168.78.130         #slave 服务器地址
log_bin=mysql-bin  
server_id=130

重启主从 MySQL:

$ systemctl restart mysqld

: server_id 必须唯一。

5.master 上创建一个测试数据库(test):

$ create database test;
$ use test;
$ create table test(id int(11), value varchar(20));
$ insert into test values(1, "aa"),(2, "bb"),(3, "cc");
四、主从复制

1.master创建授权用户:
192.168.78.128(master)

## 创建 test 用户,指定该用户只能在主库 192.168.78.130 上使用 MyPass1! 密码登录
mysql> create user "test"@"192.168.78.130" identified by "MyPass1!";

## 为 test 用户赋予 REPLICATION SLAVE 权限。
mysql> grant replication slave on *.* to "test"@"192.168.78.130";

## 查看用户
mysql> select user,host from mysql.user;

## 查看 master 状态
mysql> show master status;



这里的 mysql-bin.000001Positionslave 配置时需要用到。

2.将 master 中现有的数据信息导出

$ mysqldump -u root -p --all-databases --master-data > all.sql

3.将 all.sql 发送到 slave 服务器 tmp 目录下:

$ scp all.sql root@192.168.78.130:/tmp

4.slave 导入 master 数据,使 master-slave 数据保持一致

192.168.78.130(slave)

$ mysql -uroot -p < all.sql

5.使 slavemaster 建立连接,从而同步:

mysql> change master to
    -> master_host="192.168.78.128",
    -> master_user="test",
    -> master_password="MyPass1!",
    -> master_log_file="mysql-bin.000001",
    -> master_log_pos=1244;
    
mysql> start slave;

mysql> show slave status G

master_log_filemaster_log_pos值为主库上面执行show master status得到

如果 Slave_IO_RunningSlave_SQL_Running 都为 Yes,说明配置成功

如果其中一项不为 Yes,查看 Last_IO_Errno 错误码和错误信息,或者查看 MySQL 日志信息并查找对应问题

五、主从配置检验

master 插入一条数据,slave查看是否成功
192.168.78.128(master)

192.168.78.130(slave)

六、思考

主从复制同步延迟如何解决?

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10115.html

相关文章

  • MySQL5.7 主从复制配置

    摘要:每一个主从复制的连接,都有三个线程。上创建一个测试数据库四主从复制创建授权用户创建用户,指定该用户只能在主库上使用密码登录为用户赋予权限。 一、主从复制原理 MySQL 主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。每一个主从复制的连接,都有三个线程。拥有多个从库的主库为每一个连接到主库的从库创建一个 log du...

    wenhai.he 评论0 收藏0
  • ❤️Windows10环境下Docker安装主从MySQL5.7数据库❤️

    Windows10环境下Docker安装主从MySQL5.7数据库 1 软件环境概览2 Docker分别安装主从MySQL5.7数据库2.1 主数据库安装2.1.1 配置文件2.1.1.1 mysqld.cnf文件 2.1.2、主数据库镜像制作2.1.2.1 Dockerfile文件制作2.1.2.2 构建镜像2.1.2.3 创建网络2.1.2.4 启动容器 2.2 从数据库安装2...

    Eric 评论0 收藏0
  • MySQL5.7.19 - 主从复制 - 日志点

    摘要:第一部分开放端口重启网络开启重启登录,创建复制用户赋权创建测试数据库创建测试表插入测试数据退出备份数据库拷贝备 【第一部分】 Master - Lebron - 192.168.1.122 1. 开放3306端口 [root@lebron sysconfig]# vim /etc/sysconfig/iptables # Firewall configuration written b...

    xiyang 评论0 收藏0
  • MySQL5.7+keepalived双主Gtid复制同步

    摘要:节点发生故障后,利用的高可用机制实现快速切换备用节点在部署方案的过程中,两个节点的模式最好都为模式,避免因为网络延迟,超过心跳检查时间,发生脑裂情况相互抢占导致写入相同数据引发的冲突两个节点的自增步长和自增起始点设为不同值。 MySQL+keepalived双主Gtid复制同步 CentOS7环境: master-1主机(192.168.1.10) master-2主机(192.168...

    megatron 评论0 收藏0
  • mysql5.7主从配置

    摘要:安装在里下载下载后再安装源安装好后开始用安装修改默认密码修改,在小节下添加一行这一行配置让启动时不对密码进行验证重启服务使用用户登录到更新密码开启远程操作退出,编辑文件,删除的内容修改密码策略通过配置文件设置密码策略 安装mysql5.7.17在CentOS 7里下载 wget http://repo.mysql.com/mysql57... 下载后再安装源 rpm -ivh my...

    cucumber 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<