찾다
데이터 베이스MySQL 튜토리얼MySQL备份与恢复之真实环境使用冷备_MySQL

bitsCN.com

MySQL备份与恢复之真实环境使用冷备

 

一 真实环境使用冷备

 

       在(MySQL备份与恢复之冷备)http://www.bitsCN.com/database/201311/254790.html

中,我们提到了冷备。但是有个问题,我们存储的数据文件是保存在当前本地磁盘的,如果这个磁盘挂掉,那我们存储的数据不就丢失了,这样备份数据不就功亏一篑,劳而无功。所以真实环境中我们多准备几块磁盘,然后再在这些磁盘上搭建LVM,把MySQL的数据目录挂载到LVM上,这样数据就不是存储在当前磁盘上,就可以保证数据的安全性。

 

二 示意图

 

 

MySQL备份与恢复之真实环境使用冷备_MySQL

 

 

三 真实环境使用冷备模拟

 

第一步,需要提前规划好磁盘,这里做模拟,添加两磁盘

 

第二步,对磁盘进行分区

[root@serv01 ~]# fdisk /dev/sdb

[root@serv01 ~]# fdisk /dev/sdc

 

[root@serv01 ~]# ll /dev/sd[bc]1

brw-rw----. 1 root disk 8, 17 Sep 10 18:06 /dev/sdb1

brw-rw----. 1 root disk 8, 33 Sep 10 18:09 /dev/sdc1

 

第三步,yum安装lvm2

[root@serv01 ~]# yum install lvm2 -y

 

第四步,创建物理卷

[root@serv01 ~]# pvcreate /dev/sdb1 /dev/sdc1 

  Physical volume "/dev/sdb1" successfully created

  Physical volume "/dev/sdc1" successfully created

 

 

第五步,创建卷组

[root@serv01 ~]# vgcreate data /dev/sdb1 /dev/sdc1 

  Volume group "data" successfully created

 

第六步,创建逻辑卷

[root@serv01 ~]# lvcreate -L 2G -n mydata data

  Logical volume "mydata" created

 

第七步,格式化磁盘

[root@serv01 ~]# mkfs.ext4 /dev/data/mydata 

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

131072 inodes, 524288 blocks

26214 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=536870912

16 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks: 

  32768, 98304, 163840, 229376, 294912

 

Writing inode tables: done                            

Creating journal (16384 blocks): done

Writing superblocks and filesystem accounting information: done

 

This filesystem will be automatically checked every 28 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

 

第八步,冷备

[root@serv01 ~]# ls /usr/local/mysql/data/

crm      ib_logfile0  mysql-bin.000001  mysql-bin.000005  mysql-bin.000009  mysql-bin.000013  mysql-bin.index      test

game     ib_logfile1  mysql-bin.000002  mysql-bin.000006  mysql-bin.000010  mysql-bin.000014  performance_schema

hello    larrydb      mysql-bin.000003  mysql-bin.000007  mysql-bin.000011  mysql-bin.000015  serv01.host.com.err

ibdata1  mysql        mysql-bin.000004  mysql-bin.000008  mysql-bin.000012  mysql-bin.000016  serv01.host.com.pid

 

[root@serv01 opt]# tar -cvPzf mysql01.tar.gz /usr/local/mysql/data/

 

第九步,删除数据库文件

[root@serv01 ~]# rm -rf /usr/local/mysql/data/*

 

第十步,挂载

[root@serv01 ~]# mount /dev/data/mydata /usr/local/mysql/data/

