zoukankan      html  css  js  c++  java
  • MySQL 主主配置

    一、准备

    1、两个数据库版本最好保持一致(因为官方就是这么建议的,主要的问题就是考虑到兼容性问题)

    2、连个数据库的数据保持一致,若不一致,可手动调整,比如A比B多一个库,那就将这个库导入到B库,达到一致

    A数据库:182.92.172.80

    B数据库:123.57.44.85

    二、操作

      A数据库

    1、开启binlog

    [mysqld]
    log-bin=mysql-bin #开启二进制日志
    server-id=1 #设置server-id,不能一样
    

    2、重启mysql,创建同于同步的用户账号

    systemctl restart mysql
    

     登陆数据库

    mysql -u root -p
    

     创建用户并授权:用户:test,密码:123456,ip:B主机的ip

    create user 'test'@'123.57.44.85' identified by '123456';
    

     分配权限

    grant replication slave on *.* to 'test'@'123.57.44.85';
    flush privileges;
    

     锁表,禁止写入,当前窗口不能退出,这时候开启另一个终端继续操作

    flush table with read lock;
    

     3、新窗口操作,查看master状态,记录二进制文件名和位置

    show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000003 |     1042 |              |                  |
    +------------------+----------+--------------+------------------+
    

     4、将当前数据库导出,如果两个数据库不一致,手动调整

     mysqldump -u root -p --all-databases > alldb.sql
    

     5、解锁查看binlog日志位置,如果没变化证明锁定成功。从库将从这个binlog日志开始恢复

    unlock tables;
     show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000003 |     1042 |              |                  |
    +------------------+----------+--------------+------------------+
    

       B数据库操作

    1、导入数据

    mysql -u root -p < alldb.sql 
    

     2、修改配置文件

    [mysqld]
    log-bin=mysql-bin #开启二进制日志
    server-id=2 #设置server-id,必须唯一
    

     3、重启mysql,配置同步

    systemctl restart mysql
    

     需要A服务器主机名,登陆凭证,二进制文件名称和位置

    change master to master_host='182.92.172.80',
        -> master_user='test',
        -> master_password='123456',
        -> master_log_file='mysql-bin.000003',
        -> master_log_pos=1024;
    #master_log_pos位置最好在 mysql-bin.000003里面找,用下面这个命令
    #mysqlbinlog mysql-bin.000003 > test.txt
    

     4、开启slave,查看slave状态

    start slave;
    show slave statusG;
    

    5、配置作为A的主

     创建用户并授权:用户:test,密码:123456,ip:A主机的ip

    create user 'test'@'182.92.172.80' identified by '123456';
    

     分配权限

    grant replication slave on *.* to 'test'@'182.92.172.80';
    flush privileges;
    

     这次不用锁表了,因为B在同步A数据的时候,已经一致了。

    6、新窗口操作,查看master状态,记录二进制文件名和位置

    show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000003 |     1042 |              |                  |
    +------------------+----------+--------------+------------------+
    

       A数据库操作

    1、需要B服务器主机名,登陆凭证,二进制文件名和位置

    change master to master_host='123.57.44.85',
        -> master_user='test',
        -> master_password='123456',
        -> master_log_file='mysql-bin.000003',
        -> master_log_pos=1024;
    #master_log_pos位置最好在 mysql-bin.000003里面找,用下面这个命令
    #mysqlbinlog mysql-bin.000003 > test.txt
    

     2、开启查看slave状态

    start slave;
    show slave statusG;
    
  • 相关阅读:
    C# 之 读取Word时发生 “拒绝访问” 及 “消息筛选器显示应用程序正在使用中” 异常的处理
    sctp和tcp的区别
    kmalloc/kfree,vmalloc/vfree函数用法和区别
    C语言中volatile关键字的作用
    嵌入式开发之NorFlash 和NandFlash
    linux中断--中断嵌套&中断请求丢失
    Linux 套接字编程中的 5 个隐患
    socket编程中write、read和send、recv之间的区别
    HTTP/1.1 Range和Content-Range
    探讨read的返回值的三种情况
  • 原文地址:https://www.cnblogs.com/charon2/p/10471899.html
Copyright © 2011-2022 走看看