• MySQL主从复制


    一、实现原理:
    1、介绍:主从复制就是把一台服务器(主库Master)上的数据的变化“实时”更新到其他服务器(从库Slave)上,使得所有的服务器的数据保持同步。

    2、原理:
      (1).在主库上把数据更改记录到二进制日志(Binary Log)中(这些记录被称为二进制日志事件)
      (2).从库将主库上的日志复制到自己的中继日志(Relay Log)中
      (3).从库读取中继日志中的事件,将其重放到从库数据之上
      
    3、优点及适用场景
    (1).通过复制实现数据的异地备份
      Master(上海) --> Slave(北京)
            --> Slave(广州)
    (2).提高数据库系统的可用性
      当主库出现故障的时候,可以切换到从服务器上进行使用
    (3).实现服务器负载均衡


    二、配置说明及实例
    1.修改主服务器的my.cnf配置文件

    log-bin=master-a-bin	# 日志文件名称
    binlog-format=ROW	# 三种选择:row、statement和mixed
    server-id=1	     # 服务器ID
    binlog-do-db=iotek_test	# 需要同步的数据库实例

    2.修改从服务器的my.cnf配置

    log-bin=master-a-bin # 日志文件名称
    binlog-format=ROW  # 二进制日志的格式,主从要统一
    server-id=2     # 要求各个服务器的这个id必须不一样

    实例配置:

    centos 6.5
    MySQL版本: MySQL COmmunity 5.6
    主服务器: 192.168.60.141
    从服务器: 192.168.60.139

    1.mysql的安装

    检查系统是否自带安装MySQL,如果有的话就卸载

    yum list installed | grep mysql
    yum -y remove mysql-libs.x86-64

    更新MySQL5.6版本的yum

    wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
    rpm -ivh mysql-community-release-el6-5.noarch.rpm

    查看是否已经有了mysql的安装源

    yum repolist all | grep mysql

    安装mysql

    yum install mysql-community-server

    启动mysql服务

    service mysqld start

    登录(初始密码是没有的)

    mysql -uroot -p

    设置密码(登录进入mysql后输入的命令)

    mysql> use mysql;
    mysql> update user set password=password('123456') where user='root';
    mysql> flush privileges; # 刷新一下
    mysql> quit; # 退出

    2.主服务器配置

    (1)设置给从服务器登录用的帐号(重新使用密码登录进入mysql中)

    mysql> grant replication slave on *.* to 'slave_user1'@'192.168.60.139' identified by '123456';
    vi /etc/my.cnf

    在[mysqld]下方,把需要添加的部分加入进来

    log-bin=master-a-bin	# 日志文件名称
    binlog-format=ROW	# 三种选择
    server-id=1	# 服务器ID
    binlog-do-db=iotek_test	# 需要同步的数据库实例

    (2)从服务器修改my.cnf与上面方式一样

    log-bin=master-a-bin # 日志文件名称
    binlog-format=ROW # 二进制日志的格式,主从要统一
    server-id=2	# 要求各个服务器的这个id必须不一样

    3.重启主服务器同步

    service mysqld restart

    登录mysql

    mysql> show master status

    重启从服务器

    service mysqld restart

    修改连接主服务器,其中master_log_file和master_log_pos是主服务器中show master status中的信息

    mysql> change master to master_host='192.168.60.141',
        master_user='slave_user1', master_password='123456',
        master_log_file='mysql-a-bin.000001', master_log_pos=120;
    mysql> start slave;
    mysql> show slave status G;

    需要确认输出中的状态是slave_io_running=yes,slave_sql_running=yes,说明从服务器已经连接到主服务器上了

    需要在主服务器关闭防火墙,不然从服务器连接不过来,一直处于连接中

    service iptables stop # 临时关闭
    chkconfig iptables off # 永久关闭

    4.登录主服务器上创建库、表、修改数据,然后观察从库是否跟着变动

  • 相关阅读:
    正则表达式
    特殊符号作用
    sed
    scp
    EOF
    env
    JAVA进阶5
    JAVA进阶4
    JAVA进阶3
    JAVA进阶2
  • 原文地址:https://www.cnblogs.com/TheoryDance/p/10325431.html
Copyright © 2020-2023  润新知