美文网首页数据库技术
mysql Replication集群搭建方法

mysql Replication集群搭建方法

作者: 一生悬命Cat | 来源:发表于2019-03-16 14:47 被阅读15次

    1.在master 和 slave 上分别设置允许远程连接

    mysql> use mysql;
    mysql>  grant all privileges on *.* to root@'%'identified by 'password';
    mysql> flush privileges;
    

    2.在Master数据库上创建一个test用户并进行授权,用于slave机器访问master数据库

    mysql> create user 'test'@'%' identified by 'test';
    mysql> grant replication slave on *.* to test@'%' identified by 'test';
    mysql> flush privileges;
    
    如果出现授权失败
    请检查root用户有没有授权权限,再进行授权
    
    mysql> select host,user,grant_priv,Super_priv from mysql.user;
    +-----------+----------+------------+------------+
    | host      | user     | grant_priv | Super_priv |
    +-----------+----------+------------+------------+
    | 127.0.0.1 | root     | Y          | Y          |
    | localhost | root     | N          | Y          |
    | 10.0.3.%  | repluser | N          | N          |
    +-----------+----------+------------+------------+
    3 rows in set (0.00 sec)
    
    可以看到localhost的grant_priv的值为N,也就是说root用户不能授权给其他用户,所以我们需要把这个值改为Y
    
    mysql> update mysql.user set grant_priv='N' where host='localhost';
    Query OK, 0 rows affected (0.00 sec)
    Rows matched: 1  Changed: 0  Warnings: 0
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    

    3.修改master 配置 (/etc/my.cnf)

    [mysqld]
    server-id=1                # 唯一ID
    log-bin=mysql-bin          # 指定日志文件
    binlog-do-db=TestDB        # 需要同步的数据库
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    重启数据库
    service mysqld restart
    

    4.修改Slave数据库配置(/etc/my.cnf)

    [mysqld]
    server-id=2     # 唯一ID
    read_only=1     # 设置Slave库只读
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql 
    
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    重启数据库
    service mysqld restart
    

    5.设置slave节点replication指向master

    change master to  
    master_host='xx.xx.xx.xx', //master IP
    master_user='test',  
    master_password='test',
    master_port=3306,  
    master_log_file='mysql-bin.000001',
    //master_log_file表示Master数据库中的log文件名,通过SHOW MASTER STATUS查询;
    master_log_pos=0, 
     //master_log_pos 表示需要同步的二进制偏移量 ,0表示全部重新同步;
    master_connect_retry=10;
    
    启动
    mysql> start slave;
    

    6.查看状态

    查看master
    SHOW MASTER STATUS;
    查看slave
    SHOW SLAVE STATUS \G;
    
    如果出现
    Slave_SQL_Running: No状态
    1.程序可能在slave上进行了写操作
    2.也可能是slave机器重起后,事务回滚造成的.
    
    解决办法:
    mysql> stop slave ;
    mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
    mysql> start slave ;
    
    如果再不行,重启master,重新让slave连接master.
    (保证master与slave的数据库 表一致,因为没有赋予slave的建表权限)。
    
    

    相关文章

      网友评论

        本文标题:mysql Replication集群搭建方法

        本文链接:https://www.haomeiwen.com/subject/eacsmqtx.html