Mysql replication 진행중에 

 

 mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.1',
    -> MASTER_PORT=3306,
    -> MASTER_USER='replication',
    -> MASTER_PASSWORD='passwd',
    -> MASTER_LOG_FILE='mysql-bin.000005',
    -> MASTER_LOG_POS=327

Query OK, 0 rows affected (0.09 sec

 

mysql> start slave;
ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO

 

이런 에러가 났다.

 

진짜 별걸 다해봤는데 겨우 찾은 원인은 바로!!!


# vi /etc/my.cnf

-----------------------------------------------------

<Master>

server-id = 1

log-bin=mysql-bin
binlog-do-db = replication

-----------------------------------------------------

<Slave>

server-id = 2
replicate-do-db  = replication
master-host = 192.168.0.1 // master.server.ip.address
master-port = 3306
master-user = replication

master-password = passwd

-----------------------------------------------------

 

server-id = 1 / server-id = 2

서버 아이디 지정이 문제 였다.

설정파일 안에 넣어두고 mysql 을 재시작하면 당연히 잘 적용되는 줄 알았으나..

이상하게 적용이 안되고 있었다.

고로 지정이 안된상태로 슬레이브를 시작하려고 하니까 안됬던 거다.

 

왜 적용이 안됬을까...?

# vi /etc/my.cnf 파일 안에서

-----------------------------------------------------

[mysqld]

datadir=/data/mysql-data

socket=/var/lib/mysql/mysql.sock

.

중략

.

log-bin=mysql-bin

위치1


[mysqldump]

default-character-set = euckr


[mysql]

default-character-set = euckr


[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid


위치2

-----------------------------------------------------


설정을 위치1, 위치2 중에 어디다 써서 넣었음?

난.. 아무생각 없이 위치2에 넣었음..

그럼 당연히 적용안됨.. 기초중에 기초인데.. 그걸 아무생각없이 ㅠㅠ


무튼 위치1에다가 설정을 넣어야함.. 그래서 지금것 적용이 안되었던거임..



뭐... 각서버에서 따로 지정해줘도 됨

mysql> show variables like 'server_id';

mysql> set global server_id=1;

다음을 이용해서 수동으로 ID값을 1번, 2번 지정해준다.

 

mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id         | 1        |
+---------------+-------+
1 row in set (0.00 sec)

 

위치2에 다 넣고 보면 마스터, 슬레이브에서 입력해보면 둘다 1로 나온다.

 

여기서 포인트는 마스터쪽에 이미 server_id=1; 가 1로 지정이 되어있다고 해서

지칭을 안해주면 안먹힌다.

슬레이브는 2, 마스터는 1 을 꼭 따로 지정해줘야함

-----------------------------------------------------

mysql> set global server_id=1;

mysql> set global server_id=2;

-----------------------------------------------------

 

그다음에 슬레이브 시작하면!!!

 

mysql> CHANGE MASTER TO 
  -> MASTER_HOST='192.168.0.1',
  -> MASTER_PORT=3306,
  -> MASTER_USER='replication',
  -> MASTER_PASSWORD='passwd',
  -> MASTER_LOG_FILE='mysql-bin.000005',
  -> MASTER_LOG_POS=327

Query OK, 0 rows affected (0.09 sec

 

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

 

 

드디어 성공~!

 

mysql> SHOW SLAVE STATUS\G;

 *************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event

             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

 

 

Slave_IO_State: Waiting for master to send event

-> 아무내용도 안나왔는데 드디어 이벤트 대기중!!!

 

Slave_IO_Running: No

-> 연결안되면 처음에 No로 나와서 엄청 고생함 ㅎㅎㅎ

 

Posted by 모노 MonoMono

댓글을 달아 주세요

mysql 에서 DB생성 및 권한부여를 하고 마지막에

flush privileges; 넣었는는데

ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist

에러 발생시..

 

- mysql 접속해서 붙여넣기

CREATE TABLE mysql.servers (
 Server_name char(64) NOT NULL,
 Host char(64) NOT NULL,
 Db char(64) NOT NULL,
 Username char(64) NOT NULL,
 Password char(64) NOT NULL,
 Port int(4) DEFAULT NULL,
 Socket char(64) DEFAULT NULL,
 Wrapper char(64) NOT NULL,
 Owner char(64) NOT NULL,
 PRIMARY KEY (Server_name)
) ENGINE=MyISAM DEFAULT CHARSET=euckr COMMENT='MySQL Foreign Servers table';

 

- 실제화면

mysql> CREATE TABLE mysql.servers (
    ->  Server_name char(64) NOT NULL,
    ->  Host char(64) NOT NULL,
    ->  Db char(64) NOT NULL,
    ->  Username char(64) NOT NULL,
    ->  Password char(64) NOT NULL,
    ->  Port int(4) DEFAULT NULL,
    ->  Socket char(64) DEFAULT NULL,
    ->  Wrapper char(64) NOT NULL,
    ->  Owner char(64) NOT NULL,
    ->  PRIMARY KEY (Server_name)
    -> ) ENGINE=MyISAM DEFAULT CHARSET=euckr COMMENT='MySQL Foreign Servers table';
Query OK, 0 rows affected (0.00 sec)

Posted by 모노 MonoMono

댓글을 달아 주세요

 

 

# mysqldump -u root -p [DB명] > [DB명]

# mysqldump: Got error: 145: Table './user/DB명' is marked as crashed and should be repaired when using LOCK TABLES

에러발생

# mysqldump -u root -p DBname --lock-table=0 > backup.sql

이런식으로 다시 백업

- 도중 DB 손상되었다고 에러뜨면

 

# 디비접속

# use [디비명];

#repair table [손상된테이블];

 

하고 다시진행

Posted by 모노 MonoMono

댓글을 달아 주세요

갑자기

delete from mw_session where ss_datetime < '2012-05-29 13:33:02'

145 : Table './olre/mw_session' is marked as crashed and should be repaired

error file : /g4umw/bbs/login_check.php

DB 접속해서

 


use [해당DB명];

repair table mw_session;


하고나서 바로 로그인됨 ㅎㅎ

 

Posted by 모노 MonoMono

댓글을 달아 주세요


/var/log/mysqld.log

mysqld started
[Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
[Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
mysqld ended

해결방법

/usr/bin/mysql_install_db --user=mysql

mysql_install_db  ==> mysql 권한 테이블을 생성
위 명령어를 실행 후 mysql 데몬 실행을 다시 한다.



Posted by 모노 MonoMono

댓글을 달아 주세요

  1. ss 2013.09.13 12:09  댓글주소  수정/삭제  댓글쓰기

    감사합니다..ㅠㅠ


http://www.mysqlkorea.co.kr/sub.html?mcode=manual&scode=01_1&lang=k
Posted by 모노 MonoMono

댓글을 달아 주세요