zoukankan      html  css  js  c++  java
  • MySQL复制(二)Master-Slave复制实践

    1. 准备工作

    首先要准备2台机器,分别安装mysql

    我这里的版本是5.1.73,mysql数据库安装请参考:http://www.cnblogs.com/tangyanbo/p/4289753.html

    linux系统为centos

    机器分别为:

    Master: 192.168.1.227

    Slave:192.168.1.225

    场景:master和slave都是刚创建的数据库,即数据是一致的场景下

    2. 配置复制

    大致步骤如下:

    1) 在每个服务器上创建一个复制账号

    2) 配置Master和Slave

    3) Slave连接Master开始复制

    2.1 在Master上创建复制账号

    在master上创建一个账号slave,密码slave,并赋予REPLICATION SLAVE权限

    mysql>GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.1.225' IDENTIFIED BY 'slave';

    2.2 配置Master

    # vi /etc/my.cnf

    确保mysqld下面有如下配置:

    [mysqld] 
    
    port = 3306
    
    server-id = 1
    
    log_bin = mysql-bin
    
    socket = /tmp/mysql.sock 
    
    skip-locking 
    
    key_buffer_size = 16M 
    
    max_allowed_packet = 1M 
    
    table_open_cache = 64 
    
    sort_buffer_size = 512K 
    
    net_buffer_length = 8K 
    
    read_buffer_size = 256K 
    
    read_rnd_buffer_size = 512K 
    
    myisam_sort_buffer_size = 8M 
    
    binlog_format=ROW 
    
    log-slave-updates 
    
    sync_binlog=1 
    
    auto_increment_increment=2 
    
    auto_increment_offset=1

    server_id: 必须配置,且不能与slave的server_id相同

    log_bin: 开启二进制日志

    保存并退出,重启master

    service mysqld restart

    进入sql控制台,运行命令SHOW MASTER STATUS或者show master statusG

    image

    2.3 配置Slave

    在Slave机器上

    # vi /etc/my.cnf

    [mysqld] 
    
    port = 3306
    
    server-id = 2
    
    log_bin = mysql-bin
    
    relay_log         = mysql-relay-bin
    log_slave_updates = 1
    read_only         = 1

    server_id: 必须配置,且不能与slave的server_id相同

    log_bin: 开启二进制日志

    relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志(后面会看到它的用处)

    保存并重启slave

    2.4 开始复制

    让slave连接master

    mysql>CHANGE MASTER TO MASTER_HOST='192.168.1.227',MASTER_USER='slave',MASTER_PASSWORD='slave',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=106;

    注意红色部分

    MASTER_LOG_FILE对应master的file

    MASTER_LOG_POS对应master的Position

    运行命令:mysql>show slave statusG

    image

    Slave_IO_State, Slave_IO_Running, 和Slave_SQL_Running表明slave还没有开始复制过程。日志的位置为4而不是0,这是因为0只是日志文件的开始位置,并不是日志位置。实际上,MySQL知道的第一个事件的位置是4。

    开始复制,运行命令:mysql> START SLAVE;

    image

    Slave_IO_Running, 和Slave_SQL_Running都是yes,表示启动成功

    在master上执行sql操作

    mysql>use test;
    
    mysql>create table test1(id int,name varchar(20));
    
    mysql>insert into test1 values(1,'2');

    在slave上查看

    image

    说明复制成功了。

  • 相关阅读:
    洛咕11月月赛部分题解 By cellur925
    POJ 2411 Mondriaan's Dream 【状压Dp】 By cellur925
    Luogu P1637 三元上升子序列【权值线段树】By cellur925
    Luogu P1438无聊的序列【线段树/差分】By cellur925
    Luogu P1558 色板游戏【线段树/状态压缩】By cellur925
    Luogu P4403 [BJWC2008]秦腾与教学评估【二分答案】By cellur925
    Luogu P3941 入阵曲【前缀和】By cellur925
    查询事件状态,mysql查看事件是否开启,设置启动时自动开启方法
    Logback详细整理,基于springboot的日志配置
    使用release自动打包发布正式版详细教程
  • 原文地址:https://www.cnblogs.com/tangyanbo/p/4290785.html
Copyright © 2011-2022 走看看