MariaDB 마스터 복제 구축

나의 github

ySQL 서버 설치

  • 데이터베이스 설치
  • yum install -y mariadb-server
  • 데이터베이스 초기화
  • mysql_secure_installation   #MySql , 
         root 
         
         
         
         root 
         test 
         
         PATH 
  • 데이터베이스를 시작합니다
  • systemctl start mariadb

    마스터 서버 기반 구축

  • 호스트 이름을 설정하면 현재 bash에서 적용됩니다
  • hostnamectl set-hostname mysql-master
    exec bash
  • 데이터베이스 만들기
  • MariaDB [(none)]> create database shuaiguoxia ;
    Query OK, 1 row affected (0.00 sec)
    
    MariaDB [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | shuaiguoxia        |
    | test               |
    +--------------------+
    5 rows in set (0.00 sec)
  • 테이블을 만듭니다
  • use shuaiguoxia;
    create table blog (name varchar(20),age int,sex varchar(10));
  • 표 구조를 보십시오
  • MariaDB [shuaiguoxia]> desc blog;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | name  | varchar(20) | YES  |     | NULL    |       |
    | age   | int(11)     | YES  |     | NULL    |       |
    | sex   | varchar(10) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
  • 테스트 데이터 삽입
  • insert into blog (name,age,sex) values ("guo",27,"nan");
    insert into blog (name,age,sex) values ("wu",33,"nan");
    insert into blog (name,age,sex) values ("cai",31,"nv");
    insert into blog (name,age,sex) values ("li",19,"nan");
    insert into blog (name,age,sex) values ("zhao",18,"nan");
    insert into blog (name,age,sex) values ("qian",25,"nv");

    주 서버 설정

  • 프로필 수정
  • vim /etc/my.cnf
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    server-id=10
    log-bin=mysql-bin
    relay-log=mysql-relay-bin
    replicate-wild-ignore-table=mysq.%
  • 블로그 시계에 자물쇠를 채우세요
  • mysql -u root -p
    
    use shuaiguoxia;
    
    MariaDB [shuaiguoxia]> lock tables blog read;
    Query OK, 0 rows affected (0.00 sec)
  • 메인 라이브러리에 이미 있는 데이터를 내보냅니다
  • mysqldump -u root -p -h 127.0.0.1 --database shuaiguoxia  > /bak.sql
    Enter password: 
    #  --dabatase 
  • 데이터를 노드에서 노드로 복사합니다
  • scp /bak.sql 192.168.1.175:/
  • 노드에서 주 노드에서 복사된 데이터를 가져옵니다
  • mysql -u root -p < /bak.sql
  • 노드에서 권한을 부여받은 사용자를 만듭니다
  • grant replication slave on *.* to 'slave_user'@'192.168.1.%' identified  by '1234'

    노드에서 구성

  • 호스트 이름을 설정하면 현재 bash에서 적용됩니다
  • hostnamectl set-hostname slave-master
    exec bash
  • 프로필을 설정합니다
  • [root@mysql-slave ~]# cat /etc/my.cnf
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    server-id=21
    log-bin=mysql-bin
    replicate-wild-ignore-table=mysql.%
  • 마스터의 마스터 상태를 확인합니다
  • #  master , 
    MariaDB [(none)]> show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000003 |     2900 |              |                  |
    +------------------+----------+--------------+------------------+
  • 노드에서 주 노드에서 복사된 데이터를 가져옵니다
  • #  , 
    mysql -u root -p < /bak.sql
  • 자동 복제를 설정합니다
  • #  master_log_file master_log_pos 
    
    MariaDB [(none)]> change master to \
    master_host='192.168.1.46',
    master_user='slave_user',
    master_password='1234',
    master_log_file='mysql-bin.000003',
    master_log_pos=2900;
  • 복제 시작
  • MariaDB [(none)]> start slave;
    Query OK, 0 rows affected (0.01 sec)
  • 복제 상태를 확인합니다
  • #  Slave_IO_Running  Slave_SQL_Running yes
    
    MariaDB [(none)]> show slave status\G;
    *************************** 1. row ***************************
                  Slave_IO_State: Waiting for master to send event
                     Master_Host: 192.168.1.46
                     Master_User: slave_user
                     Master_Port: 3306
                   Connect_Retry: 60
                 Master_Log_File: mysql-bin.000003
             Read_Master_Log_Pos: 3057
                  Relay_Log_File: mariadb-relay-bin.000002
                   Relay_Log_Pos: 686
           Relay_Master_Log_File: mysql-bin.000003
                Slave_IO_Running: Yes
               Slave_SQL_Running: Yes
                 Replicate_Do_DB: 
             Replicate_Ignore_DB: 
              Replicate_Do_Table: 
          Replicate_Ignore_Table: 
         Replicate_Wild_Do_Table: 
     Replicate_Wild_Ignore_Table: mysql.%
                      Last_Errno: 0
                      Last_Error: 
                    Skip_Counter: 0
             Exec_Master_Log_Pos: 3057
                 Relay_Log_Space: 982
                 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: 10
    1 row in set (0.00 sec)

    주종 실패의 흔한 원인

  • 네트워크 불통: 배열 네트워크, 포트
  • 사용자 암호가 잘못되었습니다. 마스터에서 만든 사용자 이름 암호를 확인하십시오
  • 사용자 권한이 잘못되었습니다. MySQL에서 한 사용자에 대한 ID는 다음과 같습니다.IP@username,
  • pos 아니오: 노드가 설정한 것부터pos가 주 노드에서 진행 중인pos인지 확인합니다
  • 바이너리 파일 시작이 잘못되었습니다. 노드에서 시작한 바이너리 파일이 주 노드 전체가 진행 중인 바이너리 비트 내에서 눌렀는지 확인하십시오
  • 방화벽 제한: 방화벽을 닫습니다

  • 노드에서 데이터 가져오기 실패

  • 마스터가 데이터를 내보낼 때 --databases 매개 변수를 추가합니다
  • mysqldump -u root -p -h 127.0.0.1 --database shuaiguoxia  > /bak.sql
    Enter password: 
    #  --dabatase 
  • 노드에서 데이터베이스를 가져오려면 mysql 명령을 사용해야 합니다
  • mysql -u root -p < /bak.sql

    좋은 웹페이지 즐겨찾기