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;
    
  • 相关阅读:
    MyEclipse里运行时报错
    Django中Template does not exit
    Django简单界面开发
    Django安装过程
    搭建NFS服务器和客户端过程中遇到的问题
    URL传值中文乱码的解决
    结合《需求征集系统》谈MVC框架
    对于微信小程序登录的理解图
    FpSpread基本句法
    sql,lambda,linq语句
  • 原文地址:https://www.cnblogs.com/charon2/p/10471899.html
Copyright © 2011-2022 走看看