[root@serv01 ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2             9.7G  2.4G  6.8G  27% /

tmpfs                 188M     0  188M   0% /dev/shm

/dev/sda1             194M   25M  160M  14% /boot

/dev/sda5             4.0G  160M  3.7G   5% /opt

/dev/sr0              3.4G  3.4G     0 100% /iso

/dev/mapper/data-mydata

                      2.0G   67M  1.9G   4% /usr/local/mysql/data

 

第十一步,将挂载信息写入配置文件

[root@serv01 opt]# echo "/dev/mapper/data-mydata /usr/local/mysql/data ext4 defaults 1 2" >> /etc/fstab 

[root@serv01 opt]# tail -n1 /etc/fstab 

/dev/mapper/data-mydata /usr/local/mysql/data ext4 defaults 1 2

 

第十二步,停掉数据库

[root@serv01 ~]# /etc/init.d/mysqld stop

 ERROR! MySQL server PID file could not be found!

[root@serv01 ~]# ps -ef | grep mysqld

root      1055     1  0 18:05 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/serv01.host.com.pid

mysql     1332  1055  0 18:05 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/serv01.host.com.err --pid-file=/usr/local/mysql/data/serv01.host.com.pid --socket=/tmp/mysql.sock --port=3306

root      1885  1490  0 18:18 pts/0    00:00:00 grep mysqld

 

[root@serv01 ~]# pkill -9 mysql

[root@serv01 ~]# ps -ef | grep mysqld

root      1888  1490  0 18:18 pts/0    00:00:00 grep mysqld

[root@serv01 ~]# chown mysql.mysql /usr/local/mysql/data/ -R

 

[root@serv01 opt]# ll /usr/local/mysql/data/

total 0

[root@serv01 opt]# ll /usr/local/mysql/data/ -d

drwxr-xr-x. 2 mysql mysql 4096 Sep 10 18:17 /usr/local/mysql/data/

 

第十三步,恢复数据

[root@serv01 opt]# tar -xPvf mysql01.tar.gz 

 

第十四步,启动数据库,登录MySQL,然后查看数据是否丢失

[root@serv01 opt]# /etc/init.d/mysqld start

Starting MySQL SUCCESS! 

 

[root@serv01 ~]# mysql

Welcome to the MySQL monitor.  Commands end with ; or /g.

Your MySQL connection id is 1

Server version: 5.5.29-log Source distribution

 

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or '/h' for help. Type '/c' to clear the current input statement.

 

mysql> use larrydb;

Database changed

mysql> show tables;

+-------------------+

| Tables_in_larrydb |

+-------------------+

| class             |

| stu               |

+-------------------+

2 rows in set (0.00 sec)

 

mysql> select * from class;

+------+--------+

| cid  | cname  |

+------+--------+

|    1 | linux  |

|    2 | oracle |

+------+--------+

2 rows in set (0.01 sec)

 

mysql> select * from stu;

+------+---------+------+

| sid  | sname   | cid  |

+------+---------+------+

|    1 | larry01 |    1 |

|    2 | larry02 |    2 |

+------+---------+------+

2 rows in set (0.00 sec)

 

第十五步,使用LVS的快照功能创建快照,快照不需要格式化。

[root@serv01 opt]# lvcreate -L 100M -s -n smydata /dev/data/mydata 

  Logical volume "smydata" created

 

第十六步,挂载

[root@serv01 opt]# mount /dev/data/smydata /mnt

[root@serv01 opt]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2             9.7G  2.4G  6.8G  27% /

tmpfs                 188M     0  188M   0% /dev/shm

/dev/sda1             194M   25M  160M  14% /boot

/dev/sda5             4.0G  161M  3.7G   5% /opt

/dev/sr0              3.4G  3.4G     0 100% /iso

/dev/mapper/data-mydata

                      2.0G   98M  1.8G   6% /usr/local/mysql/data

/dev/mapper/data-smydata

                      2.0G   98M  1.8G   6% /mnt

 

第十七步,模拟数据丢失和验证快照的数据不会受本身数据的影响

[root@serv01 opt]# cd /mnt

[root@serv01 mnt]# ls

crm          ib_logfile1       mysql-bin.000003  mysql-bin.000008  mysql-bin.000013  mysql-bin.index

game         larrydb           mysql-bin.000004  mysql-bin.000009  mysql-bin.000014  performance_schema

hello        mysql             mysql-bin.000005  mysql-bin.000010  mysql-bin.000015  serv01.host.com.err

ibdata1      mysql-bin.000001  mysql-bin.000006  mysql-bin.000011  mysql-bin.000016  serv01.host.com.pid

ib_logfile0  mysql-bin.000002  mysql-bin.000007  mysql-bin.000012  mysql-bin.000017  test

 

#进入数据目录,创建一个文件

[root@serv01 ~]# cd /usr/local/mysql/data/

[root@serv01 data]# touch aa01.txt

 

#进入快照挂载目录,发现没有这个文件

[root@serv01 mnt]# ls aa01.txt

ls: cannot access aa01.txt: No such file or directory

 

第十八步,备份数据

[root@serv01 mnt]# cd /databackup/

[root@serv01 databackup]# ll

total 976

-rw-r--r--. 1 root root 995761 Sep 10 17:47 mysql01.tar.gz

[root@serv01 databackup]# /etc/init.d/mysqld status

 SUCCESS! MySQL running (2198)

[root@serv01 databackup]# tar -cvzf mysql02.tar.gz /mnt

 

[root@serv01 mnt]# rm -rf /usr/local/mysql/data/*

[root@serv01 mnt]# /etc/init.d/mysqld stop

 ERROR! MySQL server PID file could not be found!

[root@serv01 mnt]# pkill -9 mysql

[root@serv01 mnt]# ps -ef | grep mysqld | grep grep -v

 

[root@serv01 mnt]# cd /usr/local/mysql/data/

[root@serv01 data]# ll

total 0

 

第十九步,恢复数据,启动数据库,登录MySQL,然后查看数据是否丢失

[root@serv01 data]# tar -xvf /databackup/mysql02.tar.gz

 

[root@serv01 data]# ls

mnt

[root@serv01 data]# cd mnt/

[root@serv01 mnt]# mv ./* ../

 

[root@serv01 mnt]# cd ..

[root@serv01 data]# ls

crm      ib_logfile0  mysql             mysql-bin.000004  mysql-bin.000008  mysql-bin.000012  mysql-bin.000016    serv01.host.com.err

game     ib_logfile1  mysql-bin.000001  mysql-bin.000005  mysql-bin.000009  mysql-bin.000013  mysql-bin.000017    serv01.host.com.pid

hello    larrydb      mysql-bin.000002  mysql-bin.000006  mysql-bin.000010  mysql-bin.000014  mysql-bin.index     test

ibdata1  mnt          mysql-bin.000003  mysql-bin.000007  mysql-bin.000011  mysql-bin.000015  performance_schema

 

[root@serv01 data]# /etc/init.d/mysqld start

Starting MySQL SUCCESS! 

[root@serv01 data]# mysql

Welcome to the MySQL monitor.  Commands end with ; or /g.

Your MySQL connection id is 1

Server version: 5.5.29-log Source distribution

 

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or '/h' for help. Type '/c' to clear the current input statement.

 

mysql> use larrydb;

Database changed

mysql> select * from class;

+------+--------+

| cid  | cname  |

+------+--------+

|    1 | linux  |

|    2 | oracle |

+------+--------+

2 rows in set (0.00 sec)

 

mysql> select * from stu;

+------+---------+------+

| sid  | sname   | cid  |

+------+---------+------+

|    1 | larry01 |    1 |

|    2 | larry02 |    2 |

+------+---------+------+

2 rows in set (0.00 sec)

bitsCN.com
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
MySQL에서 느린 쿼리를 식별하고 최적화하는 방법은 무엇입니까? (느린 쿼리 로그, Performance_schema)MySQL에서 느린 쿼리를 식별하고 최적화하는 방법은 무엇입니까? (느린 쿼리 로그, Performance_schema)Apr 10, 2025 am 09:36 AM

MySQL 느린 쿼리를 최적화하려면 SlowQueryLog 및 Performance_Schema를 사용해야합니다. 1. SlowQueryLog 및 Set Stresholds를 사용하여 느린 쿼리를 기록합니다. 2. Performance_schema를 사용하여 쿼리 실행 세부 정보를 분석하고 성능 병목 현상을 찾고 최적화하십시오.

MySQL 및 SQL : 개발자를위한 필수 기술MySQL 및 SQL : 개발자를위한 필수 기술Apr 10, 2025 am 09:30 AM

MySQL 및 SQL은 개발자에게 필수적인 기술입니다. 1.MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템이며 SQL은 데이터베이스를 관리하고 작동하는 데 사용되는 표준 언어입니다. 2.MYSQL은 효율적인 데이터 저장 및 검색 기능을 통해 여러 스토리지 엔진을 지원하며 SQL은 간단한 문을 통해 복잡한 데이터 작업을 완료합니다. 3. 사용의 예에는 기본 쿼리 및 조건 별 필터링 및 정렬과 같은 고급 쿼리가 포함됩니다. 4. 일반적인 오류에는 구문 오류 및 성능 문제가 포함되며 SQL 문을 확인하고 설명 명령을 사용하여 최적화 할 수 있습니다. 5. 성능 최적화 기술에는 인덱스 사용, 전체 테이블 스캔 피하기, 조인 작업 최적화 및 코드 가독성 향상이 포함됩니다.

MySQL 비동기 마스터 슬레이브 복제 프로세스를 설명하십시오.MySQL 비동기 마스터 슬레이브 복제 프로세스를 설명하십시오.Apr 10, 2025 am 09:30 AM

MySQL 비동기 마스터 슬레이브 복제는 Binlog를 통한 데이터 동기화를 가능하게하여 읽기 성능 및 고 가용성을 향상시킵니다. 1) 마스터 서버 레코드는 Binlog로 변경됩니다. 2) 슬레이브 서버는 I/O 스레드를 통해 Binlog를 읽습니다. 3) 서버 SQL 스레드는 데이터를 동기화하기 위해 Binlog를 적용합니다.

