mariadb/mysql 데이터베이스 주종 동기화 구조 구축
5966 단어 데이터베이스
주종 복사를 사용할 때, 테이블에 대한 모든 쓰기는 주 서버에서 해야 합니다.서버에서의 쓰기 작업은 다른 서버에 동기화할 수 없습니다. 사용자가 서버에서 데이터를 쓰는 것을 피하기 위해서는 전방에서 읽기와 쓰기 분리를 스케줄링해야 합니다.
1. 실험 환경
1) 두 대의centos7.2 시스템의 가상 머신, 네트워크가 서로 통하고 메인 라이브러리가 있는 가상 머신의 방화벽이 닫힌다(방화벽은 라이브러리가 있는 클라우드 호스트에서 메인 라이브러리 데이터베이스에 접근하는 데 영향을 줄 수 있음)
2) 두 대의 가상 기기에 설치된 데이터베이스 버전이 모두 일치하고 본 실험은mariadb-server-5.56-2이다.
주 라이브러리가 있는 가상 기기 IP 주소: 192.168.2.205
라이브러리에 있는 가상 기기 IP 주소: 192.168.2.150
2. 구축 절차
1. 홈 라이브러리가 있는 가상 시스템의 작업
1) mariadb 데이터베이스 설정 수정, 설정 수정 후 서비스 재시작
[[email protected] ~]#vim /etc/my.cnf.d/server.cnf
[mysqld]
server_id=1 # ID
log_bin=log-bin #
skip_name_resolve=on # 。 CentOS 6 mysql =on
innodb_file_per_table=on #innodb
2) 라이브러리 연결에서 홈 라이브러리를 복사하는 사용자 만들기
[[email protected] ~]#mysql
MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave_account'@'192.168.2.205' IDENTIFIED BY '123123';
Query OK, 0 rows affected (0.00 sec) #
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
2. 라이브러리에 있는 가상 머신의 작업
1) mariadb 데이터베이스 설정을 수정하고 다시 시작하면 적용됩니다.
[[email protected] ~]#vim /etc/my.cnf.d/server.cnf
[mysqld]
server_id=2
relay_log=relay-log # 。 relay-kog.info 。
read_only=on # , 。
2) 글로벌 잠금 추가
:
mysql> FLUSH TABLES WITH READ LOCK;
3) 서비스 시작:
주 서버의 주소와 주 서버를 연결하는 사용자 이름과 비밀번호를 설정하고 서버의 바이너리 파일의 위치부터 복사하도록 지정합니다.
CHANGE MASTER TO MASTER_HOST='192.168.2.205',MASTER_USER='slave_account',MASTER_PASSWORD='123123',MASTER_LOG_FILE='log-bin.000004',MASTER_LOG_POS=2726;
참고: 현재 라이브러리가 있는 바이너리 파일과 위치를 가져오려면 라이브러리가 있는 가상 시스템에서 다음 명령을 실행해야 합니다.
MariaDB [(none)]> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| log-bin.000004 | 2726| | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
이 설정은 데이터 디렉터리에 저장된 가마스터입니다.info 파일 내
MariaDB [(none)]> START SLAVE; # SLAVE
# ,IO_THREAD ,SQL_THREAD , 。
MariaDB [(none)]> SHOW SLAVE STATUS\G; #
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.2.205
Master_User: slave_account
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: log-bin.000004
Read_Master_Log_Pos: 2726
Relay_Log_File: relay-log.000002
Relay_Log_Pos: 727
Relay_Master_Log_File: log-bin.000004
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:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 2726
Relay_Log_Space: 1015
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
1 row in set (0.00 sec)
참고: 위의 그림에서 Slave_IO_Running은 복제 루틴, Slave_SQL_TRunning은 리셋 라인입니다.이 두 라인은 반드시 RUNNING 상태에 있어야 한다.
테스트
홈 라이브러리 작업:
MariaDB [mydb]> create database mydb; #
MariaDB [mydb]> use mydb;
MariaDB [mydb]> create table test1 (id int,neme char(100));
MariaDB [mydb]> insert into test1 values (1,'Xiao XXXX');
MariaDB [mydb]> select * from test1;
+------+-----------+
| id | neme |
+------+-----------+
| 1 | Xiao XXXX |
+------+-----------+
1 row in set (0.00 sec)
관찰 라이브러리:
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
MariaDB [(none)]> select * from mydb.test1;
+------+----------+
| id | neme |
+------+----------+
| 1 | Xiao XXX |
+------+----------+
테스트 증명mariadb 데이터베이스 주종 구조 구축 성공!
보충설명---만난 구덩이 및 해결 방법
1. 라이브러리에서 동기화를 설정할 때 다음과 같은 오류를 보고합니다.
ERROR 1201 (HY000): Could not initialize master info structure .
이 오류가 발생한 이유는 라이브러리에서 이미 주종 복사를 했기 때문에 먼저 라이브러리에서 멈추고 라이브러리에서 동기화 설정을 해야 합니다.
MariaDB [(none)]> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
MariaDB [(none)]> reset slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
2. mariadb 데이터베이스 사용자 삭제
MariaDB [(none)]> SELECT User, Host, Password FROM mysql.user;
MariaDB [(none)]> drop user zhangsan@'%';
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SQLite의 query로 망설임이것은 내가 처음 안드로이드 응용 프로그램 개발에서 망설이고, 그 후 해결 된 방법을 비망록으로 철자하고 있습니다. java에서 SQLite를 이용한 애플리케이션을 작성하는 동안 EditText에 입력된 item이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.