MySQL 主从复制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 主从复制相关的知识,希望对你有一定的参考价值。

mysql 主从复制


本案环境 :

主机 操作系统 IP地 址 主要软件
主服务器 CentOS 7.3 x86_64 192.168.217.130 NTP
从服务器 CentOS 7.3 x86_64 192.168.217.131 ntpdate

案例实施 :

配置主服务器 :

  1. 在主服务器上搭建时间同步服务, 安装NTP :

    yum install ntp -y
  2. 配置 NTP :

    vim /etc/ntp.conf                             #编辑配置文件 添加
    server 127.127.217.0                     #设置本地是时钟源
    fudge 127.127.217.0 stratum 8      #设置时间层级为8(限制在15内)
    #127.127  ntp时间服务器的保留ip地址,作用是使用本机作为客户端的时间服务器
  3. 开启服务 :

    systemctl start ntpd.service 
    systemctl stop firewalld.service 
    setenforce 0
  4. 配置 MySQL 配置文件 :

    vim /etc/my.cnf        #在配置文件添加
    [mysqld]                     
    server-id = 11                    #修改   ID 主从不一样
    log-bin=master-bin            #开启二进制日志
    log-slave-updates=true     #开启从服务器同步主服务器二进制日志
  5. 重启服务, 进入数据库给从服务器授权 :

    systemctl restart mysqld.service 
    mysql -u root  -p
    mysql>GRANT REPLICATION SLAVE ON *.* TO ‘myslave‘@‘192.168.217.%‘ IDENTIFIED BY ‘123456‘;
    #允许从服务器使用 myslave账户 登录数据库 
    mysql> FLUSH PRIVILEGES;    #刷新权限
    mysql> show master status;       #查看主服务器状态
    +-------------------+----------+--------------+------------------+-------------------+
    | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +-------------------+----------+--------------+------------------+-------------------+
    | master-bin.000001 |      604 |              |                  |                   |
    +-------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)

    记住主服务器的二进制日志文件名和偏移量 。

配置从服务器 :

  1. 安装 ntpdate 同步时间 :

    yum install ntpdate -y      #从服务器上安装的 
    [ro[email protected] ~]# systemctl start ntpdate.service                   #开启服务
    [[email protected] ~]# /usr/sbin/ntpdate 192.168.217.130            #时间同步
    6 Jul 09:45:44 ntpdate[2941]: adjust time server 192.168.217.130 offset -0.233224 sec   #同步成功
    systemctl stop firewalld.service 
    setenforce 0
  2. 配置MySQL配置文件 :

    vim /etc/my.cnf
    [mysqld]    
    server-id = 12                                           #id 不一样
    relay-log=relay-log-bin                             #开启中继日志
    relay-log-index=slvae-relay-bin.index      #指定位置和名称
  3. 重启服务 ,进入mysql :

    systemctl restart mysqld.service 
    mysql -u root -p
    mysql> change master to master_host=‘192.168.217.130‘,master_user=‘myslave‘,master_password=‘123456‘,master_log_file=‘master-bin.000001‘,master_log_pos=604;   
    #  主服务器地址、授权用户、二进制日志名称、偏移量 。
    mysql> start slave;   # 开启从服务器
    mysql> show slave statusG;                 #查看从服务器状态
    *************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.217.130
                  Master_User: myslave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000001
          Read_Master_Log_Pos: 604
               Relay_Log_File: relay-log-bin.000002
                Relay_Log_Pos: 321
        Relay_Master_Log_File: master-bin.000001
             Slave_IO_Running: Yes                # 两个为yes 表示同步中
            Slave_SQL_Running: Yes              

同步测试 :

  1. 在主服务器上创建数据库 :

    mysql> create database test;
  2. 在从服务器上查看 :

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | jdy                |
    | mysql              |
    | performance_schema |
    | sys                |
    | test               |                        # 同步成功
    +--------------------+
    6 rows in set (0.12 sec)

ps:数据同步只同步数据库同步之后所创建或修改的库或表 。

ps:从服务器上指主服务器二进制日志名称和偏移量一定不能错 。

ps:搭建多台从服务器只需要修改id不同即可 。

ps:以上是安装好数据库之后的操作 。

以上是关于MySQL 主从复制的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 主从复制与读写分离(原理深刻,过程详细,值得一看)

MySQL主从复制与读写分离

MySQL主从复制及读写分离实际部署与验证

MySQL主从复制及读写分离实际部署与验证

mysql实现主从复制/主从同步

MySQL主从复制以及读写分离(❤❤❤❤含理论和实验❤❤❤❤大家中秋快乐!㊗)