久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      MySQL編譯安裝和Xtrabackup備份解析

      編譯安裝MySQL-5.5

      cmake的重要特性之一是其獨立于源碼(out-of-source)的編譯功能,即編譯工作可以在另一個指定的目錄中而非源碼目錄中進(jìn)行,這可以保證源碼目錄不受任何一次編譯的影響,因此在同一個源碼樹上可以進(jìn)行多次不同的編譯,如針對于不同平臺編譯。

      編譯安裝MySQL-5.5

      一、安裝cmake

      跨平臺編譯器

      # tar xf cmake-2.8.8.tar.gz

      # cd cmake-2.8.8

      # ./bootstrap

      # make

      # make install

      二、編譯安裝mysql-5.5.25a

      1、使用cmake編譯mysql-5.5

      cmake指定編譯選項的方式不同于make,其實現(xiàn)方式對比如下:

      ./configure cmake .

      ./configure –help cmake . -LH or ccmake .

      指定安裝文件的安裝路徑時常用的選項:

      -DCMAKE_INSTALL_PREFIX=/usr/local/mysql

      -DMYSQL_DATADIR=/data/mysql

      -DSYSCONFDIR=/etc

      默認(rèn)編譯的存儲引擎包括:csv、myisam、myisammrg和heap。若要安裝其它存儲引擎,可以使用類似如下編譯選項:

      -DWITH_INNOBASE_STORAGE_ENGINE=1

      -DWITH_ARCHIVE_STORAGE_ENGINE=1

      -DWITH_BLACKHOLE_STORAGE_ENGINE=1

      -DWITH_FEDERATED_STORAGE_ENGINE=1

      若要明確指定不編譯某存儲引擎,可以使用類似如下的選項:

      -DWITHOUT__STORAGE_ENGINE=1

      比如:

      -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1

      -DWITHOUT_FEDERATED_STORAGE_ENGINE=1

      -DWITHOUT_PARTITION_STORAGE_ENGINE=1

      如若要編譯進(jìn)其它功能,如SSL等,則可使用類似如下選項來實現(xiàn)編譯時使用某庫或不使用某庫:

      -DWITH_READLINE=1

      -DWITH_SSL=system

      -DWITH_ZLIB=system

      -DWITH_LIBWRAP=0

      其它常用的選項:

      -DMYSQL_TCP_PORT=3306

      -DMYSQL_UNIX_ADDR=/tmp/mysql.sock

      -DENABLED_LOCAL_INFILE=1

      -DEXTRA_CHARSETS=all

      -DDEFAULT_CHARSET=utf8

      -DDEFAULT_COLLATION=utf8_general_ci

      -DWITH_DEBUG=0

      -DENABLE_PROFILING=1

      如果想清理此前的編譯所生成的文件,則需要使用如下命令:

      make clean

      rm CMakeCache.txt

      2、編譯安裝

      # groupadd -r mysql

      # useradd -g mysql -r -d /data/mydata mysql

      # tar xf mysql-5.5.25a.tar.gz

      # cd mysql-5.5.25a

      # cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql

      -DMYSQL_DATADIR=/mydata/data

      -DSYSCONFDIR=/etc

      -DWITH_INNOBASE_STORAGE_ENGINE=1

      -DWITH_ARCHIVE_STORAGE_ENGINE=1

      -DWITH_BLACKHOLE_STORAGE_ENGINE=1

      -DWITH_READLINE=1

      -DWITH_SSL=system

      -DWITH_ZLIB=system

      -DWITH_LIBWRAP=0

      -DMYSQL_UNIX_ADDR=/tmp/mysql.sock

      -DDEFAULT_CHARSET=utf8

      -DDEFAULT_COLLATION=utf8_general_ci

      # make

      # make install

      tar zvxf mysql-5.6.16.tar.gz -C /usr/local

      cd /usr/local

      ln -sv mysql-5.6.16 mysql

      groupadd -r -g 306 mysql

      useradd -g 306 -r -u 306 mysql

      id mysql

      chown -R mysql:mysql /usr/local/mysql/*

      scripts/mysql_install_db –user=mysql –datadir=/mydata/data

      cp support-files/my-large.cnf /etc/my.cnf

      cp support-files/mysql.server /etc/init.d/mysqld

      chkconfig –add mysqld

      chkconfig –list mysqld

      vim /etc/profile.d/mysql.sh

      export PATH=$PATH:/usr/local/mysql/bin

      . /etc/profile.d/mysql.sh

      echo $PATH

      fdisk /dev/sdb

      n

      e

      +20G

      t

      5

      8e

      w

      yum install -y parted

      partprobe /dev/sdb

      pvcreate /dev/sda6

      vgcreate myvg /dev/sda6

      lvcreate -n mydata -L 1000M myvg

      mke2fs -j /dev/myvg/mydata

      mkdir /mydata

      vim /etc/fstab

      /dev/myvg/mydata /mydata ext3 defaults 0 0

      mount -a

      mount

      mkdir /mydata/data

      chown -R mysql:mysql /mydata/data/

      ls /mydata/

      chmod o-rx /mydata/data/

      直接登錄

      vim .my.cnf

      [client]

      user = 'root'

      password = 'redhat'

      host = 'localhost'

      使用Xtrabackup進(jìn)行MySQL備份:

      一、安裝

      1、簡介

      Xtrabackup是由percona提供的mysql數(shù)據(jù)庫備份工具,據(jù)官方介紹,這也是世界上惟一一款開源的能夠?qū)nnodb和xtradb數(shù)據(jù)庫進(jìn)行熱備的工具。特點:

      (1)備份過程快速、可靠;

      (2)備份過程不會打斷正在執(zhí)行的事務(wù);

      (3)能夠基于壓縮等功能節(jié)約磁盤空間和流量;

      (4)自動實現(xiàn)備份檢驗;

      (5)還原速度快;

      2、安裝

      其最新版的軟件可從 http://www.percona.com/software/percona-xtrabackup/ 獲得。本文基于RHEL5.8的系統(tǒng),因此,直接下載相應(yīng)版本的rpm包安裝即可,這里不再演示其過程。

      二、備份的實現(xiàn)

      1、完全備份

      # innobackupex –user=DBUSER –password=DBUSERPASS /path/to/BACKUP-DIR/

      如果要使用一個最小權(quán)限的用戶進(jìn)行備份,則可基于如下命令創(chuàng)建此類用戶:

      mysql> CREATE USER ’bkpuser’@’localhost’ IDENTIFIED BY ’s3cret’;

      mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM ’bkpuser’;

      mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO ’bkpuser’@’localhost’;

      mysql> FLUSH PRIVILEGES;

      使用innobakupex備份時,其會調(diào)用xtrabackup備份所有的InnoDB表,復(fù)制所有關(guān)于表結(jié)構(gòu)定義的相關(guān)文件(.frm)、以及MyISAM、MERGE、CSV和ARCHIVE表的相關(guān)文件,同時還會備份觸發(fā)器和數(shù)據(jù)庫配置信息相關(guān)的文件。這些文件會被保存至一個以時間命令的目錄中。

      在備份的同時,innobackupex還會在備份目錄中創(chuàng)建如下文件:

      (1)xtrabackup_checkpoints —— 備份類型(如完全或增量)、備份狀態(tài)(如是否已經(jīng)為prepared狀態(tài))和LSN(日志序列號)范圍信息;

      每個InnoDB頁(通常為16k大小)都會包含一個日志序列號,即LSN。LSN是整個數(shù)據(jù)庫系統(tǒng)的系統(tǒng)版本號,每個頁面相關(guān)的LSN能夠表明此頁面最近是如何發(fā)生改變的。

      (2)xtrabackup_binlog_info —— mysql服務(wù)器當(dāng)前正在使用的二進(jìn)制日志文件及至備份這一刻為止二進(jìn)制日志事件的位置。

      (3)xtrabackup_binlog_pos_innodb —— 二進(jìn)制日志文件及用于InnoDB或XtraDB表的二進(jìn)制日志文件的當(dāng)前position。

      (4)xtrabackup_binary —— 備份中用到的xtrabackup的可執(zhí)行文件;

      (5)backup-my.cnf —— 備份命令用到的配置選項信息;

      在使用innobackupex進(jìn)行備份時,還可以使用–no-timestamp選項來阻止命令自動創(chuàng)建一個以時間命名的目錄;如此一來,innobackupex命令將會創(chuàng)建一個BACKUP-DIR目錄來存儲備份數(shù)據(jù)。

      2、準(zhǔn)備(prepare)一個完全備份

      一般情況下,在備份完成后,數(shù)據(jù)尚且不能用于恢復(fù)操作,因為備份的數(shù)據(jù)中可能會包含尚未提交的事務(wù)或已經(jīng)提交但尚未同步至數(shù)據(jù)文件中的事務(wù)。因此,此時數(shù)據(jù)文件仍處理不一致狀態(tài)。“準(zhǔn)備”的主要作用正是通過回滾未提交的事務(wù)及同步已經(jīng)提交的事務(wù)至數(shù)據(jù)文件也使得數(shù)據(jù)文件處于一致性狀態(tài)。

      innobakupex命令的–apply-log選項可用于實現(xiàn)上述功能。如下面的命令:

      # innobackupex –apply-log /path/to/BACKUP-DIR

      如果執(zhí)行正確,其最后輸出的幾行信息通常如下:

      xtrabackup: starting shutdown with innodb_fast_shutdown = 1

      120407 9:01:36 InnoDB: Starting shutdown…

      120407 9:01:40 InnoDB: Shutdown completed; log sequence number 92036620

      120407 09:01:40 innobackupex: completed OK!

      在實現(xiàn)“準(zhǔn)備”的過程中,innobackupex通常還可以使用–use-memory選項來指定其可以使用的內(nèi)存的大小,默認(rèn)通常為100M。如果有足夠的內(nèi)存可用,可以多劃分一些內(nèi)存給prepare的過程,以提高其完成速度。

      3、從一個完全備份中恢復(fù)數(shù)據(jù)

      innobackupex命令的–copy-back選項用于執(zhí)行恢復(fù)操作,其通過復(fù)制所有數(shù)據(jù)相關(guān)的文件至mysql服務(wù)器DATADIR目錄中來執(zhí)行恢復(fù)過程。innobackupex通過backup-my.cnf來獲取DATADIR目錄的相關(guān)信息。

      # innobackupex –copy-back /path/to/BACKUP-DIR

      如果執(zhí)行正確,其輸出信息的最后幾行通常如下:

      innobackupex: Starting to copy InnoDB log files

      innobackupex: in '/backup/2012-04-07_08-17-03'

      innobackupex: back to original InnoDB log directory '/mydata/data'

      innobackupex: Finished copying back files.

      120407 09:36:10 innobackupex: completed OK!

      請確保如上信息的最行一行出現(xiàn)“innobackupex: completed OK!”。

      當(dāng)數(shù)據(jù)恢復(fù)至DATADIR目錄以后,還需要確保所有數(shù)據(jù)文件的屬主和屬組均為正確的用戶,如mysql,否則,在啟動mysqld之前還需要事先修改數(shù)據(jù)文件的屬主和屬組。如:

      # chown -R mysql:mysql /mydata/data/

      4、使用innobackupex進(jìn)行增量備份

      每個InnoDB的頁面都會包含一個LSN信息,每當(dāng)相關(guān)的數(shù)據(jù)發(fā)生改變,相關(guān)的頁面的LSN就會自動增長。這正是InnoDB表可以進(jìn)行增量備份的基礎(chǔ),即innobackupex通過備份上次完全備份之后發(fā)生改變的頁面來實現(xiàn)。

      要實現(xiàn)第一次增量備份,可以使用下面的命令進(jìn)行:

      # innobackupex –incremental /backup –incremental-basedir=BASEDIR

      其中,BASEDIR指的是完全備份所在的目錄,此命令執(zhí)行結(jié)束后,innobackupex命令會在/backup目錄中創(chuàng)建一個新的以時間命名的目錄以存放所有的增量備份數(shù)據(jù)。另外,在執(zhí)行過增量備份之后再一次進(jìn)行增量備份時,其–incremental-basedir應(yīng)該指向上一次的增量備份所在的目錄。

      需要注意的是,增量備份僅能應(yīng)用于InnoDB或XtraDB表,對于MyISAM表而言,執(zhí)行增量備份時其實進(jìn)行的是完全備份。

      “準(zhǔn)備”(prepare)增量備份與整理完全備份有著一些不同,尤其要注意的是:

      (1)需要在每個備份(包括完全和各個增量備份)上,將已經(jīng)提交的事務(wù)進(jìn)行“重放”。“重放”之后,所有的備份數(shù)據(jù)將合并到完全備份上。

      (2)基于所有的備份將未提交的事務(wù)進(jìn)行“回滾”。

      于是,操作就變成了:

      # innobackupex –apply-log –redo-only BASE-DIR

      接著執(zhí)行:

      # innobackupex –apply-log –redo-only BASE-DIR –incremental-dir=INCREMENTAL-DIR-1

      而后是第二個增量:

      # innobackupex –apply-log –redo-only BASE-DIR –incremental-dir=INCREMENTAL-DIR-2

      其中BASE-DIR指的是完全備份所在的目錄,而INCREMENTAL-DIR-1指的是第一次增量備份的目錄,INCREMENTAL-DIR-2指的是第二次增量備份的目錄,其它依次類推,即如果有多次增量備份,每一次都要執(zhí)行如上操作;

      5、Xtrabackup的“流”及“備份壓縮”功能

      Xtrabackup對備份的數(shù)據(jù)文件支持“流”功能,即可以將備份的數(shù)據(jù)通過STDOUT傳輸給tar程序進(jìn)行歸檔,而不是默認(rèn)的直接保存至某備份目錄中。要使用此功能,僅需要使用–stream選項即可。如:

      # innobackupex –stream=tar /backup | gzip > /backup/`date +%F_%H-%M-%S`.tar.gz

      甚至也可以使用類似如下命令將數(shù)據(jù)備份至其它服務(wù)器:

      # innobackupex –stream=tar /backup | ssh user@www.magedu.com "cat – > /backups/`date +%F_%H-%M-%S`.tar"

      此外,在執(zhí)行本地備份時,還可以使用–parallel選項對多個文件進(jìn)行并行復(fù)制。此選項用于指定在復(fù)制時啟動的線程數(shù)目。當(dāng)然,在實際進(jìn)行備份時要利用此功能的便利性,也需要啟用innodb_file_per_table選項或共享的表空間通過innodb_data_file_path選項存儲在多個ibdata文件中。對某一數(shù)據(jù)庫的多個文件的復(fù)制無法利用到此功能。其簡單使用方法如下:

      # innobackupex –parallel /path/to/backup

      同時,innobackupex備份的數(shù)據(jù)文件也可以存儲至遠(yuǎn)程主機(jī),這可以使用–remote-host選項來實現(xiàn):

      # innobackupex –remote-host=root@www.magedu.com /path/IN/REMOTE/HOST/to/backup

      6、導(dǎo)入或?qū)С鰡螐埍?/p>

      默認(rèn)情況下,InnoDB表不能通過直接復(fù)制表文件的方式在mysql服務(wù)器之間進(jìn)行移植,即便使用了innodb_file_per_table選項。而使用Xtrabackup工具可以實現(xiàn)此種功能,不過,此時需要“導(dǎo)出”表的mysql服務(wù)器啟用了innodb_file_per_table選項(嚴(yán)格來說,是要“導(dǎo)出”的表在其創(chuàng)建之前,mysql服務(wù)器就啟用了innodb_file_per_table選項),并且“導(dǎo)入”表的服務(wù)器同時啟用了innodb_file_per_table和innodb_expand_import選項。

      (1)“導(dǎo)出”表

      導(dǎo)出表是在備份的prepare階段進(jìn)行的,因此,一旦完全備份完成,就可以在prepare過程中通過–export選項將某表導(dǎo)出了:

      # innobackupex –apply-log –export /path/to/backup

      此命令會為每個innodb表的表空間創(chuàng)建一個以.exp結(jié)尾的文件,這些以.exp結(jié)尾的文件則可以用于導(dǎo)入至其它服務(wù)器。

      (2)“導(dǎo)入”表

      要在mysql服務(wù)器上導(dǎo)入來自于其它服務(wù)器的某innodb表,需要先在當(dāng)前服務(wù)器上創(chuàng)建一個跟原表表結(jié)構(gòu)一致的表,而后才能實現(xiàn)將表導(dǎo)入:

      mysql> CREATE TABLE mytable (…) ENGINE=InnoDB;

      然后將此表的表空間刪除:

      mysql> ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;

      接下來,將來自于“導(dǎo)出”表的服務(wù)器的mytable表的mytable.ibd和mytable.exp文件復(fù)制到當(dāng)前服務(wù)器的數(shù)據(jù)目錄,然后使用如下命令將其“導(dǎo)入”:

      mysql> ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;

      7、使用Xtrabackup對數(shù)據(jù)庫進(jìn)行部分備份

      Xtrabackup也可以實現(xiàn)部分備份,即只備份某個或某些指定的數(shù)據(jù)庫或某數(shù)據(jù)庫中的某個或某些表。但要使用此功能,必須啟用innodb_file_per_table選項,即每張表保存為一個獨立的文件。同時,其也不支持–stream選項,即不支持將數(shù)據(jù)通過管道傳輸給其它程序進(jìn)行處理。

      此外,還原部分備份跟還原全部數(shù)據(jù)的備份也有所不同,即你不能通過簡單地將prepared的部分備份使用–copy-back選項直接復(fù)制回數(shù)據(jù)目錄,而是要通過導(dǎo)入表的方向來實現(xiàn)還原。當(dāng)然,有些情況下,部分備份也可以直接通過–copy-back進(jìn)行還原,但這種方式還原而來的數(shù)據(jù)多數(shù)會產(chǎn)生數(shù)據(jù)不一致的問題,因此,無論如何不推薦使用這種方式。

      (1)創(chuàng)建部分備份

      創(chuàng)建部分備份的方式有三種:正則表達(dá)式(–include), 枚舉表文件(–tables-file)和列出要備份的數(shù)據(jù)庫(–databases)。

      (a)使用–include

      使用–include時,要求為其指定要備份的表的完整名稱,即形如databasename.tablename,如:

      # innobackupex –include='^mageedu[.]tb1' /path/to/backup

      (b)使用–tables-file

      此選項的參數(shù)需要是一個文件名,此文件中每行包含一個要備份的表的完整名稱;如:

      # echo -e 'mageedu.tb1nmageedu.tb2' > /tmp/tables.txt

      # innobackupex –tables-file=/tmp/tables.txt /path/to/backup

      (c)使用–databases

      此選項接受的參數(shù)為數(shù)據(jù)名,如果要指定多個數(shù)據(jù)庫,彼此間需要以空格隔開;同時,在指定某數(shù)據(jù)庫時,也可以只指定其中的某張表。此外,此選項也可以接受一個文件為參數(shù),文件中每一行為一個要備份的對象。如:

      # innobackupex –databases="mageedu testdb" /path/to/backup

      (2)整理(preparing)部分備份

      prepare部分備份的過程類似于導(dǎo)出表的過程,要使用–export選項進(jìn)行:

      # innobackupex –apply-log –export /pat/to/partial/backup

      此命令執(zhí)行過程中,innobackupex會調(diào)用xtrabackup命令從數(shù)據(jù)字典中移除缺失的表,因此,會顯示出許多關(guān)于“表不存在”類的警告信息。同時,也會顯示出為備份文件中存在的表創(chuàng)建.exp文件的相關(guān)信息。

      (3)還原部分備份

      還原部分備份的過程跟導(dǎo)入表的過程相同。當(dāng)然,也可以通過直接復(fù)制prepared狀態(tài)的備份直接至數(shù)據(jù)目錄中實現(xiàn)還原,不要此時要求數(shù)據(jù)目錄處于一致狀態(tài)。

      贊(0)
      分享到: 更多 (0)
      ?
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號