zoukankan      html  css  js  c++  java
  • Linux下 MYSQL 主从复制、同步

    mysql从3.23.15版本以后提供数据库复制功能。利用该功能可以实现两个数据库同步,主从模式(A->B),互相备份模式(A<=>B)的功能。

    主从模式(A->B)的配置过程:

    假设数据库A为主机、B为从机:
    A机器:
    IP = 192.168.1.101
    B机器:
    IP = 192.168.1.102

    为了方便测试,分别在主机A、从机B,MYSQL中添加以下数据库以及表:

    主机A中:

        CREATE DATABASE backup_db; 
    
        USE backup_db; 
    
        CREATE TABLE `backup_table` ( 
    
        `id` int(11) NOT NULL auto_increment, 
    
        `name` varchar(20) character set utf8 NOT NULL, 
    
        `sex` varchar(2) character set utf8 NOT NULL, 
    
        PRIMARY KEY (`id`) 
    
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    从机B中:

    CREATE DATABASE backup_db; 
    
    USE backup_db; 
    
    CREATE TABLE `backup_table` ( 
    
    `id` int(11) NOT NULL auto_increment, 
    
    `name` varchar(20) character set utf8 NOT NULL, 
    
    `sex` varchar(2) character set utf8 NOT NULL, 
    
    PRIMARY KEY (`id`) 
    
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    1, 配置主机A的MYSQL配置文件、Linux下路径一般为:/etc/my.cnf,在配置文件中添加以下内容:

    server-id=1

    log-bin=/var/lib/mysql/mysqlback.log #同步事件的日志记录文件

    binlog-do-db=backup_db #提供数据同步服务的数据库

    2, 配置从机B的MYSQL配置文件、Linux下路径一般为:/etc/my.cnf,在配置文件中添加以下内容:

    server-id=2

    master-host=192.168.1.101 #主机A的地址

    master-user=root #主机A提供给B的用户,该用户中需要包括数据库backup_db的权限

    master-password=password #访问密码

    master-port=3306 #端口,主机的MYSQL端口

    master-connect-retry=60 #重试间隔60秒

    replicate-do-db=backup_db #同步的数据库

    注意:上面的配置,只适应MySQL5.5以前版本的,MySQL5.5以及之后的版本需要如下配置:

    需要在从机B的MYSQL命令行执行:

    change master to master_host='192.168.1.101', master_user='root', master_password='password';

    #master_host='192.168.1.101' 主机A的地址

    #master_user='root' 主机A提供给B的用户,该用户中需要包括数据库backup_db的权限

    #master_password='password' 访问密码

    3, 完成了以上配置之后,将A的mysql数据的权限给B

    需要在主机A的MYSQL命令行执行:

    grant replication slave on *.* to 'root'@'192.168.1.102' identified by 'password';

    #'root'@'192.168..1.102' 从机B的的用户以及地址

    #identified by 'passw0rd' 其中 'password'为从机B的密码

    4, 重启AB数据库,后:

    B机器:

    mysql>start slave; #开启主从复制,stop slave; 为关闭主从复制

    查看同步配置情况

    A机器:

    mysql>show master status G;

    B机器:

    mysql>show slave status G;

     

    5, 在主机A数据库表中插入数据,看是否复制到从机B数据库表中,如果发现没有复制过去,可以查看mysql错误日志,根据错误提示调试,直至复制成功。

    mysql错误日志的路径可以通过mysql命令查看:

    mysql> show variables like 'log_error';
    +---------------+--------------------------+
    | Variable_name | Value                    |
    +---------------+--------------------------+
    | log_error     | /var/lib/mysql/mysql.err |
    +---------------+--------------------------+

    /var/lib/mysql/mysql.errmysql错误日志的路径

     

    互相备份模式(A<=>B)的配置,重复上面的1-5步骤即可,不同的是调换AB的主从,即B为主机、A为从机。

  • 相关阅读:
    INI配置文件的格式
    MFC的DLL中实现定时器功能
    三维数组的动态申请与释放
    bat批处理,实现获取目录
    windows 系统变量
    php分享二十一:mysql语句
    php分享二十:mysql优化
    php分享十九:网络带宽预估
    php分享十七:http状态码
    从“什么是程序化购买”到“程序化购买+”
  • 原文地址:https://www.cnblogs.com/yuzhoushenqi/p/6970918.html
Copyright © 2011-2022 走看看