MySQL : 쉽게 학습하기위한 간단한 개념MySQL : 쉽게 학습하기위한 간단한 개념Apr 10, 2025 am 09:29 AM

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) 데이터베이스 및 테이블 작성 : CreateAbase 및 CreateTable 명령을 사용하십시오. 2) 기본 작업 : 삽입, 업데이트, 삭제 및 선택. 3) 고급 운영 : 가입, 하위 쿼리 및 거래 처리. 4) 디버깅 기술 : 확인, 데이터 유형 및 권한을 확인하십시오. 5) 최적화 제안 : 인덱스 사용, 선택을 피하고 거래를 사용하십시오.

MySQL : 데이터베이스에 대한 사용자 친화적 인 소개MySQL : 데이터베이스에 대한 사용자 친화적 인 소개Apr 10, 2025 am 09:27 AM

MySQL의 설치 및 기본 작업에는 다음이 포함됩니다. 1. MySQL 다운로드 및 설치, 루트 사용자 비밀번호를 설정하십시오. 2. SQL 명령을 사용하여 CreateAbase 및 CreateTable과 같은 데이터베이스 및 테이블을 만듭니다. 3. CRUD 작업을 실행하고 삽입, 선택, 업데이트, 명령을 삭제합니다. 4. 성능을 최적화하고 복잡한 논리를 구현하기 위해 인덱스 및 저장 절차를 생성합니다. 이 단계를 사용하면 MySQL 데이터베이스를 처음부터 구축하고 관리 할 수 ​​있습니다.

