qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          MySQL數據庫鏡像 / 實時備份Zen Cart數據庫

           通過實現MySQL數據庫鏡像(復制),可以遠程實時備份MySQL數據庫。這樣如果主機出現故障,或者主機帳號被封,都能迅速切換zencart網店到新的服務器上。

            數據庫鏡像,需要兩臺服務器(或者用兩臺VPS主機)。一臺為主服務器,另一臺為從服務器,所有主服務器上數據庫的變化,都實時鏡像到從服務器上。

            1. 在主服務器上,創建用于數據庫鏡像的數據庫用戶,從服務器用這個帳號連接主服務器。

            該數據庫用戶可以是任何數據庫用戶,只要有REPLICATION SLAVE權限,由于該用戶名、密碼將明文保存在master.info文件中,因此建議創建、使用單獨的鏡像用戶。

            創建一個鏡像用戶 repl 的命令:

          mysql> GRANT REPLICATION SLAVE ON *.*
              -> TO 'repl'@'localhost' IDENTIFIED BY 'slavepass';

            2. 設置主服務器

            首先,主服務器必須打開二進制日志的功能。每臺參與鏡像的服務器都必須有一個唯一的標識符。該標識符為 1-231 之間的一個任意整數,只要各服務器的標識符不重復。

            要設置二進制日志和服務器標識符,必須停止MySQL服務器,然后在 my.cnf 或者 my.ini 配置文件中加入下面的定義:

            3. 設置從服務器

            從服務器只需要設置服務器標識符。停止MySQL服務器,然后在 my.cnf 或者 my.ini 配置文件中加入下面的定義:

          [mysqld]
          log-bin=mysql-bin
          server-id=1

            如果設置多臺從服務器,每臺服務器都需要有唯一的標識符。從服務器不需要打開二進制功能,除非你想把從服務器作為另一臺鏡像服務器的主服務器。

            4. 獲取主服務器的信息

            要設置鏡像,必須查找主服務器的二進制日志的當前記錄點。在從服務器啟動鏡像功能時需要該數據。

            操作步驟分A、B兩步:

            A. 鎖定主數據庫

          mysql> FLUSH TABLES WITH READ LOCK;



           鎖定數據庫后,不要退出客戶端(命令行),否者數據庫解鎖。

            B. 查找二進制日志的當前記錄點

          mysql > SHOW MASTER STATUS;

          +---------------+----------+--------------+------------------+
          | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
          +---------------+----------+--------------+------------------+
          | mysql-bin.003 | 73 | test | manual,mysql |
          +---------------+----------+--------------+------------------+

            上面File欄下顯示日志文件名,Position欄下顯示當前記錄點,記下這兩個數據。

            5. 使用mysqldump導出zencart網店的數據庫初始數據

            首先要將主服務器上的現有數據傳到從服務器上。在第4步的客戶端仍然鎖定數據庫的情況下,新開一個session連接到主服務器,然后執行:

          shell> mysqldump database_name1 --lock-all-tables > dbdump_database_name1.db

            其中,database_name1是需要鏡像的zencart網店的數據庫名。如果有多個zencart網店的數據庫需要鏡像,重復mysqldump導出。

            然后將導出的 dbdump_database_name1.db 傳送到從服務器上。

            現在,可以在第4步的客戶端,解鎖數據庫:

          mysql> UNLOCK TABLES;

            6. 啟動從服務器的實時數據庫鏡像

            在從服務器上恢復第5步導出的主服務器的zencart網店的初始數據

            A. 起動從服務器數據庫,帶參數 --skip-slave-start:

          shell> /etc /init.d/mysqld stop
          shell> /etc /init.d/mysqld start --skip-slave-start

            B. 導入初始數據:

          shell> mysql < dbdump_database_name1.db

            C. 設置從服務器的參數:

          mysql> CHANGE MASTER TO
          ->     MASTER_HOST='master_host_name',
          ->     MASTER_USER='replication_user_name',
          ->     MASTER_PASSWORD='replication_password',
          ->     MASTER_LOG_FILE='recorded_log_file_name',
          ->     MASTER_LOG_POS=recorded_log_position;

            D. 開啟鏡像功能:

          mysql> START SLAVE;

            注意:如果主服務器有防火墻,需要開通MySQL的端口3306,該端口只要對從服務器的IP開放就可以了。

          posted on 2013-09-23 10:40 順其自然EVO 閱讀(283) 評論(0)  編輯  收藏 所屬分類: 數據庫

          <2013年9月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 博乐市| 印江| 镇宁| 新郑市| 丹江口市| 成武县| 苏尼特左旗| 沛县| 岫岩| 涿州市| 古蔺县| 安塞县| 本溪| 安平县| 乌审旗| 高密市| 郑州市| 如东县| 怀集县| 平塘县| 皋兰县| 治多县| 平利县| 虞城县| 黎川县| 齐齐哈尔市| 东至县| 东乌珠穆沁旗| 张家港市| 德化县| 油尖旺区| 班戈县| 顺昌县| 昂仁县| 扎兰屯市| 图片| 驻马店市| 华蓥市| 满城县| 崇礼县| 都昌县|