linux安装5.7版mysql主从复制_linux 下Mysql主从数据库的复制(mysql版本:mysql-5.7.24)——异步复制...

一.Mysql主从数据库的复制简介

1.Mysql数据库主从复制的复制过程:

1) 在每个事务更新数据完成之前,master在二进制日志记录这些改变。写入二进制日志完成后,master通知存储引擎提交事务。

2) Slave将master的binary log复制到其中继日志。首先slave开始一个工作线程(I/O),I/O线程在master上打开一个普通的连接,然后开始binlog dump process。binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件,I/O线程将这些事件写入中继日志。

3) Sql slave thread(sql从线程)处理该过程的最后一步,sql线程从中继日志读取事件,并重放其中的事件而更新slave数据,使其与master中的数据一致,只要该线程与I/O线程保持一致,中继日志通常会位于os缓存中,所以中继日志的开销很小。

17e371db585e446e5683378978d79a5b.png

2.实现Mysql数据库主从复制需要进行的配置:

主服务器:

开启二进制日志

配置唯一的server-id

获得master二进制日志文件名及位置

创建一个用于slave和master通信的用户账号

从服务器:

配置唯一的server-id

使用master分配的用户账号读取master二进制日志

启用slave服务

3.主从同步复制有以下几种方式:

(1)同步复制,master的变化,必须等待slave-1,slave-2,...,slave-n完成后才能返回。

(2)异步复制,master只需要完成自己的数据库操作即可,至于slaves是否收到二进制日志,是否完成操作,不用关心。MYSQL的默认设置。

(3)半同步复制,master只保证slaves中的一个操作成功,就返回,其他slave不管。这个功能,是由google为MYSQL引入的。

二.实验环境(rhel7.3版本)

1.selinux和firewalld状态为disabled

2.各主机信息如下:

主机

ip

server1(主库)

172.25.8.1

server2(从库)

172.25.8.2

三.Mysql数据库主从复制的部署

1.配置server1(主库)

<1>下载mysql5.7安装包,并解压

ed01f1611aee3e396f7c0a406b95410e.png

<2>安装需要的软件包,即安装mysql服务

89e2dd9f663689ba3d1ecd0a92f0923b.png

<3>编辑mysql的主配置文件/etc/my.cnf

其中log-bin对应的日志名随便给;server-id对应的数字也随便给,只是一般从1开始。

#在最后写入

7a01ab2c5ed791409585eed78dd665a8.png

#启动mysql二进制日志,即数据同步语句,从数据库会一条一条的执行这些语句

#服务器唯一标识

ec17fc401d341d4ca2a51da88eb46f59.png

<4>开启数据库,查看原始密码

921ecac33a1d69c8ef319d9079a5ff8b.png

f70df522eca88fd9ee3470ef544b0df0.png

<5>进行数据库安全初始化(登陆密码为查看到的原始密码)——如果不进行初始化,进入数据库是不能进行任何操作的,所以要进行安全初始化。

#修改密码,我的秘密为Ding123@westos.com

#注意这里设置新密码时,密码是有要求的,要求为:数字+大小写字母+特殊字符,且超过8位。这是因为该数据库版本开启了密码检测插件,密码太过简单会报错。

#第一个选项敲回车,其余选项全都敲y

<6>以root用户及刚刚安全初始化设置的密码,登陆数据库

d8e3470420c2aa3e633f2f680004f75c.png

<7>创建有复制权限的帐号,并查看该帐号是否创建成功。

#可创建从数据库的masterbackup用户和权限

##*.*表示所有数据库的所有表。

##172.25.8.%表示172.25.8网段,即0-255的IP都可以访问主服务器,正式环境请配置指定从服务器IP。

##若将172.25.8.%该为%,则表示任何IP均可作为从数据库来访问主服务器。

341f74f4080f36a33866acdbf4261eef.png

8f0baa509202fc59c2b111f954e3ac6e.png

<8>查看主库状态:可以看到当前记录日志的日志文件名和Position号。

也可以查看主机的日志,主机的server-id,主机的二进制日志是否开启

#查看主库的状态

6b6bc0ad87fb28fe7ab9913073d55347.png

