서버를 관리하면서 백업 및 복구할 때 필요한 명령어이다.

가끔씩 써서 잊어먹는데, 한 번씩 상기시키면 유용하다.


백업

mysqldump -u root -p homepage > homepage_000000.sql

설명:

mysqldump 백업 명령어
-u root 유저
-p 패스워드를 사용한다.
homepage 데이터베이스 이름
> 파일 출력
homepage_000000.sql 저장할 파일 이름


복구

mysql -u root -p homepage < homepage_000000.sql

백업 명령어 반대.
Posted by dcmru
,
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
#include <errno.h>
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;

void exiterr(int exitcode) /*에러코드를 출력하는 함수*/
{
fprintf(stderr, "%s\n", mysql_error(&mysql));
exit(exitcode);
}
int main()
{
uint i = 0;
uint temp1;
char temp2;
char query[50];
int temp3 = 1;

while(temp3)
{
printf("Input social security number : ");
scanf("%d", &temp1);
sprintf(query,"select * from testtable where ssn = %d",temp1); /*query에 sql문을 복사 */

if(!mysql_real_connect(&mysql, "localhost", "USERID", "PASSWORD", NULL, 3306, (char *)NULL, 0)) /*mysql에 접속*/
exiterr(1);
if(mysql_select_db(&mysql,"testdb")) /*데이터베이스 선택*/
exiterr(2);
if(mysql_query(&mysql, query)) /*쿼리문 실행*/
exiterr(3);
if(!(res = mysql_store_result(&mysql)) /*결과를 저장*/)
exiterr(4);

printf("SSN FNAME MINIT LNAME ADDRESS\t\t\t\t\t\t\tSALARY\n");

while((row = mysql_fetch_row(res))) /*결과 출력*/
{
for(i=0; i < mysql_num_fields(res); i++)
printf("%s ", row[i]);
}

printf("\n");
if(!mysql_eof(res))
exiterr(5);
mysql_free_result(res); /*해제*/
mysql_close(&mysql); /*접속을 닫는다*/

printf("More social security numbers (Y or N)? ");
scanf("%s", &temp2);
if(temp2 == 'n' || temp2 == 'N')
temp3 = 0;
else
continue;
}
}


한 이틀 잡고 짠 소스이다. 교수님께서 데이터베이스론 수업 중 나온 파스칼로 짜여진 프로그램을 C언어로 바꿔보라고 하였다. 파스칼로 짜여진 소스는 무척이나 간단해 보였는데 C언어로 바꾸니 분량이 장난아니게 늘어났다. embedded sql의 예로, 생각해보곤데, 칩 같은 곳에 소스를 넣어 실행하게 할 수 있을듯하다. 여러가지 데이터베이스 연동 소스들을 짜서 데이터베이스를 모르는 사람도 쉽게 접근하게 할 수 있는 방법인듯하다. 역시 짤 때는 모르니 어떻게 할지 막막한데, 짜고나면 아무것도 아닌 것같다. 처음에는 오라클의 proc를 써볼려고 했는데, 오라클 설치를 해야하고 proc문법을 배워야해서 방향을 바꿔 내가 관리하고 있는 연구실 서버에 mysql이 설치되어 있어 이 것으로 해본 것이다. 컴파일은 gcc 3.3.3버전으로 하였으며 mysql은 4.0.20버전이다. 소스 중간에 USERID는 mysql 계정이며, PASSWORD는 비밀번호이다. 컴파일 할 때 삽질을 조금 했는데, -lz 옵션을 안주어 컴파일이 안되 4시간동안 인터넷을 찾아 해매었다. 컴파일 명령은
gcc -o test test.c -I/usr/local/mysql/include/mysql -L/usr/local/mysql/lib/mysql -lmysqlclient -lz 이다.
실행화면은 다음과 같다.

mysql> select * from testtable;
+------+-------+-------+-------+-----------------------------------------------------------+--------+
| ssn | fname | minit | lname | address | salary |
+------+-------+-------+-------+-----------------------------------------------------------+--------+
| 1111 | 김 | 대 | 청 | 대전 동구 용운동 대전대학교 데이터베이스연구실 4211-3호실 | 2000 |
| 1112 | 김 | 현 | 창 | 대전 동구 용운동 대전대학교 데이터베이스연구실 4211-3호실 | 2200 |
| 1113 | 김 | 남 | 기 | 대전 동구 용운동 대전대학교 데이터베이스연구실 4211-3호실 | 1800 |
+------+-------+-------+-------+-----------------------------------------------------------+--------+
3 rows in set (0.00 sec)
Posted by dcmru
,