mysql数据库主从搭建

1、最近一直在学习mysql的东西,恰好看到mysql如何搭建主从数据库,搜集了不少资料后大体了解了mysql主从复置的原理。如下是个人理解:mysql

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

  1. slave须要经过自身的IO进程链接上master数据库,并读取master指定日志文件的指定位置以后的内容(slave会向master请求,“我要XXX日志文件XXX位置以后的内容”);
  2. 这时候master接收到来自slave的请求后会找到该日志文件的制定位置,并复制该位置以后的内容返回给slave;
  3. slave将接收到的日志内容依次添加到slave端的relay-log文件的最末端,并将读取到的master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候可以清楚的告诉master“我须要从哪一个bin-log的什么位置开始读取”;
  4. slave的Sql进程检测到relay-log中新增长了内容后,会立刻解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。  

2、如今咱们开始配置主从数据库:数据库

  这里我准备了两台服务器,系统均为centos7,服务器的系统能够有差异;数据库的话建议你们使用统一版本的。这里个人服务器ip分别是192.168.0.109(master)、192.168.0.133(slave).centos

  • 服务器:centos7
  • 数据库:Ver 15.1 Distrib 5.5.50-MariaDB, for Linux (x86_64) using readline 5.1
  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;//使权限当即生效
  2. 配置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 |
    +------------------+----------+--------------+--------------------------+centos7

    配置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; //查看从数据库的状态



  3. 在主mysql建立数据库abc,再从mysql查看已经同步成功!
    create database abc;

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

相关文章
相关标签/搜索