• mysql搭建主从


    1、主从服务器分别作以下操作:

      1.1、版本一致
      1.2、初始化表,并在后台启动mysql
      1.3、修改root的密码
     
    数据库内容也要保证数据一致 //否则报错, Slave_SQL_Running: No Last_Errno: 1146 Last_Error: Error 'Table等错误

    2、修改主服务器master:

       #vi /etc/my.cnf
           [mysqld]
           log-bin=mysql-bin   //[必须]启用二进制日志
           server-id=222      //[必须]服务器唯一ID,默认是1,一般取IP最后一段, 我喜欢给主1,给从其他的

    3、修改从服务器slave:

       #vi /etc/my.cnf
           [mysqld]
           log-bin=mysql-bin   //[不是必须]启用二进制日志
           server-id=226      //[必须]服务器唯一ID,默认是1,一般取IP最后一段

    4、重启两台服务器的mysql

      /etc/init.d/mysql restart   //并不是很喜欢这种方式

    我更喜欢/usr/local/bin/...启动, 杀进程结束

    5、在主服务器上建立帐户并授权slave:

     mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; 

    具体看上一个博客里面有解释, 这里注意, 两个服务器都要给授权, 而且容易出现10038情况, MySQL目录里面有,可以参考
    1. 两个服务器都要给授权
    2. 都要改初始密码
    3. 记得刷新 flash ...

    6、登录主服务器的mysql,查询master的状态

       mysql>show master status;
       +------------------+----------+--------------+------------------+
       | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
       +------------------+----------+--------------+------------------+
       | mysql-bin.000004 |      308 |              |                  |
       +------------------+----------+--------------+------------------+
       1 row in set (0.00 sec)
       注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

    7、配置从服务器Slave:

       mysql>change master to master_host='127.0.0.1',master_user='root',master_password='python123', master_log_file='mysql-bin.000024',master_log_pos= 327, master_port=3306;    //注意不要断开,308数字前后无单引号。
    
       Mysql>start slave;    //启动从服务器复制功能  停止怎么执行命令呢? stop slave;

    参数参考

    CHANGE MASTER TO option [, option] ...
     
     
    option:
        MASTER_BIND = 'interface_name'
      | MASTER_HOST = 'host_name'
      | MASTER_USER = 'user_name'
      | MASTER_PASSWORD = 'password'
      | MASTER_PORT = port_num
      | MASTER_CONNECT_RETRY = interval
      | MASTER_RETRY_COUNT = count
      | MASTER_DELAY = interval
      | MASTER_HEARTBEAT_PERIOD = interval
      | MASTER_LOG_FILE = 'master_log_name'
      | MASTER_LOG_POS = master_log_pos
      | MASTER_AUTO_POSITION = {0|1}
      | RELAY_LOG_FILE = 'relay_log_name'
      | RELAY_LOG_POS = relay_log_pos
      | MASTER_SSL = {0|1}
      | MASTER_SSL_CA = 'ca_file_name'
      | MASTER_SSL_CAPATH = 'ca_directory_name'
      | MASTER_SSL_CERT = 'cert_file_name'
      | MASTER_SSL_CRL = 'crl_file_name'
      | MASTER_SSL_CRLPATH = 'crl_directory_name'
      | MASTER_SSL_KEY = 'key_file_name'
      | MASTER_SSL_CIPHER = 'cipher_list'
      | MASTER_SSL_VERIFY_SERVER_CERT = {0|1}
      | IGNORE_SERVER_IDS = (server_id_list)
     
     
    server_id_list:
        [server_id [, server_id] ... ]

    8、检查从服务器复制功能状态:

     mysql> show slave statusG
       *************************** 1. row ***************************
    
                  Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.2.222  //主服务器地址
                  Master_User: mysync   //授权帐户名,尽量避免使用root
                  Master_Port: 3306    //数据库端口,部分版本没有此行
                  Connect_Retry: 60
                  Master_Log_File: mysql-bin.000004
                  Read_Master_Log_Pos: 600     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
                  Relay_Log_File: ddte-relay-bin.000003
                  Relay_Log_Pos: 251
                  Relay_Master_Log_File: mysql-bin.000004
                  Slave_IO_Running: Yes    //此状态必须YES    ---》 这两步很关键
                  Slave_SQL_Running: Yes     //此状态必须YES    ----》 这两步很关键

     这不就有问题了,两个服务器数据不一致造成的

     注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

    以上操作过程,主从服务器配置完成。

    9、主从服务器测试:

     主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:

     mysql> create database hi_db;
      Query OK, 1 row affected (0.00 sec)
    
      mysql> use hi_db;
      Database changed
    
      mysql>  create table hi_tb(id int(3),name char(10));
      Query OK, 0 rows affected (0.00 sec)
     
      mysql> insert into hi_tb values(001,'bobu');
      Query OK, 1 row affected (0.00 sec)
    
      mysql> show databases;
       +--------------------+
       | Database           |
       +--------------------+
       | information_schema |
       | hi_db                |
       | mysql                |
       | test                 |
       +--------------------+
       4 rows in set (0.00 sec)
    View Code

    从服务器Mysql查询:

      mysql> show databases;
    
       +--------------------+
       | Database               |
       +--------------------+
       | information_schema |
       | hi_db                 |       //I'M here,大家看到了吧
       | mysql                 |
       | test          |
    
       +--------------------+
       4 rows in set (0.00 sec)
    
       mysql> use hi_db
       Database changed
       mysql> select * from hi_tb;           //查看主服务器上新增的具体数据
       +------+------+
       | id   | name |
       +------+------+
       |    1 | bobu |
       +------+------+
       1 row in set (0.00 sec)
     
    View Code

    10、注意一个地方, 就是配置文件,一定要注意

    binlog_format=row --两个要都是row, 这个导致主从不同步

    11、完成

  • 相关阅读:
    浅谈display:flex
    MVVM
    HDFS 伪分布式集群搭建
    HDFS入门
    Hadoop-HDFS
    Hadoop介绍
    大数据-高并发Nginx
    大数据-高并发LVS3Keepalived
    大数据-高并发LVS2实验
    大数据-高并发LVS1
  • 原文地址:https://www.cnblogs.com/renfanzi/p/9771622.html
Copyright © 2020-2023  润新知