zoukankan      html  css  js  c++  java
  • Mysql的实时同步

    设置方法:

    步一设

    A 服务服 (192.168.1.43) 上用户为 backup, 123456 , 同步的数据库为test;

    B 服务服 (192.168.1.23) 上用户为 root, 123456, 同步的数据库为test;

    步二配置 mysql.ini:

    A服务器

    #Replication master

    server-id = 10

    log-bin="E:MySQLlogsmysql_binary_log"//必须先创建这个文件

    binlog-do-db=test

    # Replication slave

    master-host="192.168.1.23"

    master-user=root

    master-password="123456"

    master-port=3306

    master-connect-retry=60

    replicate-do-db=test

    B服务器

    #Replication master

    server-id = 2

    log-bin="c:mysql5logsmysql_binary_log"

    binlog-do-db=test

    # Replication slave

    master-host="192.168.1.43"

    master-user=backup

    master-password=123456

    master-port=3306

    master-connect-retry=60

    replicate-do-db=test

    =============================================================

    解释:

    3)binlog-do-db=test 表示需要备份的数据库是test这个数据库,

    如果需要备份多个数据库,那么应该写多行,如下所示:

    binlog-do-db=backup1

    binlog-do-db=backup2

    binlog-do-db=backup3

    解释:

    1) server-id=2表示本机器的序号, A,B的server-id 不能相同;

    2)log-bin表示打开binlog,打开该选项才可以通过I/O写到Slave的relay-log,也是可以进行replication的前提;

    其中mysql_binary_log是日志文件的名称,mysql将建立不同扩展名,文件名为mysql_binary_log的几个日志文件.

    3) master-host="192.168.1.23" 表示A做slave时的master为192.168.1.23;

    4) master-user=root 这里表示master上开放的一个有权限的用户,使其可以从slave连接到master并进行复制;

    5) master-password=123456 表示授权用户的密码;

    6) master-port=3306 master上MySQL服务Listen3306端口;

    7) master-connect-retry=60 同步间隔时间;

    8) replicate-do-db=test 表示同步backup数据库;

    最后重新启动两台机器的mysql.

    ------------------------------------------------

    查看状态及调试

    1,查看master的状态

    SHOW MASTER STATUS;

    Position 不应为0

    2,查看slave的状态

    show slave status;

    Slave_IO_Running | Slave_SQL_Running 这两个字段应为 YES|YES.

    show processlist;

    会有两条记录与同步有关 state为 Has read all relay log; waiting for the slave I/O thread to update it

    和s Waiting for master to send event .

    3,错误日志

    MySQL安装目录dataHostname.err

    4,CHANGE MASTER TO

    如果A 的 Slave 未启动 ,Slave_IO_Running 为No.

    可能会是B的master 的信息有变化,

    查看B SHOW MASTER STATUS;

    记录下 File,Position 字段. 假设为'mysql_binary_log.000004',98 ;

    在A 下执行:

    Stop Slave;

    CHANGE MASTER TO

    MASTER_LOG_FILE = 'mysql_binary_log.000004',

    MASTER_LOG_POS = 98 ;

    Start Slave;

    5,SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n;

    如果A的Slave_SQL_Running 为No.

    Err文件中记录:

    Slave: Error 'Duplicate entry '1' for key 1' on query....

    可能是master 未向slave 同步成功,但slave中已经有了记录。造成的冲突.

    可以在A上执行

    SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n;

    跳过几步。再

    restart salve;

    就可以了。

  • 相关阅读:
    在C#中实现Python的分片技术
    如何将松散的dll打包进需要发布的exe
    Python基础学习(第8天)
    javascript中 的 + RegExp['x241'] 怎么理解
    CSS和JavaScript标签style属性对照表
    浏览器 怪异模式(Quirks Mode) 与 标准模式(Standards Mode)
    Javascript如何判断一个变量是数字类型?
    我的第一个jquery插件:下拉多选框
    javascript中===与==
    ztree高级实例(原创)
  • 原文地址:https://www.cnblogs.com/hookjoy/p/5006084.html
Copyright © 2011-2022 走看看