InnoDB 버퍼 풀은 어떻게 작동하며 성능에 중요한 이유는 무엇입니까?InnoDB 버퍼 풀은 어떻게 작동하며 성능에 중요한 이유는 무엇입니까?Apr 09, 2025 am 12:12 AM

innodbbufferpool은 데이터와 색인 페이지를 메모리에로드하여 MySQL 데이터베이스의 성능을 향상시킵니다. 1) 데이터 페이지가 버퍼 풀에로드되어 디스크 I/O를 줄입니다. 2) 더러운 페이지는 정기적으로 디스크로 표시되고 새로 고침됩니다. 3) LRU 알고리즘 관리 데이터 페이지 제거. 4) 읽기 메커니즘은 가능한 데이터 페이지를 미리로드합니다.

MySQL : 초보자를위한 데이터 관리의 용이성MySQL : 초보자를위한 데이터 관리의 용이성Apr 09, 2025 am 12:07 AM

MySQL은 설치가 간단하고 강력하며 데이터를 쉽게 관리하기 쉽기 때문에 초보자에게 적합합니다. 1. 다양한 운영 체제에 적합한 간단한 설치 및 구성. 2. 데이터베이스 및 테이블 작성, 삽입, 쿼리, 업데이트 및 삭제와 같은 기본 작업을 지원합니다. 3. 조인 작업 및 하위 쿼리와 같은 고급 기능을 제공합니다. 4. 인덱싱, 쿼리 최적화 및 테이블 파티셔닝을 통해 성능을 향상시킬 수 있습니다. 5. 데이터 보안 및 일관성을 보장하기위한 지원 백업, 복구 및 보안 조치.

MySQL에서 인덱스를 사용하는 것보다 전체 테이블 스캔이 더 빠를 수 있습니까?MySQL에서 인덱스를 사용하는 것보다 전체 테이블 스캔이 더 빠를 수 있습니까?Apr 09, 2025 am 12:05 AM

전체 테이블 스캔은 MySQL에서 인덱스를 사용하는 것보다 빠를 수 있습니다. 특정 사례는 다음과 같습니다. 1) 데이터 볼륨은 작습니다. 2) 쿼리가 많은 양의 데이터를 반환 할 때; 3) 인덱스 열이 매우 선택적이지 않은 경우; 4) 복잡한 쿼리시. 쿼리 계획을 분석하고 인덱스 최적화, 과도한 인덱스를 피하고 정기적으로 테이블을 유지 관리하면 실제 응용 프로그램에서 최상의 선택을 할 수 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.