zoukankan      html  css  js  c++  java
  • linux下mysql主从配置

    还可以参考:https://www.cnblogs.com/Halifa/archive/2016/08/23/5799566.html

    一、主服务器相关配置

      1、创建同步账户并指定服务器地址

    [root@localhost ~]mysql -uroot -p
    mysql>use mysql
    mysql>grant replication slave on *.* to 'testuser'@'192.168.1.102' identified by '12345678';
    mysql>flush privileges; #刷新权限

      授权用户testuser只能从192.168.1.102这个地址访问主服务器192.168.1.101的数据库,并且只具有数据库备份的权限

      2、修改/etc/my.cnf配置文件vi /etc/my.cnf

    [mysqld]下添加以下参数,若文件中已经存在,则不用添加
    server-id=1  
    log-bin=mysql-bin  #启动MySQL二进制日志系统,
    binlog-do-db=ourneeddb  #需要同步的数据库
    binlog-ignore-db=mysql  #不同步mysql系统数据库,若还有其它不想同步的,继续添加
    [root@localhost ~]/etc/init.d/mysqld restart #重启服务

      3、查看主服务器master状态(注意File与Position项,从服务器需要这两项参数)

    mysql> show master status;
    +------------------+----------+--------------+------------------+
    | File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000012 |      120 | ourneeddb| mysql            |
    +------------------+----------+--------------+------------------+

      4、导出数据库

      导出数据库之前先锁定数据库

      flush tables with read lock;    #数据库只读锁定命令,防止导出数据库的时候有数据写入

      unlock tables; #解除锁定

      导出数据库结构及数据:mysqldump -uroot -p ourneeddb > /home/ourneeddb.sql

      导出存储过程及函数 :mysqldump -uroot -p -ntd -R ourneeddb > ourneeddb_func.sql

      tips:-ntd导出存储过程、-R导出函数

     二、从服务器相关配置

      1、修改/etc/my.cnf配置文件vi /etc/my.cnf

    [mysqld]下添加以下参数,若文件中已经存在,则不用添加
    server-id=2  #设置从服务器id,必须于主服务器不同
    log-bin=mysql-bin  #启动MySQ二进制日志系统
    replicate-do-db=ourneeddb  #需要同步的数据库名
    replicate-ignore-db=mysql  #不同步mysql系统数据库
    [root@localhost~ ]/etc/init.d/mysqld restart #重启服务

      2、导入数据库

      导入过程这里不做阐述

       3、配置主从同步

    [root@localhost~ ]mysql -uroot -p
    mysql>use mysql 
    mysql>stop slave;
    mysql>change master to
          master_host='192.168.1.101',
          master_user='testuser',
          master_password='12345678',
          master_log_file='mysql-bin.000012',
          master_log_pos=120;  #log_file与log_pos是主服务器master状态下的File与Position
    mysql>start slave;
    mysql>show slave statusG;

    *************************** 1. row ***************************
    Slave_IO_State: Waiting for master to send event
    Master_Host: 192.168.1.101
    Master_User: testuser
    Master_Port: 3306
    Connect_Retry: 60
    Master_Log_File: mysql-bin.000012
    Read_Master_Log_Pos: 120
    Relay_Log_File: orange-2-relay-bin.000003
    Relay_Log_Pos: 283
    Relay_Master_Log_File: mysql-bin.000012
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    Replicate_Do_DB: orange
    Replicate_Ignore_DB: mysql,test,information_schema,performance_schema
    Replicate_Do_Table:
    Replicate_Ignore_Table:
    Replicate_Wild_Do_Table:
    Replicate_Wild_Ignore_Table:
    Last_Errno: 0
    Last_Error:
    Skip_Counter: 0
    Exec_Master_Log_Pos: 120
    Relay_Log_Space: 1320
    Until_Condition: None
    Until_Log_File:
    Until_Log_Pos: 0
    Master_SSL_Allowed: No
    Master_SSL_CA_File:
    Master_SSL_CA_Path:
    Master_SSL_Cert:
    Master_SSL_Cipher:
    Master_SSL_Key:
    Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
    Last_IO_Errno: 0
    Last_IO_Error:
    Last_SQL_Errno: 0
    Last_SQL_Error:
    Replicate_Ignore_Server_Ids:
    Master_Server_Id: 1
    Master_UUID: 773d2987-6821-11e6-b9e0-00163f0004f9
    Master_Info_File: /home/mysql/master.info
    SQL_Delay: 0
    SQL_Remaining_Delay: NULL
    Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
    Master_Retry_Count: 86400
    Master_Bind:
    Last_IO_Error_Timestamp:
    Last_SQL_Error_Timestamp:
    Master_SSL_Crl:
    Master_SSL_Crlpath:
    Retrieved_Gtid_Set:
    Executed_Gtid_Set:
    Auto_Position: 0  

    注意查看Slave_IO_Running: Yes  Slave_SQL_Running: Yes 这两项必须为Yes 以及Log_File、Log_Pos要于master状态下的File,Position相同

    如果都是正确的,则说明配置成功!

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    常见错误原因:

    https://www.linuxidc.com/Linux/2012-03/57708.htm

    https://blog.csdn.net/jasontech/article/details/39435873

    1从服务器配置下列两项,一定要跟主服务器一致

       master_log_file='mysql-bin.000012',
          master_log_pos=120;  #log_file与log_pos是主服务器master状态下的File与Position

    2  报错 Slave_IO_Running: NO

    (1)

    这个错误就是IO 进程没连接上  ,想办法连接上把 把与主的POS 号和文件一定要对,然后重新加载下数据。具体步骤:

    stop   slave ;
    change master to master_host='IP地址',master_user='club',master_password='mima ',master_log_file='mysqld-bin.000048',MASTER_LOG_POS=396549485;
    注:master_log_file='mysqld-bin.000048',MASTER_LOG_POS=396549485;是从主的上面查出 来的 :show master statusG;

    LOAD DATA FROM MASTER; 

    load data from master;

    start   slave ;

    (2)查看主数据库错误日志 查找原因

    [ERROR] Slave I/O: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593

      我是在虚拟机下 两台机子克隆复制  所以两台机子中配置文件中uuid一致  随机修改一下 就解决了

     错误原因:由于主机和备机的UUID一致
    解决方法:修改UUID保证主备机不一致  到安装目录data下的auto.cnf  修改uuid即可(cd   /usr/local/mysql/data)

  • 相关阅读:
    02-线性结构1 两个有序链表序列的合并
    ScSPM
    中国大学MOOC-陈越、何钦铭-数据结构-笔记
    01-复杂度1 最大子列和问题(剑指offer和PAT)
    Matlab中配置VLFeat
    循环队列实现
    对于利用pca 和 cca 进行fmri激活区识别的理解
    对于利用ica进行fmri激活区识别的理解
    利用spm提供的MoAEpilot听觉数据学习预处理以及单被试glm分析与统计推断
    fsl的feat软件分包使用笔记
  • 原文地址:https://www.cnblogs.com/llhhll/p/9268479.html
Copyright © 2011-2022 走看看