mysql主从数据库怎么搭建_mysql数据库主从搭建

一、最近一直在学习mysql的东西,刚好看到mysql如何搭建主从数据库,搜集了很多资料后大致了解了mysql主从复置的原理。以下是我的理解:

举例master为主数据库,slave为从数据库。

slave需要通过自身的IO进程连接上master数据库,并读取master指定日志文件的指定位置之后的内容(slave会向master请求,“我要XXX日志文件XXX位置之后的内容”);

这时候master接收到来自slave的请求后会找到该日志文件的制定位置,并复制该位置之后的内容返回给slave;

slave将接收到的日志内容依次添加到slave端的relay-log文件的最末端,并将读取到的master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉master“我需要从哪个bin-log的什么位置开始读取”;

slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。

二、现在我们开始配置主从数据库:

这里我准备了两台服务器,系统均为centos7,服务器的系统可以有差别;数据库的话建议大家使用统一版本的。这里我的服务器ip分别是192.168.0.109(master)、192.168.0.133(slave).

服务器:centos7

数据库:Ver 15.1 Distrib 5.5.50-MariaDB, for Linux (x86_64) using readline 5.1

登录到master的数据库,在master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE权限。用户名的密码都会存储在文本文件master.info中

命令如下:

mysql > GRANT REPLICATION SLAVE ON *.*TO'slave'@'192.168.0.133'IDENTIFIED BY'123456';//建立root账户,密码是123456,只允许该账户在192.168.0.133这个ip登录(slave的ip),授予REPLICATION SLAVE权限

mysql > flush privileges;//使权限立即生效

配置master,slave数据库

配置master

vi/etc/my.cnf #编辑配置文件,在[mysqld]部分添加下面内容

server-id=1#设置服务器id,为1表示主服务器。

log_bin=mysql-bin #启动MySQ二进制日志系统。

binlog-do-db=abc #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行

binlog-ignore-db =mysql,information_schema #忽略写入binlog的库

重启master数据库

systemctl restart mariadb//我这里安装的mysql服务端是mariadb-server

登录master数据库,查看master状态

show master status;

+------------------+----------+--------------+--------------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+--------------------------+

| mysql-bin.000001 | 2722 | | mysql,information_schema |

+------------------+----------+--------------+--------------------------+

配置slave

vi/etc/my.cnf #编辑配置文件,在[mysqld]部分添加下面内容

server-id=2 #设置服务器id,为2表示从服务器,这个server-id不做规定,只要主从不一致就好

log_bin=mysql-bin #启动MySQL二进制日志系统,如果该从服务器还有从服务器的话,需要开启,否则不需要

binlog-do-db=abc #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行

binlog-ignore-db =mysql,information_schema #忽略写入binlog的库,如果该从服务器还有从服务器的话,需要开启,否则不需要

重启slave数据库

systemctl restart mariadb//我这里安装的mysql服务端是mariadb-server

登录从数据库,

change master to master_host='192.168.0.133',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=2722;//mysql-bin.000001,2722为之前master查到的状态值。

start slave;//开启从数据库show slave status; //查看从数据库的状态

71291f33386be0600161714558116feb.png

在主mysql创建数据库abc,再从mysql查看已经同步成功!

create database abc;

发现从数据库中也会出现数据库abc,说明我们的主从数据库搭建成功啦~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值