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

댓글을 달아 주세요

/var/spool/clientmqueue 디렉토리에 파일 쌓이는 현상

/var/spool/clientmqueue 에는 sendmail 에서 보낸 메일의 목적지가 불붕명 할 경우 메일이 임시저장
되었다가 목적지가 확인이 되면 mqueue로 보내서 메일을 발송한다고 함.

sendmail을 사용하지 않을 경우에는 logwatch에서 로그를 메일로 발송하기 때문에 발생함.
그중에서 logwatch의 메일발송 기능을 없애러면 

 

/etc/mail/submit.cf
----------------------------------------------
# queue directory
O QueueDirectory=/var/spool/clientmqueue     <- 요부분 주석처리
----------------------------------------------

그리고

/var/spool/clientmqueue 폴더 안에 들어가서 ll 하면 다운먹으니까
리스트 보지말고 바로

# ls | xargs rm -f
쳐주면 삭제됨! 시간이 좀 걸림!

 

기타 다른 방법으로는~

/etc/crontab 에서
----------------------------------------------
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
----------------------------------------------
MAILTO=root에 있는 root를 제거??
이건 안해봄..

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

댓글을 달아 주세요

mqsql 오류

mysqldump: Couldn't execute 'show fields from `App_Counter`': Can't create/write to file '/tmp/#sql_4476_0.MYI' (Errcode: 13) (1)

1. 해당 table에 lock이 걸린 경우가 존재한다. 이럴때는
[root@QA200 ~]# mysqldump --skip-lock-tables prism auth_user --skip-lock-table > table.sql
과 같은 방법으로 table lock을 피해갈 수 있다.

2. tmp 폴더에 접근권한의 문제이다. tmp 폴더에 777 권한을 주고 실행해보면 잘된다.

 

Posted by 모노 MonoMono

댓글을 달아 주세요

1. yum install vim-enhanced

2. vi ~/.bashrc (숨겨져있어서 안보임) 에 밑에다가 다음 내용을 추가 한다
  
   alias vi='vim'
 


3. vi ~/.vimrc 파일에 다음 내용추가

에디터 수행시 라인넘버 보여주기 : set number

주석 청록색 : hi Comment ctermfg=6 ctermbg=none cterm=none

Posted by 모노 MonoMono

댓글을 달아 주세요

http://www.superuser.co.kr/home/lecture/index.php?cateNo=1&secNo=32&theNo=&leccode=278

Posted by 모노 MonoMono

댓글을 달아 주세요

Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

에러뜨면

vi /etc/httpd/conf/httpd.conf 안에 아무대나

ServerName localhost

라고 넣어주기

 

사용하는데 지장 없음~

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

댓글을 달아 주세요


- 리눅스 종류 확인 : cat /etc/issue

- 리눅스 버전 확인 : uname -r

- 패키지 정보 확인 : rpm -q package_name

- 리눅스 커널 비트 확인 : getconf LONG_BIT

 
Posted by 모노 MonoMono

댓글을 달아 주세요