#查看主机的日志

58b55b2e10b029d564fb965197f53128.png

#查看本机的server-id

ea602f0ba7b0036e1703063bccc8c5bd.png

#查看本机的二进制日志是否开启

d042e030b00590000b979ab932444da1.png

838fb8bb22cb0c72c1fd370b7f6bf06f.png

其中mysql-bin.0000001日志位于/var/lib/mysql目录下,

6cc22d7ddb21df61122da9a8ecdb3127.png

且文件类型为日志,所以要利用mysqlbinlog命令来查看。

命令有三种,看到的内容都是一样的。第一种:mysqlbinlog binlog.000001;第二种: mysqlbinlog binlog.000001 -v v;

第三种:mysqlbinlog binlog.00001 --base64-output=DECODE-ROWS(其中--base64-output参数是通过mysqlbinlog  --help | grep  out 得到的)

ff371709cc300debb2ebdfea783a9f90.png

2.配置server2(从库)

<1>从主库那拷贝需要的安装包,并安装,即安装mysql服务

2409c368e1bd81183d325ceec800cd37.png

cf8ea415cda6f4c4714bffdf82971a78.png

<2>编辑/etc/my.cnf文件

#在最后一行写入

d0e43622b45e8c9350604b345f4f191c.png

#服务器唯一标识,如果有多个从服务器,每个服务器的server-id不能重复,跟IP一样是唯一标识,如果你没设置server-id或者设置为0,则从服务器不会连接到主服务器。因为主库是1,所以这里不能写1,要和主库不同,习惯上顺序是递增的,所以我这里写2

25c8cc8bae41f6b606d228d3cfdaa4f7.png

<3>开启数据库,查看原始密码,并进行数据库安全初始化(登陆密码为查看到的原始密码)

30e72792e3034683f10a6e21b636ccc8.png

修改完密码后,第一个选项敲直接回车,后面的选项全都敲y

dad261fab5d6547c32e8b98b3d1eb1de.png

<4>查看主库的授权用户是否设置成功

dbc6de49287bb87c7a071dd6ec15b313.png

切记:此处查看之后,必须退出来,否则就是在主库操作了。

<5>设定从库,将主库与从库连接起来,并开启从库

9cf70501fa908a989dc995daf0f3df0d.png

log_file 和 log_pos 在master 中用 show master status; 查看

efae58921d153755d73a63693002c9f7.png

<6>查看从库状态

也可以查看主机的server-id,主机的二进制日志是否开启

ca2695577c261f7e2cc5166d9c476446.png

如果Slave_IO_Running和Slave_SQL_Running都为yes,则表示正常

主从测试:

1.在主库端建立库westos和表usertb,并插入信息

4113c806bd82469ab4eecfed3fce0310.png

#创建数据库westos

451481b8a018ff9754a6b6a0772b65ca.png

2cc7b20160b19b5e0c5e7f76e41a9c68.png

#创建表usertb

a9a1477ea3693cfc18af00fcf0dbfec2.png

#查看表usertb的结构

6a8b00c18e02e21f6219ed38ff369e9e.png

#向表usertb中插入信息

2adf2539e54a5024578caccba9bf4408.png

#查看表usertb的信息

ba88bbd5fdefb4504cf60d92fad66b34.png

值的注意的是:

(1)主库的Position号是会发生改变的

272909b0720df72af4bf426ad8ca22ea.png

(2)server1(主库)重启一次mysqld服务,二进制日志的名字会变一次

2.从库端查看是否存在在主库中创建的内容

da9d7b586cb84825b6b3ef7adda4cc1a.png

30602b6dcdcaa9befd73aab3ec29954d.png

结论:

从库看到的内容同主库一样,表示主从数据库复制搭建成功。

值的注意的是:主库编写的内容会同步到从库,当然从库也可以编写内容,但是不会同步到主库。

server2(从库):

cc86a98946ca4be05ca36af8ba802ec3.png

server1(主库select * from usertb;):

63f361f65d9a3aac8181a9cf499805e7.png

为了不影响后面的实验,将从库上插入的数据删除,保证主库和从库数据是一致的

448a3b256ddb96fabab0d17e9a39ef3c.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值