zoukankan      html  css  js  c++  java
  • linux下mysql主从复制搭建


    目标:搭建两台MySQL服务器,一台作为主服务器,一台作为从服务器,实现主从复制

    环境:
      主数据库: 192.168.1.1
      从数据库: 192.168.1.2

      mysql安装可参考:https://www.cnblogs.com/merely/p/9714681.html

    配置步骤:

    1、保证两个数据库中的库和数据是一致的;

    2、在主数据中创建一个同步账号(可不创建使用现有的),如果仅仅为了主从复制创建账号,只需要授予REPLICATION SLAVE权限。
    1)、创建一个账号,账号:master 密码: 123456

    CREATE USER 'master'@'%' IDENTIFIED BY '123456';
    GRANT REPLICATION SLAVE ON *.* TO 'master'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

    3、配置主数据库
    1)要主数据库,你必须要启用二进制日志(binary logging),并且创建一个唯一的Server ID,这步骤可能要重启MySQL。
    2)主服务器发送变更记录到从服务器依赖的是二进制日志,如果没启用二进制日志,复制操作不能实现(主库复制到从库)。
    3)复制组中的每台服务器都要配置唯一的Server ID,取值范围是1到(232)−1,你自己决定取值。
    4)配置二进制日志和Server ID,你需要关闭MySQL和编辑my.cnf或者my.ini文件,在 [mysqld] 节点下添加配置。
    5)下面是启用二进制日志,日志文件名以“mysql-bin”作为前缀,Server ID配置为1,如下:

    [mysqld]
    log-bin=mysql-bin
    server-id=1
    #网络上还有如下配置
    #binlog-do-db=mstest //要同步的mstest数据库,要同步多个数据库,就多加几个replicate-db-db=数据库名 
    #binlog-ignore-db=mysql //要忽略的数据库
    innodb_flush_log_at_trx_commit=1
    sync_binlog=1

    4、重启mysql

    5、查看主服务器状态:

    cd /usr/local/mysql/bin
    ./mysql -uroot -p
    mysql> show master status;

    注意:记录好File和Position,后面要用

    6、配置从数据库:
    1)从服务器,同理,要分配一个唯一的Server ID,需要关闭MySQL,修改好后再重启,如下:

    [mysqld]
    server-id=2
    #可以指定要复制的库
    replicate-do-db=test-xxx #在master端不指定binlog-do-db,在slave端用replication-do-db来过滤
    replicate-ignore-db=mysql #忽略的库
    #网上还有下面配置
    #relay-log=mysqld-relay-bin

    2)配置连接主服务器的信息:
    进入sqlplus:

    cd /usr/local/mysql/bin
    ./mysql -uroot -p
    mysql> stop slave;
    mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.1.1',
    -> MASTER_USER='master',
    -> MASTER_PASSWORD='123456',
    -> MASTER_PORT=3309,
    -> MASTER_LOG_FILE='mysql-bin.000001',
    -> MASTER_LOG_POS=154;
    mysql> start slave;

    3)查看状态

    mysql> show slave status G;
           Slave_IO_State: Waiting for master to send event
              Master_Host: 192.168.1.1
              Master_User: master
              Master_Port: 3309
            Connect_Retry: 60
          Master_Log_File: mysql-bin.000001
      Read_Master_Log_Pos: 2950
           Relay_Log_File: localhost-relay-bin.000007
            Relay_Log_Pos: 320
    Relay_Master_Log_File: mysql-bin.000001
         Slave_IO_Running: Yes
        Slave_SQL_Running: Yes
          Replicate_Do_DB: test-xxx
      Replicate_Ignore_DB: mysql
            ...
    Seconds_Behind_Master: 0 #表示已同步
            ...

    4)若 Slave_SQL_Running: no 请重复执行以下内容,直至yes:

    stop slave;
    set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
    start slave;

    参考的资料:

      1、https://blog.csdn.net/envon123/article/details/76615059
      2、https://blog.csdn.net/xiaoxinla/article/details/7679578



      世间万物
          花是花,草是草,你是你,我是我
              只要拥有这样的自由,满心才是欢喜



  • 相关阅读:
    s:set标签
    Oracle创建表语句(Create table)语法详解及示例
    jsp:useBean
    四则运算练习
    Navicat Premium无法连上ORACLE数据库的几种问题解决方法
    Ubuntu开机等待5分钟的取消方法
    Ubuntu内网、外网网络IP地址配置
    eclipse中常用的快捷键汇总
    oracle死锁进程及杀死死锁进程
    oracle导入导出表数据
  • 原文地址:https://www.cnblogs.com/merely/p/9714827.html
Copyright © 2011-2022 走看看